The magic of sharing
Why you should open source
I am a strong believer in the power of open source, and how it can enrich and empower a project to make it hundreds of times better.
The open source movement is a growing worldwide community of programmers, designers and interested software hackers. It’s time to bring this unique ecosystem of collaboration to Roblox development, and keep it there.
In this article, I will outline why you, as a Roblox game developer, should open source, what you have to gain and how it will better your project for good.
Basics: What is open source?
For anybody who doesn’t know already, open source is a concept in the programming world where you publicly give access to the original code for your project for free, for anybody to view. But, it doesn’t end there. Along with the code, you give the right for anybody to use, modify, remix or change your code. The way you do this is through the use of an OSI (open source initiative) approved licence, which handles the terms for you,
Obviously, I’m no Richard Stallman, so I am not nearly qualified to give a definition of open source. For more information, take a look at:
- The OSI homepage
- “Official” OSI definition
- The homepage for the Linux Kernel
- Wikipedia’s definition
- The GNU project’s explanation
There, you should learn a bit more about what it means to open source, and what it can do for you.
Basics: Who else is open sourcing?
As I stated earlier, people worldwide are open sourcing their projects, for all the world to view. There are millions of packages, pieces of software and libraries that anybody can look inside and use. Believe me, when you go open source, you’re not the only one.
Open source isn’t just for hobbyists and community projects any more, either. Even software giant Microsoft is going open source. Recently, they open sourced the windows calculator and command line. The repositories can be found here.
Apple has open sourced part of the OSX kernel, on an OSI approved license.
Roblox already has a large open source community, contributed to frequently. Huge projects such as roact , rodux and ROBLOX-ts are all completely open source, and used by developers everywhere.
Everybody is going open source, because it really is the future.
Basics: Is Roblox open source itself?
Sadly, not entirely. A large part of Roblox infrastructure is indeed open source, including the corescripts for the client and the server (available here).
However, one of the biggest things that makes Roblox money is the availability of the game engine. The engine is only available to users who build on their exclusive platform. Have you ever seen a desktop game from steam using the Roblox game engine? No, because it is proprietary. Nobody but users of the platform can use it, making it mandatory to be a user to use it. If that were ever to change, one of the largest selling points to using Roblox would be gone. Sadly, the engine is staying proprietary for the foreseeable future.
Benefits: What will this do for me?
Great, if you’ve read this far, I’ve probably got you onboard. Now, it’s time to talk about what’s in it for you. After all, that’s what you’re probably most interested in, right?
Open sourcing isn’t just a cool idea, it has real world benefits.
1: Community Vetting
When you make your code publicly available, and changeable, you force it to stand up to thorough community vetting. What I mean by that is that every community member is reading you code, understanding it and searching for errors. Imagine if you had millions of people reviewing your code. That sneaky logic or syntax error would eventually get found and fixed.
By this process, we work together and create better, more managed and tougher code.
By open sourcing, you essentially advertise your project to a huge community of developers. The awareness open source projects can get is huge. All those developers coming across your code and finding particularly innovative pieces of code will surely raise awareness. Sit back and watch your project grow, slowly but surely.
Of course, there is no guarantee of this. But, if you’re confident in your project, chances are the community will be too.
If somebody seems especially passionate about your project and wants to help develop it, why not let them? After all, anybody can, and they’re making your project better. You collaborate with huge community of people, all eager to improve your project.
4: Personal Achievement
Let’s imagine you have written a particularly innovative piece of code, allowing for something never seen before to be done. However, your project is closed source. You will have to keep this innovative idea to yourself forever. That does not come with a sense of great personal achievement.
However, now let’s imagine you open sourced this piece of code. Now, everybody can see this innovative piece of code you wrote. How do you feel now the entire world can see your achievement?
Benefits: What will this do for my community?
Ok, so now you know what this will do for you personally, what will this do for your community? How will this benefit the players and users?
If a project is open source, a community member can be confident that it is high quality and has no “bad code”, for say. A community member can be confident that an update, for example, will have been thoroughly checked by numerous people.
2: Larger Awareness
If you make your development process and results public, there will be a community that is aware of what you plan to do. Let’s use an example.
Let’s imagine that your game suffers from data loss constantly. So, you plan to use a cache module in your next update. How will people know you did this, or that you plan to do this, in the player base. If you don’t open source, you rely on patch notes and feeds. If you’re open source, people can see it for themselves, bringing a greater sense of “care” to the community. The community feels cared about, you work to make it better. Everybody is happy.
3: Faster and better updates
With all the manpower in the open source community, there are huge numbers of people, all who care about the project. They can all work on what they care about, adding something unique to the “mix” of your project. Therefore, updates become more community driven, higher quality and get pushed out earlier.
4: Discourage place stealing
The main reason people become place stealers is because they want something your project contains. Imagine how much trouble, headaches and problems you can avoid by just allowing people to see how you did it.
Discourage place stealing by making it redundant.
Benefits: What will this do for the world as a whole
While sounding optimistic and silly at first, your project really will benefit the world as a whole in a number of ways.
1: Help another person
Let’s use another example to illustrate this point.
Imagine you have written a piece of code to levitate a player. It is very well written and achieves the problem perfectly. Now imagine another developer comes along and needs a module that achieves this. They come across your open source project. Because of the license, they are free to reuse it (if credit is given). Therefore, the one solution you created has helped another developer somewhere. Your project has made the world a better place.
2: Get your code out there
At the moment, your code is probably purely your own. But, if you open source you get your code out there. People will realise you write good code and use it. You could spark a revolution in the way the community writes code. If you don’t like the way something is done, share the way you can do it better, and everybody will do it better.
Do you think Linus Torvalds meant to create a project as huge as he did with Linux? No, he didn’t. At numerous conferences he admitted he just wanted to show people what he made.
Had he never got his code out there, we would be bounds behind where we are today. You never know what could happen. Get your code out there and see.
3: Get Roblox out there
At the moment, Roblox and open source do not go well together. Roblox is still in the Middle Ages in terms of open sourcing. We should change that.
At the moment, people generally consider uncopylocked places as low quality or old, or as projects that contain no significant value. We need to change that, so that copylocked games become a rare sight.
If everybody open sourced their games, imagine how many newer, better games could come along. This would make Roblox a better place as a whole, and that is certainly a good thing
4: Help fuel open source
Open source is great, and is growing steadily. However, it relies on one thing to keep alive. You.
Without a community there is no open source. If you want open source to stay alive, get contributing! By open sourcing, you help sustain a growing movement of people. Somebody has to make that one useful program. That could be you.
Get making and share it with the world.
Caveats: What are the problems
I will admit, I am pretty biased on the side of open sourcing your game. However, I think it is only fair that closed sourcing is given a “fair trial”. Here are a few of the reasons you may not want to open source.
1: Reuse of code
When you open source, you implicitly allow anybody coming across your code to reuse it. Not everybody is happy with that.
If you don’t want other people to reuse your creation, open source probably isn’t for you.
Not every community member is responsible.
The community on your game will contain cheaters, exploiters, place stealers and the like. Imagine if an exploiter comes across a severe vulnerability in your code. There is nothing forcing them to report it. They could simply sit back and use an exploit nobody has found before. That is a scary thought for many developers, and it becomes a whole lot easier if the code is publicly available.
3: On show
When you open source, your private collaborations with other developers become public. Not everybody is happy with that.
For example, all your code comments will be visible, whereas a lot of the time they would just be between you and your co-developers. That’s not good for some developers, especially when discussing security or private matters.
You will be constantly on show.
You will have to be constantly administering changes and suggestions from your community in your code, whereas other projects, which are closed source, only need to worry about the suggestions from other collaborators (this of course isn’t strictly true, with suggestion boards or discord servers for suggestion from the community, but you get the idea).
The compromise: I’m in, but not quite
Having read all of these points, you may be excited by the prospect of open source, and wish to contribute, but you may also be worried about the implications in your game. There is, surprisingly, a compromise you can adopt to get the best of both worlds.
Most games are built in parts. For instance, your gun framework is different to your code for camera movement. This gives you a great opportunity.
You can adopt a strategy that @Intended_Pun has coined “Selective Open-Sourcing”. This allows you to share a specific area of your project, without actually sharing the whole thing. That, in turn, allows you to control what areas of the project are shared with high granularity. You may wish to open source a particularly useful, innovative or reusable piece of code for the community, but keep some other, more private, pieces of code to yourself.
This helps you and the community in most of the ways above, yet still avoids a lot of the caveats. Why not try that out if you determined that full open-sourcing is not for you.
I’m In! How do I get started?
The first step would, obviously, be to start sharing code. Maybe create a GitHub account (it’s free) and share code on there.
If you want to go particularly hard-core, simply uncopylock the game, but that has a huge number of downfalls, including the lack of control on reuse, and full asset availability. For most developers, GitHub is preferable.
At some point in the foreseeable future, I will post another tutorial on how to get started with open sourcing your game, using GitHub and default Roblox tools. Stay tuned for that when it comes.
Thank you for reading this article all the way to the end, and I hope you enjoyed it and got motivated to go open source!
I apologise that this article is so long, but there is a lot to cover on this topic. Many of the lists of benefits/caveats will not be completely complete. So, if you have something to add, please tell me.
This is my first ever tutorial article, so feedback would be greatly appreciated. If you have feedback, please PM me or reply to the post.
I do read the replies, even if there are a lot of them, so please make your thoughts heard.
I’ve recently edited the title of the thread to make the topic of the post more clear. If it is still ambiguous, please read my replies below.
I would like to make it clear that this is about open source in general, not about uncopylocking an entire place. How you open source, what tools you should use and wether you share everything was never meant to be the topic of the post, and I apologise for my originally unclear title.
I tried to express in my replies that encouraging you to share all your game assets was never my intention. Uncopylocking and open sourcing, as pointed out many times before, are not the same thing. I address the latter, and the former is a topic for another day.