206 lines
9.0 KiB
HTML
206 lines
9.0 KiB
HTML
|
<!--startcut ==========================================================-->
|
||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
|
||
|
<HTML>
|
||
|
<HEAD>
|
||
|
<title>What's good about the LGPL? LG #38</title>
|
||
|
</HEAD>
|
||
|
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#0000AF"
|
||
|
ALINK="#FF0000">
|
||
|
<!--endcut ============================================================-->
|
||
|
|
||
|
<H4>
|
||
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
||
|
</H4>
|
||
|
|
||
|
<P> <HR> <P>
|
||
|
<!--===================================================================-->
|
||
|
|
||
|
<center>
|
||
|
<H1><font color="maroon">Why you might want to use the Library GPL for your next library</font></H1>
|
||
|
<H4>By <a href="mailto:eric.kidd@pobox.com">Eric Kidd</a></H4>
|
||
|
</center>
|
||
|
<P> <HR> <P>
|
||
|
|
||
|
<P>Richard Stallman, the founder of the GNU Project, recently wrote an
|
||
|
article titled <A
|
||
|
hREF="http://www.gnu.org/philosophy/why-not-lgpl.html">Why you shouldn't
|
||
|
use the Library GPL for your next library</A>. He argued that placing new
|
||
|
libraries under the regular GPL would give an advantage to free software
|
||
|
authors. If you haven't read this article yet, you should. Stallman knows a
|
||
|
lot about free software, and he makes several important points.</P>
|
||
|
|
||
|
<P>I disagree with Stallman, however. His article omitted several reasons
|
||
|
<EM>against</EM> using the GPL for libraries, and some of these are pretty
|
||
|
important. First, GPL'd libraries can't be used in all free
|
||
|
software. Second, US law probably allows proprietary software to use GPL'd
|
||
|
libraries anyway. Third, GPL'd libraries may discourage people from using
|
||
|
GNU/Linux systems.</P>
|
||
|
|
||
|
<UL>
|
||
|
|
||
|
<LI><A HREF="#free-software">GPL'd libraries can't be used by all free
|
||
|
software</A>
|
||
|
|
||
|
<LI><A HREF="#proprietary">Proprietary applications may be able to use GPL'd
|
||
|
libraries anyway</A>
|
||
|
|
||
|
<LI><A HREF="#discourage">GPL'd libraries may discourage people from using
|
||
|
GNU/Linux</A>
|
||
|
|
||
|
<LI><A HREF="#which">So I'm a free software author? Which license should I
|
||
|
use?</A>
|
||
|
|
||
|
</UL>
|
||
|
|
||
|
<H2><A NAME="free-software">GPL'd libraries can't be used by all free
|
||
|
software</A></H2>
|
||
|
|
||
|
<P>I'm really lucky--I write free software for a living. When I decided to
|
||
|
stop writing proprietary software, my paycheck got cut in half. (Don't
|
||
|
worry; I'll find a way to earn it all back.) My new employer pays me to
|
||
|
enhance a mail server used by several colleges. I also do consulting work,
|
||
|
since it pays well. All the code I write can be used in GPL'd programs, but
|
||
|
very little of it is released under the GPL itself.</P>
|
||
|
|
||
|
<P>Even though I write nothing but free software, my programs can't link
|
||
|
against a GPL'd library. A GPL'd library can only be used in a GPL'd
|
||
|
program. Programs using the X11, BSD, Netscape, Mozilla or Artistic
|
||
|
Licenses cannot use GPL'd libraries. (Several of these licenses are flawed,
|
||
|
but that's another topic.)</P>
|
||
|
|
||
|
<P>My employer's mail server uses a <A HREF="#bsd-note">BSD-style</A>
|
||
|
license. I don't have the necessary influence to make them use the
|
||
|
GPL. Unfortunately, this means that I can't use GPL'd libraries to make the
|
||
|
program better. Instead of doing something useful for the free software
|
||
|
community, I waste time reimplementing broken versions of pre-existing
|
||
|
libraries. My time would be better spent adding new features to the mail
|
||
|
server, or even enhancing an LGPL'd library.</P>
|
||
|
|
||
|
<P>So in this case, using the GPL for libraries can actually <EM>hurt</EM> free
|
||
|
software. It's not a simple issue.</P>
|
||
|
|
||
|
<P><STRONG>Update:</STRONG> RMS posted the following message to the
|
||
|
gnome-list:</P>
|
||
|
|
||
|
<BLOCKQUOTE>
|
||
|
<PRE>
|
||
|
This exception would be redundant, because simple non-copyleft
|
||
|
licenses such as X11 and BSD are compatible with the GPL already.
|
||
|
|
||
|
So if you want to write a non-copylefted application, release it under
|
||
|
the X11 license, and link it with a GPL-covered library, that is
|
||
|
allowed. The linked executable would be covered by the GPL, of
|
||
|
course, but the app source code would be covered by the X11 license
|
||
|
alone.
|
||
|
</PRE>
|
||
|
</BLOCKQUOTE>
|
||
|
|
||
|
<P>So XFree86-licensed code can use GPL'd libraries. The BSD license might
|
||
|
conflict with the GPL until the <A HREF="#bsd-note">advertising clause</A>
|
||
|
is removed, but this is a good thing to do anyway. However, code using the
|
||
|
NPL, MPL or a similar license would still have problems. Thanks to gsv for
|
||
|
pointing this out to me.</P>
|
||
|
|
||
|
<H2><A NAME="proprietary">Proprietary applications may be able to use GPL'd
|
||
|
libraries anyway</A></H2>
|
||
|
|
||
|
<P>The GPL is well-written, and most of it would stand up in court. (The
|
||
|
GPL has never been tested, probably because Stallman's legal volunteers
|
||
|
have convinced violators to settle out of court.) For better or for worse,
|
||
|
however, there's a good chance that proprietary software can use GPL'd
|
||
|
libraries even though the license forbids this.</P>
|
||
|
|
||
|
<P>The GPL is enforced using copyright law. The United States (and many
|
||
|
other countries) have exceptions to copyright law for "fair use". Two
|
||
|
important kinds of fair use involve compatibility and reverse
|
||
|
engineering.</P>
|
||
|
|
||
|
<P>Imagine that you want to write a program for Windows, but that you need
|
||
|
to use an undocumented API. Microsoft won't give you the information, so
|
||
|
you'll have to find it on your own. US law normally allows you to
|
||
|
disassemble parts of Windows and call secret functions, even if Microsoft
|
||
|
says you can't. Similarly, Microsoft can't prevent the Samba team from
|
||
|
reverse-engineering Windows file sharing.</P>
|
||
|
|
||
|
<P>Imagine that you sell proprietary software for Linux. You want to use
|
||
|
the Readline library if it's present on a user's system, but the Readline
|
||
|
library is GPL'd. So you decide not to ship Readline yourself. Instead, you
|
||
|
fix your program to <EM>look</EM> for Readline and ask your users to
|
||
|
install it on their own. (RedHat 5.2, for example, installs Readline by
|
||
|
default.)</P>
|
||
|
|
||
|
<P>Have you broken the law? You haven't made copies of Readline for anyone,
|
||
|
and the GPL doesn't stop you from copying your own program. You used
|
||
|
Readline yourself, but the GPL doesn't forbid this. (Even if the GPL
|
||
|
<EM>did</EM> try to forbid this, it would probably fall under the "fair
|
||
|
use" exemption.) Your users might choose link your program against
|
||
|
Readline, but US law probably allows them to do so (and the GPL doesn't
|
||
|
even try to stop them).</P>
|
||
|
|
||
|
<P>So what prevents Readline from being used by proprietary software? Is
|
||
|
your program a "derivate work" of Readline, and therefore covered by the
|
||
|
GPL? Not likely, since it doesn't include any Readline code. Does
|
||
|
<CODE>#including</CODE> the Readline headers subject your program to the
|
||
|
GPL? Probably not--a good lawyer would claim that this is the same as
|
||
|
"reverse engineering for the purposes of interoperability". Maybe you'd
|
||
|
have to retype the headers in a cleanroom environment, but that's not too
|
||
|
hard for a small library.</P>
|
||
|
|
||
|
<P>So can a proprietary application dynamically link to a GPL'd library?
|
||
|
Maybe. But if a proprietary application <EM>can't</EM> used a GPL'd
|
||
|
library, then Microsoft may be able to cause trouble for WINE and
|
||
|
Samba. This knife cuts both ways.</P>
|
||
|
|
||
|
<P>Please remember--I am <EM>not</EM> a lawyer, and you shouldn't take
|
||
|
anything I say as legal advice. Hire a professional.</P>
|
||
|
|
||
|
<H2><A NAME="discourage">GPL'd libraries may discourage people from using
|
||
|
GNU/Linux</A></H2>
|
||
|
|
||
|
<P>In the past twelve months, lots of people have started to look at Linux.
|
||
|
It's cheap, it's free (speech, not beer) and it runs all their Unix
|
||
|
applications. Really, there aren't many reasons against using Linux.</P>
|
||
|
|
||
|
<P>But let's pretend that most libraries for Linux are GPL'd. All of a
|
||
|
sudden, you need to write GPL'd programs, or choose a different operating
|
||
|
system. Unix vendors don't tell you what license to use. Not even Microsoft
|
||
|
tries to tell you what license to use for your software.</P>
|
||
|
|
||
|
<P>As much as I love Linux, the choice is easy. Everybody I know would throw
|
||
|
out their Linux servers, and migrate to Solaris or Windows NT. Not good.
|
||
|
Saying "to use our product, you must use our license" is pushy, and not
|
||
|
many people would agree.</P>
|
||
|
|
||
|
<H2><A NAME="which">So I'm a free software author? Which license should I
|
||
|
use?</A></H2>
|
||
|
|
||
|
<P>It's your library. Think about the issues, and do whatever you want.</P>
|
||
|
|
||
|
<HR>
|
||
|
|
||
|
<P><A NAME="bsd-note"><STRONG>Note about the BSD License</STRONG>:</A> The
|
||
|
BSD license contains an "advertising" clause, which can cause <A
|
||
|
HREF="http://www.gnu.org/philosophy/bsd.html">all sorts of stupid
|
||
|
problems</A>. If all goes well, my employers will drop this clause from
|
||
|
their license soon.</P>
|
||
|
|
||
|
<!--===================================================================-->
|
||
|
<P> <hr> <P>
|
||
|
<center><H5>Copyright © 1999, Eric Kidd <BR>
|
||
|
Published in Issue 38 of <i>Linux Gazette</i>, March 1999</H5></center>
|
||
|
|
||
|
<!--===================================================================-->
|
||
|
<P> <hr> <P>
|
||
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
||
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
||
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
||
|
ALT="[ FRONT PAGE ]"></A>
|
||
|
<A HREF="./rogers.html"><IMG SRC="../gx/back2.gif"
|
||
|
ALT=" Back "></A>
|
||
|
<A HREF="./veselosky.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
||
|
<P> <hr> <P>
|
||
|
<!--startcut ==========================================================-->
|
||
|
</BODY>
|
||
|
</HTML>
|
||
|
<!--endcut ============================================================-->
|