Introduction to licenses

Place to place any code snippets, completed games, or even uncompleted games for IR users to use.
Post Reply
User avatar
Jackolantern
Posts: 10893
Joined: Wed Jul 01, 2009 11:00 pm

Introduction to licenses

Post by Jackolantern »

Types of open-source and other licenses:

1. Permissive licenses: These are very commercial and proprietary-friendly. They essentially allow you to use them in any way you want, including making derivative products which are closed source and selling them. The MIT License is the most well-known example of this, and this is typically the license I personally use because I don't care if anyone uses my code in any way they want/can, and I don't like the ambiguity of other some other licenses. The BSD Licenses are also examples of permissive licenses. Another important objective of these and other licenses is to protect the author from being sued for damages related to the usage of his/her software. There is also the WTFPL (website NSFW due to language) license, which is extremely permissive. However, this license does not even protect the author from liability, so I do not suggest using it, as that is the minimum an open source software author needs to do.

2. Copyleft licenses: These are designed specifically for the open-source community. Most have provisions requiring that any software using the open source code in whole or in part also release their source code as open source under the same license. The GPL License and its variations are the best example of these types of licenses. Some of the more popular variations of GPL are GPL v3 Affero, which was a reaction to the expansion of strictly server-side applications and servers where the binary is never distributed. It adds provisions requiring that the person running the server must release the server source code if asked. GPL is known for having tons of questions asked about it and for barrel-loads of ambiguity, which is one of the leading reasons version after version has been written (outside of specific issues being focused on by GNU, which is how Affero came about). However, if the idea of someone using your code in a closed-source, potentially commercial product irks you, this is likely the way to go.

3. "Lesser" Copyleft licenses: There is one main example of this type of license, and that is the GNU Lesser General Purpose License or "LGPL". This was made as a reaction to many developers beginning to avoid GPL for commercial projects due to the GPL requirement that all code that ran side-by-side with the GPL code had to be released under a similar license. This meant that essentially GPL licenses would cause a "GPL domino effect" in a project and require all source code to be released, even in cases where it was a large security hole to do so or could cost a company trade-secrets. These are a bit more restrictive than Permissive Licenses, but remove a lot of developer's objections to using open-source code.

4. Patent-friendly licenses: These are largely like one other license or another, but it also extends to patents, which are often left untreated in other licenses. This is the reason why the Apache license was created. If you have not filed a patent on the software you are licensing, I would look elsewhere, because most everything touched on by Apache is in other licenses as well, although it remains moderately popular even for non-patented open source software.

5. Dual-License: Dual-licensing can be confusing at first. The most common dual-licensing is Permissive and Copyleft. Examples include dual-licensed MIT/GPL, BSD/LGPL, etc. So which do you follow? Actually, you follow whichever one you want. Most common users of the software will follow the Permissive license because it affords more rights. However, the real reason for dual-licensing is derivative works. If you take a dual-licensed MIT/GPL piece of software and derive it into a new piece of software, you can choose which of the dual-licenses you want to adopt for your new work, or you can even keep it dual-licensed to pass the same option to anyone deriving your work. The main reason for this is because many licenses require that you cannot make a derived work more permissive than the license its predecessor was distributed under. If you are a Copyleft supporter, you will likely want to drop the Permissive license to ensure your work remains open source. This effectively enters your fork of the software into the GPL world. Essentially dual-licensing offers derivative works the option to choose the path their software will take. Dual-licensing is growing in popularity for Permissively licensed products, so expect to see it more. The licenses on this type of software are typically combined into one file with a blurb at the top stating it is dual-licensed. Simply including two separate license files with your software without stating it is dual-licensed could confuse end-users.

6. Creative Commons licenses: These do not typically cover software, as the terms just do not fit into the space of software, but as game developers we will often have to deal with them, and may even license our own assets under these terms. Creative Commons deal more with creative assets, such as stories, images, etc. It is also one of the most organized of all the license-creators, with icons representing each level of their terms, software-consumable tags, license selection tools, etc. They offer enough options that essentially allow content creators to "build" a license with the parts they want (commercial usage allowed or not, allow derivative work or not, require attribution or not), although the result will be an existing license since they offer a handful of licenses that cover all of the options. You can find out more about Creative Commons licenses here.

