The magic of sharing: Why you should open source

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:

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.

2: Awareness

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.

3: Recruitment

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?

1: Confidence

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.

2: Responsibility

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.

4: Administration

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.

Summary

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.

Feedback?

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.

Clarification

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.

93 Likes

I prefer what I like to call “selective open-sourcing.” Instead of showing the world 100% of my project, I will share the parts I want to. If I do something I’ve never seen before and think it could benefit the community, I’ll share it (eventually). I think the majority of developers on Roblox do the same thing.

I personally believe that making a serious game 100% open-sourced is a huge mistake, especially on Roblox. As you mentioned, you do not want people seeing how they could cheat/break the game so easily. And the idea that open-sourcing will stop place copying is contradictory.

That being said, if anyone wants to open-source, that’s their decision. I won’t.

35 Likes

There are, of course, a lot of reasons why and why not to open source. I painted quite a rosy picture in the article about it, but it is ultimately down to you.

The main reason I included the section on pitfalls/caveats is to warn people that what they are doing is a big decision. Selective open sourcing is probably better than sharing the whole thing.

6 Likes

I have to honestly disagree. You definitely make some good points. And I do admit at times I get a little frustrated when I struggle recreating something that has been perfected on the platform before. But at the end of the day, I understand competition. ROBLOX already doesn’t offer that much on DevEx compared to others, so competition is high. And while I agree concepts and general help should be made open to people, and every now and then simple or advanced tools that will aid development should go open source, core functionality of games shouldn’t unless its being made specially for everyone.

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.

I completely disagree with this part. In and out of ROBLOX, stealing assets from games is an issue. But this is no reason to just give up and give away everything you worked for. That’s like saying if you have an problem, stop trying to fix it, just give up and reduce your headaches.

Basically, if I made something and some developer truly wanted to know how I did it and sent me a kind message asking for help, I’d probably give them a decent explanation. But if how they want to approach their problems is just stealing, then why I should I help them.

7 Likes

Uncopylocking your place isn’t the same as having something open-source. Open-source projects usually follow under a license that the collaborators of the project agree on, whereas Roblox doesn’t offer that. You uncopylock your place, it’s free for anyone to do whatever they want with it however they like. Normally, you’d at least be able to affirm certain restrictions such as giving credit, and also making the other version be open-source as well.

Open-source works best with proper resources and tools to help collaboration, which aside from Team Create, Roblox does not provide.

I agree with your sentiment, but until Roblox can provide better tools, resources, and control over the license of which uncopyrighted places are used, this would not go over well. I think we’d just end up with a lot more of “POPULAR GAME: FREE ADMIN/ITEMS” and that could end up being significant enough to hurt these creators more than actually help the developer community as a whole.

17 Likes

This is quite an intriguing conversation to be had. Admittedly I would like to entertain the idea for some people to try this as a sort of test-hamster. But realistically I cannot imagine myself doing this for my games. I feel like I am on the majority side of the topic with this opinion.

But to reiterate, I do believe this is a good and healthy conversation to be had. I haven’t really thought of this before and I am very curious to see what other developers have to say.

Thank you for initiating this and I hope it gets circulated well. :grin:

2 Likes

I agree with you here. Whilst the OP’s post provides some excellent points, it’s simply not the case when it comes down to Roblox.

Instead, the project could be uploaded to GitHub using a structure such as Rojo. A license could be applied there which would enable an open-source environment where others could collaborate.

The obvious unfortunate downfall to this however is Roblox’s player base is quite young. Not everyone understands what a license means and what it could result in if broken. There is no viable way to enforce such a license on Roblox either. You could send a DMCA request, but by the time it is handled (in the case they will agree to handle it), severe damage would already have been done, ultimately leading to an environment of harmful competition due to the negligence of other users.

3 Likes

