Sneak preview of GPL v. 3, part 2: System libraries and patents

- By Eric Ries -
Maybe you'd rather spend your time writing code than wrangling over legal details. But
licenses like the GNU General Public License (GPL) are the foundation on which free software is built. Richard M. Stallman, the leader of the free software movement, is contemplating a host of changes to the GPL for its 3.0 version.

In its third version, the GPL will be tweaked in ways that strengthen its real-world impact. These
changes range from clarifying the role of ASP-hosted software to clarifying the ways in which GPL-covered software may be distributed. Several of these potential changes were
covered in part
one of this story.

Clearing up some confusion

First, let's clear up a few points of confusion relating to part
one. First, RMS is concerned that the term "ASP loophole" is a misleading characterization.
"I don't believe the terms 'circumvent' and 'loophole' are justified," he says. "Running an ASP
does not constitute providing non-free software to the users; the major wrong that the GPL is designed to prevent is not occurring. However, another goal of the GPL, to bring improvements
back to the community, is being thwarted."

Part
one indicated that the GPL may no longer require that source be made
available through mail-order in cases where physical binaries are
distributed. However, RMS points out that he is "not sure whether the time has come to allow this. Since the facts that the decision should be based on are changing with time, I will
probably make the decision towards the end of the process." Stallman may even release a GPL 2.1 to address such non-controversial concerns long before 3.0 comes out.

It is important to be clear about the motives underlying this revision. Although part one
discusses several changes that are designed to make the GPL more responsive to the needs of businesses that use or develop free software, this is not its primary goal. As RMS puts it, "The main reason is to more clearly block certain activities that hurt the community. But while I am
at it, I would like to make the GPL more friendly to the businesses that develop and use free software."

Although work on GPL3 is not even near the draft stage yet, it may be worthwhile for people interested in free software to be thinking about these issues and how they apply to
their projects. Here are a few more of the issues that GPL3 may (and we need to
emphasize may) address.

Last time, we discussed changes that are more or less incremental improvements to the existing GPL. This time, we'll examine how the GPL covers system libraries,
patents and trademarks.

The system library exception

One of Stallman's stated goals for GPL3 is to "rework the system library exception," which is part of a more general effort to clarify and focus the language of the GPL
in several places. One of the philosophical goals of the GPL is to prevent GPL-covered work (in derived and redistributed form) from being linked with non-free
software. There are many ways in which this can be accomplished, but as we saw with the situation of ASPs, figuring out exactly which cases are covered can be quite tricky.

The current version
of the GPL has a section covering the case of functionality provided by the operating system:"The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed
(in either source or binary form) with the major components (compiler,
kernel, and so on) of the operating system on which the executable
runs, unless that component itself accompanies the executable."

This clause was originally created to deal with the case of libc, a library of common functions needed to run most programs on UNIX-like systems. Because many GPL-covered programs run on non-free platforms, this clause prevents the unworkable scenario of requiring
application developers to distribute the source of system-level modules. In the case of a free software platform like GNU/Linux, this might only be an inconvenience. But in the case of a non-Free system, it is impossible.

As you can imagine, figuring out where to draw this line quickly becomes problematic. Consider the case of the many "standard" Java foundation-level classes. Although there are free software implementations for some of these classes, most developers choose to standardize on one such
platform. Should users who do not have the option of a free implementation be barred from running the program?

Because the current language was designed with the libc scenario in mind, it is too broad for Stallman's tastes.

What he is seeking is a refinement that will allow the maximum benefit to the free
software community: "The criterion has to be somewhat more general than just allowing libc.
But we definitely do not want to permit linking with third-party non-free libraries. I am looking at changing the wording and thus drawing the line in a slightly different place. However, the general idea -- yes to the 'system libraries,' but no to libraries that are separate products -- will remain unchanged."

The patent-killer clause

One problematic item on the horizon of the Free Software Movement is the issue of patents. Currently, the GPL attempts to prevent patents from being used to control the redistribution of derived works. This
attempt is summarized in the GPL Preamble: "We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program
proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all."

The relevant section reads (in part) as follows: "If, as a consequence of a court judgment or
allegation of patent infringement, conditions are imposed on
you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you
cannot distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit
royalty-free redistribution of the Program by all those who receive copies
directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program."

Unfortunately, the current state of patent law, as it applies to software (free or otherwise), is not
perfectly clear. Because of this, the potential exists for unscrupulous
individuals/corporations to exploit this ambiguity to effectively circumvent provisions of the
GPL. Stallman is looking for ways to strengthen this language so as to ensure that users always get the full protections offered by the GPL. In addition to language changes in the GPL,
Stallman has considered other legal methods for protecting free software from patents.

Patents are a tricky subject, and although it would be optimal if patent law could be subverted in the same straightforward way as copyright law, Stallman does not think this is possible. "The closest thing to this is a patent pool," he says. "I have been suggesting a patent pool for some nine years now, but it is very hard to get one started. You need an entity
(or several) with patents to contribute, and I have not found one.

"Also, a patent pool can only be effective against patents owned by companies that make products. (If their product infringe patents in the pool, they could be pressured into joining.) But
there are also companies that make no products, that just own patents and use them to
squeeze money out of those who do make products. Until there are
patents on techniques for lawsuits, these companies can never be forced to cross license."

Stallman greatly prefers the approach of a patent pool to another approach, pioneered by Amazon.com's Jeff Bezos and book publisher Tim O'Reilly, called a "prior art search
engine."

"Each point of prior art blocks patents in a surrounding region whose radius is measured by the standard of unobviousness used to judge a patent application. As long as the system uses an
absurdly low standard, the existing prior art does little good. Meanwhile, unobvious nontrivial patents also do great harm."

Existing patent law is simply too vague to work with in a reliable fashion, Stallman argues. This is a problem that has plagued both proprietary software vendors as well as the free
software Movement. Ultimately, it will be up to the government to
decide the exact status of software patents, either
through a definitive ruling of the U.S. Patent and Trademarks Office (PTO),
or, more powerfully, through an act of Congress.

Stallman is optimistic: "Events in Europe are showing that the free software community
has developed the political strength to put up a real fight against policies that prohibit our work. Perhaps in five years we will have the strength to persuade Congress to make an
exception in patent law for free software."

Conclusion

Do you have some ideas about how the GPL can be improved? Sound
off in our discussion forums. You might want to check out some discussion that's
gone before. First, there's this
discussion on Slashdot spawned from part
one of this article. Next, there's a slightly older Slashdot
piece (which also ran on Kuro5hin)
about the GPL and Web-based applications. RMS has said he will show
his draft to select members of the community, and then the
public at large for comment and advice, before adopting any changes. Maybe you can help him out.