Other Criteria of Open Source Software

GPL Compatibility

Making a program free is not necessarily enough to make it compatible with the GNU GPL licence. The GPL makes some restrictions regarding which licences it can link against, and some otherwise free software is not compatible with them. Examples for incompatible licences are the Mozilla Public License, the Qt Public License, and even the original BSD licence. It is advisable that, whenever possible, a developer or vendor should choose a licence that is compatible with the GPL, because otherwise there may be problems integrating his code with GPLed one or using both a GPL and a non-GPL compatible library. (I am not a lawyer, so I cannot conclusively say when it is legal or not).

Mozilla is an example for a large project that started out with its custom (albeit now relatively common), non-GPL compatible licence, and recently adopted a triple licence of the Mozilla Public License, the GNU General Public License, and the GNU Lesser General Public License in order to make it compatible with the GPL and to standardise its integrability. The Qt library whose commercial vendor and originator is Troll Tech Inc., also had adopted the GPL as well as its own Qt Public License, to relieve the various legal problems that KDE (a desktop system for UNIXes which is based on it) faced when using GPL code.

One relatively recent issue with the GNU General Public Licence had been the formation of Version 3 of both the GPL and the LGPL, which made programs that were only version 2 of the GPL (and not a later version) incompatible with those of the GPL version 3 or even the LGPL version 3. While some programs has been relicensed or sublicensed under version 3 of the GNU licences, a lot of software packages out there are stuck at being version 2 without an option for a later version, which make them mutually incompatible with the formerly licensed packages. Such FOSS packages include a large amount of the code of the Linux kernel, as well as Ghostscript and xpdf, which are commonly used for rendering the PostScript and PDF standards for ready-to-print-documents.