Fog Creek Software
Discussion Board




GPL Newbie Question #1

Does the GPL only require the "related" source code to be made available UPON DEMAND; and only if the demand is made by some 3rd party?

Or

Is does the GPL required us to physicaly distribute the "relevent" source code WITH the distribution of the binaries produced from said GPL soruce code?

Grouchy Programming Loser (GPL)
Tuesday, December 16, 2003

On demand, though you need to include the notice stating the license terms with your application (including it as a text file in the application's installed directory is fine). 

Distributing via WWW/Internet is allowed, but the link must work for at least 3 years.  Or you can distribute by CD or DVD or other media (for which you can charge a small copying/shipping fee from those who ask for the source).

And while you only need to distribute the source (on demand)  to those whom you have distributed the binaries, those people can go and redistribute the source to other people if they really want to.

Mr. Fancypants
Tuesday, December 16, 2003

Section 3 of the GPL is pretty clear about this.

mb
Tuesday, December 16, 2003

Note that you must distribute the source to "any third party" if you choose to do it on demand.

mb
Tuesday, December 16, 2003

Similar newbie question, what if I use a GPL library, do I have to distribute my own code too?

Off to RTFM :)

Lee
Tuesday, December 16, 2003

If you use an LGPL'd library, no.  Hence why many call it the Library GPL.  You would, of course, still have to release any changes you made to the LGPL'd library itself.

If you link in a GPL'd library, yes, your code must be under the GPL as well.

There are various ways to get around having to release your code as GPL'd if the library is under GPL and not LGPL.  For instance, if you keep the GPL'd code in a server process which responds to requests from your main process, you would only have to GPL the server process.  Likewise, if you are doing a shell execute on a GPL'd program, your source is not linking with the GPL'd binary, only calling it.

Richard P
Tuesday, December 16, 2003

Keep in mind the GPL only applies once you start to distribute your code.  Most of the GPL code we use isn't distributed, its used in-house on local web projects, so we don't have to distribute our changes.  That doesn't stop us from submitting bug reports and patches though.

Andrew Hurst
Tuesday, December 16, 2003

Actually the whole GPL linking issue is thornier than Richard P's post makes it out to be.  If your program is relying on the functionality of a GPL program, the FSF would argue it constitutes a derivative work and must fall under the GPL even if it isn't specifically linked at compile time.  Whether or not this view would hold up in court in an unknown.

Mr. Fancypants
Tuesday, December 16, 2003

Er, "is an unknown". 

Also, the point about not having to care much about the GPL if you never distribute your binaries is true.  There has been talk of future versions of the GPL closing the "Application Service Provider" loophole, but the current license allows for that.

Mr. Fancypants
Tuesday, December 16, 2003

And for my last word on the subject: You should either embrace the GPL or not use GPL code at all. 

Trying to find cute little loopholes around it is a bad idea.  There's plenty of useful code licensed under other licenses such as BSD that you can use without being shady or forcing yourself into a position where the choice of licenses for your code is made for you (such as it is when you link with GPLed code).

For me, the freedoms the GPL strips away from the developer are too bothersome to deal with, but I respect other people's rights to release thier code as GPL and believe other developers should respect their intent and not try to find some legal loophole to use the code in a way the author was specificially trying to prevent.

Mr. Fancypants
Tuesday, December 16, 2003

sometimes authors don't necessarily intend all the political reasons behind the GPL, they use it because they've heard of it.

if it's a single author, you can always negotiate a different license. a much better option than sidestepping things.

mb
Tuesday, December 16, 2003

Why are you asking here? Is this JoelOnLaw?


Wednesday, December 17, 2003

The GPL is a virus! :-p

Brad Wilson (dotnetguy.techieswithcats.com)
Wednesday, December 17, 2003

Cyrus the virus, truth is a virus.


Wednesday, December 17, 2003

*sneezes*

Simon Lucy
Wednesday, December 17, 2003

OMG! They GPL'd Simon Lucy!


Wednesday, December 17, 2003

Mr. Fancypants,

Any supporting evidence for the assertion that the "FSF considers anything that depends upon the functionality of GPL'd program to be a derivitive work"?

Everything I've read indicates that a client-server or piped IO interface most definitely does NOT create a derivative work.

A web browser is most certainly not a derivative work of a web server.  Tomcat is most certainly not a derivative work of IIS, yet they can be set up as a single application where they both communicate using a Client/Server model.  (Yes, I know, Tomcat is not GPL, but for the sake of this argument it wouldn't matter if it was).

Likewise, a program that uses a system exec() call to execute "tar" does not care if that tar program is GNU tar or standard Solaris tar.  In no way can it be construed to be a derivative work of GNU tar.

And I dare you to find any evidence whatsoever of the FSF harrassing someone over any such use of GPL'd software.

In fact, if your software dynamically loads a library that conforms to a specified API, does not ship with the GPL'd library, and there exists a non-GPL'd library which will work with your program, then you are not requried to release your work under the GPL.  No matter what the GPL states, it cannot extend to situations where there just happens to be a GPL'd implementation of the standard libraries you are using.

Now C programs are in a kind of grey area because .h files can contain actual code (or at least macros which a Judge might deam code).  But if, for example, you write a Java program which dynamically loads a library using Class.forName() (like a JDBC driver, which may or may not be GPL), there is no way the GPL can apply to your code simply because of that call.  It would be a harder, but still winnable, fight if you are loading a namespace like "org.gnu.something".

Richard P
Wednesday, December 17, 2003

If I remember there where long debates about the Java case and I believe the conclusion was that for Java the FSF ruling was that even LGPL carried all of the GPL restrictions.

Just me (Sir to you)
Thursday, December 18, 2003

*  Recent Topics

*  Fog Creek Home