After nine months, an open secret can finally be acknowledged: The OpenGL code that is responsible for 3-D acceleration on GNU/Linux, which was released by SGI in 1999, has been running on licenses that were accepted by neither the Free Software Foundation (FSF) nor the Open Source Initiative. Today, however, the FSF has announced that the licenses in question, the SGI Free License B and the GLX Public License, have been rewritten after months of negotiation between the FSF and SGI. The problem is now resolved, and the result is a code contribution that the FSF ranks as one of the greatest given to the community by a proprietary company.
OpenGL is the specification behind 3-D acceleration. Without an implementation of OpenGL such as the ones found in Mesa and X.org, free operating systems are restricted to 2-D graphics, which are suitable for email and office productivity, but nothing more. Compositing window managers, many games, animation, high-end graphics -- in short, many aspects of modern computing that users often take for granted -- all require implementations of OpenGL.
The licensing problem has been an open secret for some time. A Debian bug report reported part of the problem as early as 2003. However, little was done with the knowledge until January of this year, when an OpenBSD user reported the problem to the FSF, according to executive director Peter Brown. In response to the news, the GNewSense distribution, whose goal is to remove all non-free software, has been omitting OpenGL-related files from its distribution in the months since.
Steve Neuner, director for Linux engineering at SGI, says, "SGI became aware of this issue a while back, and has been talking to people in the community." However, no formal announcement was made about the problem. "We didn't want to draw attention to it," Brown says, "because we didn't want to pressurize SGI. We wanted to get their cooperation."
The alternative, he says, was not only "strains in community relations," but also "a huge amount of time and energy and resources that we would have to pump in to replace this code. We started figuring the funding needed to do it, and it was scary, frankly. That is why it was so worthwhile spending all this time speaking to SGI, because the alternative was really frightening."
As things were, keeping the problem from becoming public was difficult. FSF compliance engineer Brett Smith says, "Someone came to me on IRC and asked if people should start sending angry faxes to SGI, telling them to please clean up their licenses. And I was like, 'No, that's not the right message right now.' We were trying to avoid that kind of reaction, because among the people in the GNewSense community, there was a visceral reaction initially, and it took some time for people to realize that we needed to give them a chance. And it really paid off. SGI was very willing to work with us throughout the entire process."
Warned of the problem, the FSF contacted SGI. According to Brown, SGI was initially slow to respond, since neither its OpenGL code nor the licenses were a priority for the company. However, SGI listened sympathetically to the FSF's concerns, and was soon cooperating fully.
"It was friendly throughout the process," Brown stresses. "It was a case of education, then of working together to find an optimal solution."
The licensing problem
Smith says that the SGI Free License B and the GLX Public License, which are "pretty similar, although there are slight variations in the details," had three main problems for both free software and open source.
The first problem is that section 6 of the SGI Free License B and section 7 of the GLX Public License forbid the distribution of code that infringes on somebody else's intellectual property rights. "The problem here," Smith says, "is that, the patent system being what it is, especially in the United States, it's pretty difficult to distribute code that you know for sure doesn't violate someone's patents. Given that you are prohibited from distributing the software at all if this happens, the clause[s] are so broad and the prohibition so difficult that we felt it effectively curtailed users' rights to distribute the code at all."
The second problem also occurs in section 6 of the SGI license and section 7 of the GLX license. Under both licenses, distributors of the code are required to obey any export laws that might apply. Smith points out that, while no license can permit users to break the law, this language places users in double jeopardy: If they violate export laws, they also lose the right to distribute OpenGL-related software. "If a user does something to violate a law, that's the government issue, and it can prosecute accordingly," says Smith. "But the software license shouldn't have any say in the matter."
Thirdly, section 7 of the SGI license and section 8 of the GLX license require users to inform the distributor if they learn of any potential intellectual property infringement of code releases under the licenses. The problem here, according to Smith, is that the licenses could force users to reveal privileged information. For example, if you asked a lawyer to review a piece of software and were told that it might infringe a patent, you would be obliged to waive your legal rights to confidentiality.
Brown states that, in both cases, "It was clearly the intention to make a free software license. It just didn't turn out that way." So, in seeking a solution that would allow free software to use OpenGL-related software, the FSF was also helping SGI to achieve its original intentions.
The FSF suggested a number of potential solutions to SGI, including removing the problematic clauses from the licenses, rewriting the licenses entirely, dual-licensing with a free license as the second license for each piece of software involved, and assigning code to a third party that would assume the responsibility of possible patent infringement that seemed to concern SGI so much when it wrote the licenses.
From the first, the FSF wanted to find the simplest solution that would satisfy everyone. This was especially important because, given that much of the OpenGL code that SGI had released was written years ago, it was difficult to track what code was involved, what licenses it had used, and where it might need to be updated. In many cases, the code's relevance or licensing was unclear.
As a result, Smith says, "I was hunting down contractors who worked on SGI code years ago to ask them if they remembered anything about the license on particular files." However, "in the end, we came to the conclusion that everything affected was OpenGL-related" -- something that, while likely, could not be taken for granted without checking.
Armed with the update clauses, SGI decided that it would replace the existing text of the licenses with text based on the MIT or X11 License. By using this solution, SGI ensured both that the code on which it held copyright was released under a free license, and that, because of the update clauses, it would need neither to be tracked down nor edited to reflect the change. Instead, with the publication of the licenses with the new text, the licensing issue would be instantly and painlessly solved.
A gift to the community
Those outside the process might wonder why nine months were needed to reach such a straightforward solution. Brown explains the time involved by saying, "All avenues were looked at, and the SGI attorneys had to carefully look at the issues. So, when you add everything up, the nine months really seemed to by quickly. There wasn't any time that this felt like a dead conversation. It was simply a complexity that SGI usually doesn't have to deal with, and therefore it was unusual territory for them. They had to come to the realization of the importance of the issues, and they wanted to make sure that they were doing the right thing for their community of users."
In the end, Brown says, "We have a huge mountain of appreciation for SGI. It was really hard to explain the huge pain in the ass that this was going to cause the free software community. These licenses are vital to the code base of GNU/Linux, and I think that SGI has proven to be a fantastic community member. And, like Sun releasing Java as free software, this represents a huge gift to the free software community."