7. Proprietary and other licenses: These are typically written on a per-case basis by attorneys. One thing that is important to note about licenses is that, in fact, they themselves are copyrighted as well. So the MIT, GPL and other licenses not only apply to the software they are used on, but there are also licenses allowing you to use their license. How meta is that lol? So there are not a ton of examples that are usable by others. There are literally millions that you can read and learn from, but you cannot use them. An example would be the myriad of Microsoft licenses. These will have a ton in common with almost any other commercial software, from Mac OSX to the Adobe Suite. The "Other" in the title comes from all of the other special-usage licenses. These are typically written specifically for a single product and can often incorporate part of a business deal, such as offering an involved party the rights to publish a game or app within a certain domain in certain parts of the world, etc. An attorney will always be required to write up these types of licenses.

8. Default/No license: Many people have made the mistake of thinking that something that isn't specifically copyrighted online is not. This is not the case. Rather, the way intellectual property laws work in most countries is that if an IP is created and no rights are outlined, then all rights are reserved automatically. This is an important distinction to make, because many believe it works in the exact opposite way, where all rights are extended unless specifically withdrawn. Your best bet to keep your own projects safe is to never use anything that does not clearly outline a license of the terms of rights. If you don't know, ask the content creator.

That covers most of it, although I am probably missing some stuff in there somewhere. I may even be missing entire types of licenses lol.

If you want to use an open source license, you should include a text file called "LICENSE" inside the folder of your project or code in the distribution. Most of the licenses outline exactly what you should include in the text file with your code to ensure it is properly licensed. The only real exception from above is Creative Commons, which has a more elaborate licensing process that employs a wizard that helps you select the proper license and assembles what to include for you.

If you want more info on open source licenses or want to browse through potential licenses to find a good fit for your objectives, check out the Open Source Initiative website :cool:
The indelible lord of tl;dr
User avatar
srachit
Posts: 291
Joined: Sat Jan 05, 2013 6:10 pm

Re: Introduction to licenses

Post by srachit »

Thanks a lot Jack! Very informative and useful for all new developers! :)
User avatar
Jackolantern
Posts: 10893
Joined: Wed Jul 01, 2009 11:00 pm

Re: Introduction to licenses

Post by Jackolantern »

Thank you :)
The indelible lord of tl;dr
User avatar
Elvar
Posts: 86
Joined: Sun Oct 07, 2012 7:04 pm

Re: Introduction to licenses

Post by Elvar »

This is great stuff Jack, good work, bookmarked!
Cayle
Posts: 272
Joined: Fri Jul 03, 2009 4:45 am

Re: Introduction to licenses

Post by Cayle »

srachit wrote:Thanks a lot Jack! Very informative and useful for all new developers! :)
Not just new developers. I'm familiar with most of the various OSS licences from Karl Fogel's producing open source software. That Apache licence terms I was not familiar with however. Thanks Jack!
User avatar
hallsofvallhalla
Site Admin
Posts: 12031
Joined: Wed Apr 22, 2009 11:29 pm

Re: Introduction to licenses

Post by hallsofvallhalla »

great post
User avatar
Jackolantern
Posts: 10893
Joined: Wed Jul 01, 2009 11:00 pm

Re: Introduction to licenses

Post by Jackolantern »

Thank you everyone! I am glad it has been useful :)
The indelible lord of tl;dr
User avatar
Jackolantern
Posts: 10893
Joined: Wed Jul 01, 2009 11:00 pm

Re: Introduction to licenses

Post by Jackolantern »

Added WTFPL to the permissive licenses, but also added my little blurb about its usage.
The indelible lord of tl;dr
User avatar
Jackolantern
Posts: 10893
Joined: Wed Jul 01, 2009 11:00 pm

Re: Introduction to licenses

Post by Jackolantern »

Added a section explaining dual-licensing.
The indelible lord of tl;dr
Post Reply

Return to “Code Sharing”