Wednesday, March 16, 2016

Second Week of LITG Program

As the second week of the LITG program started off, my main task was to identify the significance of various open source licenses available and adding an appropriate license to my project. As instructed by my mentor, I referred the website http://choosealicense.com/ for three types of open source licenses available namely, MIT License, Apache License 2.0 and GNU GPLv3. My learning about these licenses is summarized in this article.

The first type of license studied was MIT License. It is a free software license originating at the Massachusetts Institute of Technology(MIT). A comparatively small and straight forward license which lets a person do anything with your code while providing attribution back to you, the original owner of the code and not holding you liable at any misdeed. This includes the freedom for all activities including copying, modifying, merging, publishing or even selling copies of the software on the condition that the original license is included somewhere in the derivative.

The second type of license studied was Apache License 2.0. This license is similar to MIT License except for few additional restrictions. If another person changes any Apache licensed code they must state so. Also it has restrictions on using the project name. Another prominent feature of the Apache License is that it includes terms for dealing with patents. Apart from these exceptions, Apache License is almost the same as the MIT License allowing users to redistribute derivatives of the original code under any license of their preference.

The next type of license studied was GNU General Public License(GPL)v3. This includes a lot of restrictions over the usual features of the Apache License 2.0. It is a copyleft license in that it requires any user who redistributes your code or its derivatives to distribute it under the same license. Therefore the derivatives too need to be free and open source. Apart from that this license also includes terms for patent rights.

On the understanding gained related to the aforementioned three types of licenses, I decided to use Apache License 2.0 for my project. GNU GPLv3 was rejected at the first place on the understanding that it requires the users of my code to redistribute their work with the same license. This is breach of freedom for the developers to use my code and build on it as they wish. My purpose is to develop some new functionality and make it available for use by all kinds of enthusiastic developers out there regardless of whether their work is free or not. Software needs to be reusable beyond such boundaries. Then the choice was among the MIT License and the Apache License 2.0. These two licenses are almost similar. Yet I decided to choose Apache License over MIT License due to the fact that it includes additional terms for patent rights which ensures the originality of my work. With this license, the users of my code can use it at their will(to modify, copy, redistribute), apply a license of their choice on their derivatives while still providing the attribution of the original work back to me.

With the learning gained during the second week of the LITG program, I cam now easily select the software license that best fits my needs. This will indeed be helpful for me ahead in my career as a software developer.

No comments:

Post a Comment