If you make a post like this, you really should also do the research to list off popular Roblox projects that are already open source. Roact, Rojo, roblox-ts, and many other game frameworks or tools (scroll through #development-resources for some?) that you could link as examples here and probably should, rather than referring to external open source usage.

It only really makes sense to open-source parts of your code that are highly reusable. In particular for game development, a lot of game content is usually game-specific code / hacked together and therefore not super useful for other developers to have access to. You will probably want to mention something like that in your post too; successful open source projects are ones that can be easily and flexibly reused for different purposes.

11 Likes

I want to add on. Open-sourcing a tool like Roact or Rojo, as you said, makes a lot of sense. However, I don’t see open-sourcing games as the future at all. It’s just way too risky. Not only will exploiters use it to find vulnerabilities that would never have been found if it was closed source, but people will also create rip-off versions of your game where people get free money, etc (this can already be seen with the game Lumber Tycoon). No mainstream games, even off Roblox, go fully open-source. It just isn’t sustainable, and I don’t see that ever-changing.

6 Likes

Thank you for the suggestion, I’ve added a small paragraph showing some of the existing open source projects in Roblox.

@ChasingSpace

Yes, I find that a major problem. In accordance with the terms you agree to when uncopylocking, you essentially devote your work to the public domain, which is really not a good idea. You basically license under the Unlicense, which is a huge sacrifice for most.

I think it would be very useful to have a serious discussion about what it means when you uncopylock a place. It has remained the same for a long time, and isn’t enough any more.

Sadly, because of the limits on Roblox’s built-in tools for open sourcing, a better option is a git repo provider, such as GitHub. That way you don’t share all your game’s assets either.

2 Likes

open sourcing scripts, makes exploiters able to explore the code and find vournabilities, and then they’ll exploit that vournability to their own advantage, and so on.

I dont agree with this topic, you’ve worked hard on a game, then just let people steal and use your code? no thanks.

2 Likes

Sorry, I didn’t quite clarify what I meant when I was talking about how I liked selective open sourcing. I meant minor scripts that could just really enhance a game. For example: open sourcing a script that makes lights turn on when ClockTime hits various points and changes the intensity (yes this is a pretty simple script, but nonetheless one that could really help an aspiring developer get a better understanding of scripting in general and enhance their game). I don’t mean open source a game’s core scripts unique only to that game. More along the lines of open-sourcing certain scripts that can be very generally re-used and applied to a developer’s project.

1 Like

I am also partially a believer in open-source code and content. I have for example created an open-source Node.JS package/module called “bloxy”.
Originally I wanted it only for my own purposes, but I figured out that not just me would benefit from this module, and that’s why I open sourced it:

Now other people can use my module, check out syntax errors, learn and contribute. This is a win-win situation for everyone! Other people can use a module that’s frequently updated, I can see what I did “wrong” and improve, and some people learn to read other people’s code better, and find errors. (I’m sorry for all the “other people” parts :D)

Now, there are things I don’t want / believe should be open-sourced. For example, Roblox’s game engine. Here, I don’t see enough benefits that outweigh the disadvantages. For starters, the security issues; People can see the flaws in your product, and exploit them.

Secondly, we’re better off with one-of-a-kind business. Imagine 50 businesses with an engine exactly the same as Roblox’s. Would you like that? Sure, you could shut them down, but the players would be distributed everywhere. They wouldn’t know which is the original one with 100% certainty.

But, on the other side…

We can improve the code, point out future bugs, add more features, learn from each other etc. New features could ship out faster, be of better quality etc.

Now, these arguments may not sound good in your head, but I hope that I at least showed you that open sourced content isn’t always the solution, even though there are benefits if you do.

1 Like

Uncopylocking places or open-sourcing them entirely may not be the best idea for all developers. It may have benefits for some developers, but it could be drastic for others. Here’s more information on what I mean by this.

  1. Roblox developers use their creations to profit. Uncopylocking their game to the public would decrease their revenue as players will most likely stop buying items. Instead, players will create replicas of the game to give themselves free stuff. Also, Roblox could lose players who subscribe to memberships or buy Robux because developers are uncopylocking their games.
  2. As @Quinnicious has mentioned, not everyone on Roblox knows what a license is and this makes it harder for developers to agree on open-sourcing their code.

In a perfect world, everyone is happy because every flaw is identified by the community and they are not used for malicious purposes. You can’t expect everyone that reads your code to help you patch flaws and fix bugs. Some people may use your flaws to take advantage of open-sourcing and damage the game. This may be too risky for some developers.

This is probably the best way to go if you’re looking to convince developers to open source. I agree with you on this and recommend that you mention this in your original post.

4 Likes

Thank you all for the feedback. I’ve changed a few things around.

I’ve added an entire new section on @Intended_Pun’s method, for folks who are looking for a better method that full source disclosure.

From the points made by @CreditsMix, I’ve clarified a few things in caveat number 2 to make these points clear. What you said was exactly what I was trying to get across, so I’ve edited it slightly to make it more clear.

2 Likes

unfortunately for many. you who opened the open source have to know in one way or another they will use your project in my opinion when you opened your code you already released your code, so if you were to find a person with your project you could not complain about that you left released and many people may already be using it is not a crime why you released your project. that’s why I don’t go into that I just prefer to study.

okay! thanks for the clarification!

I can understand smaller projects such as modules, or scripts meant to be given away and used in a customizable way, being open source. What I don’t agree with, is, well, everything else. You use Microsoft Calculator as an example. I don’t really see a point in this. Woah, calculator source code? Revolutionary! Is Microsoft Windows open source though? No. Is Mac OS X open source? Nope. Roblox studio? Nope! Maybe some people would like their code to be hidden, or maybe would like to sell access to their software without it being stolen, and reuploaded. Go look at Steam. I bet you 90 percent of the games on there are closed source. I am currently working on a game with a friend of mine. I would definitely not be comfortable with open sourcing it. Why? Because people WILL take it and reupload it, and call it their own work. I see no benefit in this.

1 Like

Hi, I am the friend that he mentioned. I’m comfortable with open-sourcing certain aspects of the game, such as modules and functions that we find really useful. There’s no point in keeping things locked up if they would significantly improve other people’s development process. I’m not comfortable with “uncopylocking,” for the entire place however, but that discussion has already been had multiple times on this thread.

@CodeNinja16
I would recommend changing the title of the thread now though, “The magic of uncopylocking,” kind of sends the wrong idea until I read on (to your replies further down the thread) and realise that you for the most part aren’t actually talking about uncopylocking entire places (at least, I don’t think you are). The title might immediately send people into a defensive mode about this topic.

My Personal Opinion

Some things are just meant to be closed off in order for people to make money. If entire projects were completely open-sourced then nobody would be able to make a living off of software/game development. I agree with the whole “selective” open-source thing, but I feel that a lot of people on Roblox are going a bit too wild about the idea of open-sourcing and are trying to apply it to absolutely everything, which makes it look bad.

3 Likes

I do believe that uncopylocking is very beneficial to the others, but you are lacking the information on why someone should go open source and what benefits he gets. I can safely say that going full open source by uncopylocking a game that you made can have undesired consequences. This simply isn’t the right thing for Roblox. However, when it comes to the topic of smaller projects, I do believe it is a good resource for the community. But revealing your entire game is something I am not a part of.