Jump to content

Crest's Guide to Open Source and Licensing


Recommended Posts

Hey all, I've been planning to release some edumacational guides to various importances of the wonderful world of software engineering.
The catch to this tutorial, is I'm mildly intoxicated whilst writing it.

In today's wonderful lesson, we cover Open Source Software.

What does it mean?
Open source software, as the name suggests, means that the source code is released with the application itself. This allows users of said application to come in and make adjustments to anything they'd like in the software, and in some cases, even redistribute the modified software. Let's hop into some details about using open source software.

- USING - Open Source Software


A lot of developers these days use various subversion repositories to release their code. A common source of open source repositories is, http://www.github.com/. I'm not going to go in too deep about how to use git, but I am going to go over two important keywords that you'll hear when referring to git and subversion repositories.

Cloning: Exactly what it sounds like, when you close a repository, you copy all of its contents into your own source repository. This means you're ripping the code from the master source into a local source. Kinda like copying and pasting a file.

Pulling: You can imagine a pull like a partial update, you're copying the changes in files from one source into your source.

The reason I'm giving you these terms in this tutorial is because this is how features are implemented into open source software, this is also how users will often get updates to their code, - in the best way possible attempting to not break your change -. A lot of times with Open Source software these days, you're not going to be downloading zip files of code... unless you're eclipse and love the masochistic mindset of still living in the stone ages of online technologies....



Oh my freaking glob this is so important and so commonly overlooked, seriously, read this....

Licensing is EXTREMELY important to both you and the releasing developer. Just because something is open source DOES NOT MEAN IT IS FREE GAME.
A lot of the time when you're using open source software you'll see licenses included in the files. A couple common licenses you will find include:

GNU LGPL (Lesser General Public License)
GNU GPL (General Public License)
MIT License
IDGAF (I don't give a fuck License)

If you do not know what each of these licenses are, and do not pay the time to review what licenses softwares are using, you should not be using that code or software.
A simple extremely run down view (This is not all the licenses allow/do not allow):

gnu LGPL: Code Modifiers must refer back to the original source of the software, commercial gain is allowed, modified software may be closed source.
gnu GPL: Code modifiers MUST refer back to the original source, commercial gain is allowed, modified software MUST REMAIN OPEN SOURCE! (whether you're selling or not)
For your benefit, here is a "too long didn't read" site on all the licenses, just search up the license you want,



- RELEASING - Open Source Software


As stated above, a lot of developers these days commonly release open source code to a repository. I HIGHLY recommend, if you're releasing code to release to github.
Git is pretty easy to use once you get the hang of it. With releasing open source software, other people may also request edits to your code, and you can review them and pull them in as fixes to your software. Github has a lot of awesome interfaces for this.

If you're not an advanced user and do not feel like learning how to use a git bash CLI, github also has a desktop GUI client. https://desktop.github.com with this you may manage your code from a GUI. I seriously recommend learning to use a command line for git, but that's your call.

Another great feature about Subversion repositories is if a user of your open source code wishes to create a spin off of your program (basically modify it making their own changes and features), they may create their own branch of your repository. What this means is that a user can clone your project on github, that project will link back to your source/branch, and you will be granted a map to see everyone who has a branch of your code, see the changes they've made, merge their branches with yours, and they can pull code changes to your base branch into their sub branch. Cool right?


As stated above, licensing is extremely important. More important to you, the publisher, than probably the user themselves.
When creating a repository, github lets you choose what license to use. If you're cloning someone else's code and publishing it as your own, remember that their license still applies. for example, the GNU GPL license requires you to copy whatever license they're published under, AND you must refer to them as the license holder. In addition, you the publisher, will NOT be held responsible for any liabilities that occur to anyone who uses another code modifier's version of your software. That is extremely important. If you don't properly license your Open Source Code and someone modifies it to be a virus and uses it on others, the victim can potentially blame you. Without a proper license, you can take legal charges.

- Conclusion-

I'm surprised I typed this, holy shizz. Hope I learned you all a thing or two about open source software.

Link to comment
Share on other sites

Great guide man! I believe there would be a chance for Intersect to go open source with all the support of the community's money.



Off topic:

Richard Stallman is retarded, even Linus thinks so too, lol.



Link to comment
Share on other sites

If you guys want an article on any topics covering anything in software engineering, let me know, I'll make a post.

9 minutes ago, Kem said:


Under what license?

So with engines, it's weird. Basically if he does GNU GPL, Any spin offs will be required to be open source. This would include games released with the software as well. He'd most likely have to choose LGPL, where the source code of spin offs may be closed, but the user must reference the source of the software either in the readme, or in visible text somewhere in their released product.

Link to comment
Share on other sites

Okay so basically,
This is the quick run down of do's and don'ts for a GNU LGPL (Lesser General Public License)


This basically says that if you take an open source application and modify it, the original writer of the software can not and will not be held liable for anything that happens with that code. Users who make modifications to a GNU LGPL Licensed code can commercially profit off of that application or code. With both the Lesser General public license (LGPL) , and the General Public License (GPL). The modifier of the code must:

  • Source the origin of the code
  • List any modifications the user made to that code
  • Disclose their source ( Publish their code for up to 3 years )

GPL also states that anyone who edits your code, MUST release their code under the same GPL license. meaning, anyone who modifies your code, must also link back to their code of origin AND release open source as well.

LGPL is actually more for the use of libraries though, so if you release a library, it is recommended to use LGPL. Where if the user modifies your library, they must release their modifications open source. However, if the user is simply using your library, they only have to link back to the source of origin.

I recommend doing some personal research into how these licenses work.

I 'll try to give an example ------------------------

I'm writing a customized emulator for gameboy where users can make roms multiplayer.
I have multiple parts of this application each with their own licenses.

In order to create games using my software, a user will have to link to one of my libraries. My library is sited as a different program than my emulator itself.

My emulator is a GNU GPL licesned code, anyone who edits or customizes my emulator, must release their code open source under GNU GPL license as well.

The Library that uses link to in order to make games on my emulator is released in GNU LGPL. This means, that any user who makes a game using my library, does not have to release their source code of they are simply using the library, they may also profit off of their game as they wish AND  they may add their own license to their game. HOWEVER, if the user modifies my library in anyway, they MUST release that library under a GNU LGPL, and release their version of my library open source as well.

--Both uses of the library will require the user/modifier to link back to my library in someway, or include it with their code. 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...