10 Jul

I never thought licensing free software would be so interesting. Before I start releasing more source code, I figured it was time to understand what the Free Software Foundation and GPL (General Public License) is all about. So here are my thoughts about licensing free software:

Why Even Bother?
To write software and not license it opens the door for corporations or businesses with money (more money than you) to take your source code, redistribute it with their name on it, removing credit from you (the developer), and profiting off of your work. Most people would agree that even free software needs to be licensed and copyrighted.

What License Should I Use?
Once you've decided to license your source code, their are a ton of licensing choices. Many types of licenses make sense for various types of software. For a free, open-source software project, the GNU GPL (version 3) makes a lot of sense. However, their are 2 main variations of the GPL that you should consider:



GPL vs LGPL
The main difference between these two licenses is the LGPL license can be freely modified by anyone, and doesn't require the modifications (i.e. modified source code) to be re-distributed. It's perfectly legal to only distribute the binaries from your changes, and never share your source code. Why is this dangerous? Because it allows proprietary versions of your software to be released, and thus you no longer have a "free" software product.

The main selling point of GPL (over other licenses) is your code can be freely modified by anyone, and even redistributed by anyone, but any public release of any version of your software (by anyone) must make the source code available. It's also perfectly fine for someone to sell a version of a GPL software product, however they must make the source code available, and they must not charge extra for the source code.

What about GStreamer?
The GStreamer library is unique, in that it uses many non-free, proprietary codecs. If your software wants to use this library, it will be in violation with the GPL (version 3). What does the GStreamer team recommend? They recommend adding an exception clause to your GPL similar to this example:
"The EXAMPLE project hereby grants permission for non-GPL compatible GStreamer plugins to be used and distributed together with GStreamer and EXAMPLE. This permission is above and beyond the permissions granted by the GPL license by which EXAMPLE is covered. If you modify this code, you may extend this exception to your version of the code, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version."
Are There Any Other Licenses?
Of course, there are many open-source licenses to consider, not just the GNU GPL. The Open Source Initiative (OSI) has a comprehensive list of OSI approved licenses for you to consider.


Summary

Just to be clear, I am no lawyer, and I strongly recommend you speak to a lawyer if you are interested in licensing an open-source project, especially if it uses libraries that contain non-free software. Also, there are many great resources on the Internet related to this topic, so head to Google and start learning.