October,2011, I got to know a man who has Fedoralism as his religion. Before that I had no idea about that another kind of Fedora, other than a curled brim hat exists. I considered the option 'giyf' and it showed me about "Fedora Project"(oh wow it is also connected with a hat but this time with a particular colour, red :)). I got to understand that Fedora is a Linux Operating System. The first among four foundations of Fedora is freedom. The freedom is upheld by free software and content. If a software is free or not depends upon the software licenses of the particular package. Therefore In this blog post we will check what and how the software licenses work in Fedora land.
The Fedora Operating System is made of different software packages in RPM formats. Every package must have a 'License' entry. The developer chooses the license. And it is the maintainer's job to correctly mention it in the spec file. The license as mentioned in the spec file applies for that particular project.
Lets take a tour of software licenses in the Fedora land.
To give a shape to this project I have downloaded all the spec files using 'Python Requests Module'(a thanks to Kenneth Reitz for writing it). I have downloaded only the approved packages for Fedora. There are total 19,221 approved packages in Fedora repository as found on 20.06.2016, among those 1124 were dead packages. Another note of gratitude must be given to the Fedora Infrastructure developers who wrote, and maintained such a nice documentation which a newbie like me can easily understand.
The primary aim of Fedora is to crate an operating system solely absolutely from Free and Open Source Software and to work with the Linux Community in general. There is list of licenses provided as "Fedora Licensing List". The same list has been approved, assented to by the Free Software Foundation, OSI and consultation with Red Hat Legal. To know in depth about Fedora Licensing Guidelines please visit this great documentation. This documentation is being maintained by Tom 'spot' Callaway.
This "Fedora Licensing List" actually divides the licenses into two categories :Good License and Bad License. Good and/or Approved Licenses are those licenses which are fine with Fedora. The total number of such licenses, used in different Fedora Packages, are 267.
UPDATE I have found a bug in my code which managed to skip few values, and recounted few other values instead. So the below graph is updated.
It is important to mention here that I have not considered the licenses that has been used in less than 10 Fedora packages.
From the above chart it is clear that the GPL family is the highest used (I had miscalculated it as MIT before).The other major licenses are MIT, BSD, the LGPL family, Artistic (for Perl packages), LPPL (foe texlive packages), ASL.
Apart from these licenses there are projects who has submitted themselves in to Public Domain and that number is 517 and 11 packages have mentioned their license as Unlicense.
There are some licenses which are being used very less number of times.
Example of the licenses that has been used only once:
- Romio for openmpi package
- Saxpath for saxpath package
Example of the licenses that has been used only twice:
- Julius for julius package.
This is a pie-chart of the usage of GNU General Public License and its different versions in the several Fedora packages. As it is quite evident that
GPLv2+ is the most used license of this family.
This is a pie-chart of the usage of GNU Lesser General Public License and its different versions in the several Fedora packages. So, here the chart shows that LGPLv2+ is the most used of this family.
There are different licensing scenarios which needs to be mentioned here that:
Multiple Licensing Scenarios
There are cases where the packages comprise of files which has different, distinct, multiple and independent licenses, these are the Multiple Licensing Scenarios. Example:
GPL+ and BSD for guitarix package.
Dual Licensing Scenarios
In these cases the packages are under dual, sometime triple licenses. Therefore the package may/can be licensed under either of the licenses. These cases are 2954 in total number. Example:
GPLv2 or BSD for opensm package
Combined Dual and Multiple Licensing Scenarios:
There are number of packages where some items/files have multiple Licenses i.e different, distinct, multiple and independent licenses and some items which have dual licenses. The actual number of these kinds of projects are 265.
(ASL 2.0 or EPL) and MIT for jetty package. The spec file of this example contains license as ASL 2.0 or EPL, Source6 is under *MIT License.
Single Licensing Scenario:
There are cases where the packages are being licensed under single license. Such cases are 17,425.
MIT License for python-retask
Apart from all above mentioned cases there is another scenario, which has not been shown in the pie-chart and that is Mixed Source Licensing Scenario.
In the future blog posts I will dig deep into each of these licenses and scenarios mentioned here.
- The numbers mentioned in the post may vary a bit from the actual, current numbers.
- Whenever the word package has been mentioned, I meant a SRPM.