tom callaway (spot) wrote,

The long, sordid tale of Sun RPC, abbreviated somewhat, to protect the guily and the irresponsible.

Once upon a time (1984), Sun created an RPC implementation for Unix, with the intent of implementing RFC 707 (High-level framework for network-based resource sharing). Now, in those days, a good way to ensure that people used code that you wrote was to upload it to usenet, and in 1985, Sun did that. (Google has one of the posts archived here: Sun RPC part 8 of 10)

Keep in mind the following: the first formal definition of free software was published by the FSF in February 1986, so there were technically no "free software" licenses when Sun RPC was written. For that era, the licensing of Sun RPC was remarkably permissive, it said:

/*
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
* unrestricted use provided that this legend is included on all tape
* media and as a part of the software program in whole or part. Users
* may copy or modify Sun RPC without charge, but are not authorized
* to license or distribute it to anyone else except as part of a product or
* program developed by the user.
*
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
*
* Sun RPC is provided with no support and without any obligation on the
* part of Sun Microsystems, Inc. to assist in its use, correction,
* modification or enhancement.
*
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
* OR ANY PART THEREOF.
*
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
* or profits or other special, indirect and consequential damages, even if
* Sun has been advised of the possibility of such damages.
*
* Sun Microsystems, Inc.
* 2550 Garcia Avenue
* Mountain View, California 94043
*/

People wanted to be able to support RPC, so this code was used all over the place. Notably, it is a core component of how NFS works on Unix (and since Linux is Unix-y, there too). Over time, this code was ported to Linux, and added, most notably, to glibc, all along, inheriting the same license Sun wrote for it in 1984.

The problem is that this license is clearly non-free, it places restrictions on distribution. Now, Debian has known about this concern for a while now, since 2002, to be precise, as you can see here: Debian Bug 181493
Fedora caught this when we first started doing serious license audits, circa 2005.

So, what do you do about this? As a distribution, your options are:

1) Pull out the non-free code. This means you don't support NFS, most notably.
2) Replace the non-free code. The big problem here is that the Sun RPC implementation was pretty much the standard RPC implementation on *nix. There were some others, but switching to them would have been really, really, painful.
3) Try to get the code relicensed, and keep it until that happens.

So, Fedora, like Debian, chose #3.

Every so often, we would check in with Sun and see if they were willing or able to relicense this code. Simon Phipps was very interested in solving the problem, but there were various concerns on Sun's side that prevented them from taking action, but in February 2009, Simon told the crowd at FOSDEM that Sun was going to "change the license to Sun's copyrights in the RPC code to a standard 3-clause BSD license". Unfortunately, Sun never actually made this change. (Simon's blog entry about this is here:
http://blogs.sun.com/webmink/entry/old_code_and_old_licenses )

Independently (and simultaneously), Red Hat had been trying to work with Simon and Sun to relicense a specific set of files which were under the Sun RPC license terms. We even went and tracked the lineage of these specific files and found their equivalents in OpenSolaris. When Simon made his announcement at FOSDEM, since he specifically mentioned glibc, we assumed that it was taken care of and did not explicitly call out the glibc files in our request for relicensing. In March 2009. Sun granted Red Hat permission to relicense the explicit files that we had identified to Sun as needing relicensing (to be specifc, all affected files in rpcbind 0.1.6, nfs-utils-lib 1.1.3, nfs-utils 1.1.3, libtirpc-0.1.9, and portablexdr 4.0.11).

Unfortunately, there was still remaining code in Fedora under the Sun RPC license, specifically, in glibc, krb5, and netkit-rusers. We accidentally advised glibc upstream to relicense the file, thinking that Sun had given us permission, but when we realized that we had not in fact been given that permission, we had that change reverted in upstream. By this point, Sun was too busy becoming part of Oracle to respond at all here.

So, we restarted the effort with Oracle, and on August 18, 2010, Wim Coekaerts, on behalf of Oracle America, gave permission for the remaining files that we knew about under the Sun RPC license (netkit-rusers, krb5, and glibc) to be relicensed under the 3 clause BSD license.

You can see the glibc commit here: http://sources.redhat.com/git/?p=glibc.git;a=commit;h=a7ab6ec83e144dafdc7c46b8943288f450f8e320
The krb5 changes are in progress. As far as I can tell, netkit-rusers is abandoned code. Emails to netbug@ftp.uk.linux.org and dholland@hcs.harvard.edu both bounce. If you know someone who could help us make this change in netkit-rusers, please let me know. In the interim, Fedora has a patch to fix the license in our copies in Fedora 14 and rawhide.

*****
I'd like to thank Wim Coekaerts and Elena Zannoni at Oracle America, and Peter Brown at the Free Software Foundation for helping us cross the finish line here, as well as to Simon Phipps (formerly with Sun) and Richard Fontana (Red Hat Legal) for their work over the last few years to try to close this issue out.

I'm thrilled to be able to take this off my list of items which fall under category #3. Fedora has a strong commitment to Free Software, and efforts like this reflect how we are actively working towards a target of entirely Free Software.

(It is worth noting that up until August 18, 2010, any '100% Free" distribution was, well, not 100% Free, assuming they were using glibc. But I've posted on that silliness before, so I won't do it again.)
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 21 comments