CINXE.COM
Make Your Open Source Software GPL-Compatible. Or Else.
<html> <head><script type="text/javascript" src="/_static/js/bundle-playback.js?v=HxkREWBo" charset="utf-8"></script> <script type="text/javascript" src="/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("http://www.dwheeler.com:80/essays/gpl-compatible.html","20020423030644","https://web.archive.org/","web","/_static/", "1019531204"); </script> <link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=S1zqJCYt" /> <link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <title> Make Your Open Source Software GPL-Compatible. Or Else. </title> <body> <b>Make Your Open Source Software GPL-Compatible. Or Else.</b><br> <b>by <a href="https://web.archive.org/web/20020423030644/http://www.dwheeler.com/">David A. Wheeler</a></b> <p> <i> This article was printed, with a number of changes, as <a href+"http: www.osopinion.com perl story 17201.html">an article at OsOpinion</a>. </i> <p> This essay is a call to all those developers who are developing <a href="https://web.archive.org/web/20020423030644/http://www.opensource.org/osd.html">open source software</a> / <a href="https://web.archive.org/web/20020423030644/http://www.gnu.org/philosophy/free-sw.html">Free Software</a>. Developers: Please, where possible, use an existing widely-used license for your software that is known to be compatible with the <a href="https://web.archive.org/web/20020423030644/http://www.fsf.org/licenses/gpl.html">General Public License (GPL)</a>, such as the <a href="https://web.archive.org/web/20020423030644/http://www.fsf.org/licenses/gpl.html">GPL</a>, <a href="https://web.archive.org/web/20020423030644/http://www.fsf.org/licenses/lgpl.html">LGPL</a>, <a href="https://web.archive.org/web/20020423030644/http://www.opensource.org/licenses/mit-license.html">MIT/X</a>, or <a href="https://web.archive.org/web/20020423030644/http://www.opensource.org/licenses/bsd-license.html">BSD-new</a> licenses. And, if you create your own license - <a href="https://web.archive.org/web/20020423030644/http://www.oreilly.com/catalog/opensources/book/perens.html">and please try not to</a> - make sure that your new license is compatible with the GPL. You don't need to <i>use</i> the GPL - not even the <a href="https://web.archive.org/web/20020423030644/http://www.fsf.org/">Free Software Foundation (FSF)</a>, the most avid GPL proponent, claims that absolutely all software must be GPL-licensed (e.g., see <a href="https://web.archive.org/web/20020423030644/http://lwn.net/2001/0301/a/rms-ov-license.php3"> Richard Stallman's comments on Ogg Vorbis</a>). But make sure that your software's license is GPL-compatible, i.e., that <a href="https://web.archive.org/web/20020423030644/http://www.gnu.org/licenses/gpl-faq.html#WhatDoesCompatMean"> you can combine your code with code released under the GPL into one larger program. </a> <p> Why? Because if your project isn't GPL-compatible, you may not receive enough support from other developers to sustain your project. Many OSS/FS developers prefer the GPL, because they believe the GPL provides a better quid-pro-quo for developers, establishes collaboration between companies (better than consortia), and/or encourages increasing the amount of <a href="https://web.archive.org/web/20020423030644/http://www.gnu.org/philosophy/free-sw.html">Free Software</a>. Even if you don't like the GPL yourself, many potential co-developers do... and your project is more likely to be successful if you accommodate them. Usually even avid GPL proponents will <a href="https://web.archive.org/web/20020423030644/http://www.fsf.org/licenses/license-list.html"> support software with other GPL-compatible licenses</a>, if you choose to not use the GPL. However, if your license isn't GPL-compatible, developers may create a competitor instead so they can take advantage of GPL'ed code. <p> And there's a <i>lot</i> of GPL'ed code to take advantage of. <a href="https://web.archive.org/web/20020423030644/http://freshmeat.net/stats/">Freshmeat.net</a> reported on <a href="https://web.archive.org/web/20020423030644/http://www.dwheeler.com/frozen/freshmeat-stats.html">April 4, 2002</a> that 71.85% of the 25,286 software branches (packages) it tracked are GPL-licensed (the next two most popular were LGPL, 4.47%, and the BSD licenses, 4.17%). <a href="https://web.archive.org/web/20020423030644/http://sourceforge.net/softwaremap/trove_list.php?form_cat=14">Sourceforge.net</a> reported on <a href="https://web.archive.org/web/20020423030644/http://www.dwheeler.com/frozen/sourceforge-stats.html">April 4, 2002</a> that the GPL accounted for 73% of the 23,651 ``open source'' projects it hosted (next most popular were the LGPL, 10%, and the BSD licenses, 7%). In my paper <a href="https://web.archive.org/web/20020423030644/http://www.dwheeler.com/sloc"><i>More than a Gigabuck: Estimating GNU/Linux's Size</i></a>, I found that Red Hat Linux, one of the most popular GNU/Linux distributions, had over 30 million physical source lines of code in version 7.1, and that <a href="https://web.archive.org/web/20020423030644/http://www.dwheeler.com/sloc/redhat71-v1/summary"> 50.36% of the lines of code were licensed solely under the GPL</a> (the next most common were the MIT license, 8.28%, and the LGPL, 7.64%). If you consider the lines that are dual licensed (licensed under both the GPL and another license), the total lines of code under the GPL accounts for 55.3% of the total. <a href="https://web.archive.org/web/20020423030644/http://savannah.gnu.org/docs/?item=How_is_the_registration_process.txt">Savannah</a> hosts 693 mostly-GPL projects (as of March 28, 2002) and strongly encourages GPL-compatible licenses. You ignore this amount of code and support at your project's peril. <p> Want more evidence that GPL compability is important? Several high-profile projects have undergone painful changes just to make themselves GPL-compatible. The widely-used <a href="https://web.archive.org/web/20020423030644/http://www.python.org/2.1/fsf.html">Python</a> language and text editor <a href="https://web.archive.org/web/20020423030644/http://www.vim.org/announce/vim-6.1">vim</a> recently underwent major license changes to become GPL-compatible. <a href="https://web.archive.org/web/20020423030644/http://www.mozilla.org/MPL/relicensing-faq.html">Mozilla</a> is also undergoing a complex relicensing scheme, again, to resolve perceived incompatibilities between their older licenses and the GPL. <p> While it's possible to relicense software to make it GPL-compatible, it's quite difficult - you're much better off starting off GPL-compatible in the first place. Thankfully, many projects don't have to endure this transformation. The W3C, for example, <a href="https://web.archive.org/web/20020423030644/http://www.w3.org/Status">explicitly states that all its software releases are OSS/FS and are compatible with the GPL</a> - showing that they believe GPL compatibility is very important. <p> License analysis can become complicated. The FSF developed the GPL and maintains a <a href="https://web.archive.org/web/20020423030644/http://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses"> list of licenses that it believes to be compatible and not compatible with the GPL</a>. My point isn't to debate their legal analysis; I just want to show that determining GPL compatibility can be complicated. Thus, the best approach is to keep things simple. <p> So, how do you make sure that your software is GPL-compatible? Fortunately, this is easy. One way, of course, is to use the <a href="https://web.archive.org/web/20020423030644/http://www.fsf.org/licenses/gpl.html">GPL</a>. Another is to use a different license that is known to be GPL-compatible, such as the <a href="https://web.archive.org/web/20020423030644/http://www.fsf.org/licenses/lgpl.html">LGPL</a>, <a href="https://web.archive.org/web/20020423030644/http://www.opensource.org/licenses/mit-license.html">MIT/X</a>, or <a href="https://web.archive.org/web/20020423030644/http://www.opensource.org/licenses/bsd-license.html">BSD-new</a> (modified BSD) license. <a href="https://web.archive.org/web/20020423030644/http://www.gnu.org/philosophy/bsd.html"> Don't use the old/original BSD license, which had many practical problems</a>; even <a href="https://web.archive.org/web/20020423030644/ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change">Berkeley has switched to the new BSD license for their software</a>. A third alternative is to dual license the program: release it under more than one license, one of which is the GPL, and let the user pick which license they'll use (widely-used projects such as Perl and Mozilla do this). If you're submitting changes to an existing project that uses a GPL-incompatible license, include a note in your submission that you're dual-licensing your changes with the GPL; that will make it easier for the project to dual-license the entire program later. In any case, make sure that your OSS/FS software is GPL-compatible, or your project may never have the support you wanted. <!-- End of main essay, below is "about the author" --> <p> <hr> <p> <a href="https://web.archive.org/web/20020423030644/http://www.dwheeler.com/">David A. Wheeler</a> enjoys learning and writing about OSS/FS and IT security, and spends far too much of his spare time on them. He is the author of papers such as <a href="https://web.archive.org/web/20020423030644/http://www.dwheeler.com/oss_fs_why.html"><i>Why Open Source Software / Free Software (OSS/FS)? Look at the Numbers!</i></a>, <a href="https://web.archive.org/web/20020423030644/http://www.dwheeler.com/oss_fs_refs.html"><i>Open Source Software/Free Software (OSS/FS) References</i></a>, and the <a href="https://web.archive.org/web/20020423030644/http://www.dwheeler.com/secure-programs"><i>Secure Programming for Linux and Unix HOWTO</i></a>, as well as several OSS/FS programs such as <a href="https://web.archive.org/web/20020423030644/http://www.dwheeler.com/flawfinder">flawfinder</a>. He also plays the piano and guitar. It is rumored that he doesn't actually sleep, which would explain a lot. </body> </head> <!-- FILE ARCHIVED ON 03:06:44 Apr 23, 2002 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 02:02:15 Nov 28, 2024. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 1.427 exclusion.robots: 0.028 exclusion.robots.policy: 0.017 esindex: 0.011 cdx.remote: 102.646 LoadShardBlock: 404.781 (3) PetaboxLoader3.datanode: 131.095 (4) PetaboxLoader3.resolve: 117.835 (2) load_resource: 145.245 -->