This may come as a shock, but all GNU/Linux distributions to date have been built with essential software under a licence that clearly meets neither the Open Source Definition nor the Free Software Foundations’ requirements for a Free software licence. The tenacity of a Red Hat hacker has finally solved this problem for everyone, however, and I’m proud to have played a part too.
One of the long-running projects I had at Sun was to get the (pre-GPL, permissive) license on Sun RPC changed. Why would that interest anyone? Well, the code in question is the original implementation of Sun RPC, which went on to become RFC 1057 and today is a core part of every UNIX-family operating system. Including Debian GNU/Linux and Fedora, both keen to be 100% Free-licensed software.
The way the RPC code was originally licensed was exceptionally liberal. Written in 1984 or earlier (well before the GPL existed), it allowed unfettered use of the Sun RPC implementation in any program for any purpose. The only significant restriction imposed, entirely reasonable to most eyes then, was to say that the module itself could not be sold as-is, only as part of a larger work. The code was circulated on Usenet and was extensively cut-and-pasted into software being developed then – notably the parts related to NFS.
What was liberal is now conservative
Times change. During the 80s, Richard Stallman’s Free Software movement established the four freedoms, with the GNU General Public Licence (GPL) appearing in 1989. During the 90s (1994-7), the Debian Free Software Guidelines established a need for the code in their distribution of GNU/Linux to be fully Free software. The Sun RPC Licence did not qualify, becuase of the restriction on distribution as-is – an “additional restriction” that also meant the licence is not GPL compatible. By the beginning of this decade, Debian maintainers were making a serious effort to audit the millions of lines of code in Debian for true DFSG compliance. And in 2002, they found the old Sun RPC code in core Linux files glibc and portmap. The members of the Fedora community were also engaged in a similar effort.
Reading the history for Debian bug 181493 tells the next part of the story. Inside Sun, the challenge of finding the code in question was Just Too Hard, and the things reached an uneasy impasse.
The issue came back to life in 2008 when the bug was re-asserted as part of the run-up to the Lenny release. I was contacted both by folk at Debian – notably my friend Ean Schuessler – and at Fedora – notably by Tom “Spot” Callaway – asking if there was anything I could do to accelerate licensing of the old code. Both projects had decided to take a hard line and removing the code from glibc and portmap was going to be a real headache, especially for the stability of glibc.
Challenging
The task of relicensing old code can be pretty time consuming and involves people who were already much in demand.
- First, the old code is often very old. The people who wrote it may no longer be with the company, it is no longer part of a current product, and people sometimes can’t even be sure where it originally came from before Sun put it on Usenet. You have to find the original code if you’re to make any progress at all. Doing so might mean retrieving crates of paper from long-term storage and crawling through them.
- Second, once the code is located, a legal expert has to look at the origins of the code and maybe once again crawl through retrieved paperwork to find the contracts behind the code. Their job would be to determine if Sun actually has the right to change the license at all.
- Third, someone had to believe it is their job with respect to the code in question to act on Sun’s behalf to evaluate the change, authorise it and bind the company officially.
All this is time-consuming and expensive, and without a current code owner inside Sun it was touch-and-go whether anyone could find either the staff time or the budget to run a license change through to completion.
With help from friends both at Debian and at Red Hat, we managed to identify some modern OpenSolaris code that matched the code in Linux. This was a key step. It meant we could trace ownership through the comprehensive records for OpenSolaris and start the process moving. By early 2009, we finally reached the point where we felt comfortable to relicense the Sun code involved. I got permission from both the legal team and the management at Sun and announced (and blogged) at FOSDEM in Brussels that it would be OK to relicense the old code.
But then there was some sort of foul-up after it was all agreed and Red Hat (who were making the change) never received documentation of the decision that was sufficient to give them confidence it was all over. They tried contacting people at Sun, but by then acquisition of Sun by Oracle was in full swing and no-one was allowed to make any changes affecting copyrights any more. Even though it had all been decided, no-one in the legal department was comfortable giving Red Hat the documentation they felt was essential to confirm the decision. So the changes were rolled back, much to everyone’s disappointment (not least mine).
But Spot persisted and finally got confirmation in an acceptable form from an Oracle VP, Wim Coekaerts, that permission to make the change had indeed been granted. So, at long last, the licence is changed, glibc is Free software and we can all breathe easy that this can’t cause copyright infringement suits against Linux. Congratulations to Spot for his tenacity! Spot has more information and his view of what happened over at LiveJournal.
[First published by ComputerWorldUK]
Without a doubt this is a great improvement and great news, but it is still not really accurate to call GNU/Linux a completely free system by either FSF or OSI definitions.
The Linux kernel still includes:
* licences of loadable kernel modules, which are not always FOSS
* the notorious WHENCE file(s)
* a surpringly big amount of binary blobs (which are proprietary)
Some of these problems are tackled by the Linux-libre project and its ‘deblob’ script:
http://www.fsfla.org/svnwiki/selibre/linux-libre
[…] Linux is Free software, honest! […]