In the world of open source software, licensing is a serious issue in regards to redistribution, modification, or commercialization of software. Any developer of open source software should choose a license for their software. If the software is not licensed, the software is assumed to be copyrighted by the original author and does not allow redistribution or modification of the software. To solve this problem, we will talk about the two main types of open source licenses, copyleft licenses and permissive licenses.
Copyleft licenses, such as the GPL, are licenses that require anyone who distributes the software make the source be available publicly. In addition, anyone who makes a derivative of the work must also make his or her code be publicly available. This means that the GPL license can help foster the growth of the open source community because any improvement made upon the code requires the code to also be publicly available. The problem with this license is that the code cannot be made proprietary or belong to only one organization.
In contrast to copyleft licenses, permissive licenses allow anyone who makes a derivative of the software to not share their modifications publicly. This means that if a company were to use software under a permissive license, they are allowed to make their code proprietary. An example of this type of license would be the MIT license. The MIT license is a simple license that allows anyone to use the code however he or she wants as long as the original authors and license are credited. However, if patents are to be involved, developers should opt to use the Apache license. The Apache license grants the right to use patented code in the open source software. In addition, the Apache license states that any modification to the original code must be stated.
Picking a License
My choice of open source license would be the MIT license. For simple school projects, the MIT license is a hassle free license that allows anyone to use my work without any warranty. However, I would choose the Apache license for bigger projects I might work on in the future because of the extra terms that the license grants. Assuming I ever have to work with patented code, the Apache license would express grant the use of the patent to anyone who wishes to modify my work.
Before pushing code to an open source repository, one should think carefully about how he or she wants their code to be used and apply the appropriate license.