Open-Source Licenses

Lately I've been developing a lot of software that I want to release under open source licenses but I have never really understood the differences between the available licenses. Reading the license definitions is only somewhat helpful because the legal speak is a bit harder to understand. I found a helpful document explaining some of the major differences between the most popular licenses. I wanted to write a quick recap here; as usual this is mostly for my own benefit so that I remember, but if it helps you decide which license to go for then that's great!

  • GNU General Public License (GPL)
    This license does not permit proprietary forks and it does not permit combining the GPL code into a larger project that is not also GPL. This is one of the most restrictive open source licenses because it forces projects that utilize the code to also be licensed under GPL. I don't use this license often because many of the projects I develop are projects I put together in my spare time with a side goal of using them at my job. The code we develop at my job cannot be licensed under GPL so if I want to use my personal software projects at work then this is not an option.

  • BSD License
    This license does permit proprietary forks. Someone could fork my repository for a project under this license, modify the code, and redistribute/sell the new project under a restrictive license. They don't have to share the modified code with anyone (including myself) if they don't want to. This is the license I use if I aim to let my code be widely used. People are more likely to use your code if it resides under this license because they can literally do anything they want to with your code without worrying about stepping on anyone's toes. I sometimes use this for projects I intend to use at my job because anything we might use it for at work would not infringe on this license.

  • Mozilla Public License (MPL)
    This license is a less restrictive version of GPL. It does prohibit proprietary forks, but it does not prohibit combining the code with a larger project. The license only applies to the code itself and as long as that code is only used and not modified when combined into another project then the overall project that uses this code does not have to be open source. This is another license I use when I want to use a project of mine at work, but don't want the code to be customized and sold without the community benefiting from the modifications.


Read more posts by this author.

comments powered by Disqus