Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
GNU is Not Unix

GPL/LGPL Issues - Moving GPL'd Code into Libs? 203

QuantumG asks: "What happens when someone writes a program and releases it under the GPL and then someone discovers that the program contains useful portions of code that really should be in a separate library that should be under the LGPL. One cannot simply pick up GPL'd code, make it into a library and release it LGPL. That would violate the GPL, right?" Would it? Hit the link below for more.

"Here is an e-mail I fired off to the leader of MaPlay 1.2+ for Win32, an MP3 player for Windows asking his opinion.

Date: Sat, 29 Jan 2000 17:53:27 +1000 (GMT+1000)
From: Trent Waddington 
To: ctsay@pasteur.eecs.berkeley.edu
Subject: MAPlay & Licenses

Hello.  I have been looking at MaPlay 1.2+ for Win32 and have been
very impressed with it.  I have taken the base code and added a simple
API to it (and removed playlists and such) and recompiled it as a
DLL. Now the question becomes one of LGPL vs GPL.. If I use the DLL in
a program to play MP3 files, am I then required to release the source
of that program under the GPL?  Obviously if I wrote a trivial WinAmp
like MP3 player frontend and used the DLL as the backend I would
personally expect that to be released GPL.  However, let's suppose
that I write a game and instead of using a bunch of enormous WAV
files, I MP3 compress them and use the MaPlay DLL to play them.  This
to me sounds like a case for LGPL, but the DLL is a "derived work" of
a GPL'd program and, as such, cannot be released under anything less
liberating than it.. is LGPL *less* liberated than GPL or *more*?
I don't think using MaPlay code to play MP3 files instead of WAV files
justifies that an entire game's source tree must be GPL'd.  Obviously
it should be for Open Source reasons but is the enforcement of GPL
valid?

I would personally be interested in knowing how the programmers of
MaPlay would feel if the MaPlay source was (hypothetically) used in a
game that was closed source.  Assuming there was something in the
about box / ending credits saying that the game used the MaPlay source
and that the source (to the player code) was available at the MaPlay
web site. Would you feel ripped off?"
Can anyone unravel the LGPL and GPL issues inherent here to help him out?

This discussion has been archived. No new comments can be posted.

GPL/LGPL Issues - Moving GPL'd Code into Libs?

Comments Filter:
  • by Anonymous Coward
    Quoted from the GPL license:
    These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works.

    If you stuff things into a library, you are using the library, not deriving from it. Therefore identifiable sections of your program (namely: anything that is not in the library) are not derived from the GPLd library, and are therefore not covered by the GPL as long as you distribute them as separate works. In other words, I can write a closed-source app, distribute it, tell people that in order to actually use it they need get GPLd software X first, and there's not a damn thing the FSF can do about it.

    You GPL zealots really need to read your precious license sometime. It is deliberately vague and open to many interpretations. The only way to get this settled is for some deep-pocketed company to take the FSF to court over it. Hopefully that will happen someday soon, it will make these pointless discussions a lot simpler...

  • by Anonymous Coward

    Regardless of whether you put code in a library or not, the GPL is the GPL and must be abided by. There is nothing stopping you from using the GPL for libraries (see GNU readline for example), it's just that the LGPL is less restrictive, esp. wrt proprietary apps.

    So anyone who wants to make a library from GPL'ed code and release it under the LGPL would be wise to ask the origninal author(s), as this is the ethical and legal thing to do.
  • by Anonymous Coward
    A random grammatically correct sentence generator couldn't have confused me any more.

    - "principle and honor -- words you can't even spell [..]" Huh? You guys known each other for years, or what? No, couldn't be, you're a set of A.C.'s so there is no way AC #2 could've regognized AC #1 UNLESS he can make up PERSONAL CHARACTERISTICS out of < 1k ASCII, which COULDN'T BE, because random gramatically correct sentence generators usually have no such function.

    - "[ESR vs Nazi blah]" Is there so much info available from his homepage, or ARE you ESR? Case 1: you might be biased; case 2: you might be biased;

    - "The implicit threat of violence deters criminal behaviour" Have you been in the army, that you have learned such useless dogma's that have NO practical value?? Here, see:

    violence == criminal behavior; /*true, right? */
    violence++ == criminal behaviour--; /*NON SENSE*/

    PLUS: Bruce Perence is NOT A CRIMINAL (AFAIK) but a free software fellow. So I think it's time for a big a-DOH!! a-DOH!! (a nosy noise that only VERY confused people make)

    -- "Gun ownership is his duty as a citizen" Yeah, what's next: "hello officer" "Citizen! where is youre roll of toilet paper?" "my roll of toilet paper, officer?" "yes, didn't you know, wearing a roll of toiletpaper is your duty as a citizen. Have you done your hoola-hoop this morning?" "Excuse me?" "Don't you read constitutions, citizen? I'll have you arrested for not wearing toilet paper PLUS not having done your hoola hoops this morning."
    ... if crap like wearing a gun is not only considered a *hobby* but a DUTY as well, geez... You're not running Prez for the Democrats are you?
    The land of the free... well, I am glad that I don't NEED to understand that.

    -- "secessionism [..] look it up" I did, and I found 3 lines of bloat about the thingy war (Burgeroorlog, I won't translate it back). Geez, I hate it when people post internationally confusing messages.

    -- "you'd be lying if you did so" Oh, are there general rules for personal viewpoints? When did *they* pass into law??

    -- "the sacrifice of infance is a private matter, a cultural quirk which need not concern you" I hope that I understand this one entirely WRONG. Broken Pipe. Shock. Fatal error.

    Resume:

    Things that are sure:
    - ESR shoots guns. This is true, and can be found on his homepage. Like it or not. I don't. Yet, I don't have much to say about this.
    - ESR has got some religion. Well, face it, he is not the only one.

    Things that are not sure:
    - ESR threatened Bruce Perens. I have found no evidence.
    - ESR does cruel things with orphans as part of his religion (I cannot believe I write this). Please tell me this is a joke.

    It would be nice if we got these things really clear, because they are grave accusitions.

    As for the rest (specifically the complete reply from AC #2): non-information, dogma's, so-called hard facts without any basis. I refuse to swallow this.

    Post as AC or not? I deceide to post as AC. For three reasons:

    - I am totally not sure if you aren't DANGEROUS (really)
    - This is NOT worth spoiling my karma :-) But OTOH it HAD to be posted. I can't allow you to post such garbage without getting negative feedback. If you think I should, read your bloody constitution again, also I have some free speech.
    - Deep inside I HOPE that I have been ignorant, either totally misunderstanding your mail, or being trapped in some kind of sick joke. While I hope that that is true, I am not planning to loose my face on it :-)

    Peace, man :-PPPPPP
  • by Anonymous Coward
    I am not a lawyer, but I've spent quite a while talking with them about licensing. It's actually not very complicated.

    One thing to note is that in grey areas, trouble and illegal are not the same thing. If the copyright holder gets annoyed with what you are doing, then even if you can persuade a judge that the copyright holder has granted permission for you do do what you are doing, you still end up with the hassle of going to court and talking to the judge. So talking to the copyright holder, as you have done, is usually a wise idea.

    However, according to standard interpretations of the GPL, what you're doing is in fact allowed.

    The important point is that you've made a DLL. Linking the GNU GPL'd DLL with a front end does indeed produce a "derivative work". However, the GNU GPL does not prohibit you from making such works. It only says that if you with to distribute such a work, you must apply the conditions of the GPL to the whole of the work.

    However, the derivative work you are making is ephemeral and will not be copied. Instead, each user re-creates it. You'll see discussion of this "hole" in the GPL under the heading "user does the link" in the early days of the GPL. It's basically what you're doing.

    There was one historic bit of argument when some people wrote some non-free applications designed to be linked to the (then-GPLed) gmp library. RMS argued that designing it to work only with some GPLed code like that made it a derivative work, and the argument persisted until someone whote a non-GPLed library with the same interface, so it could be used independent of the gmp library. (The gmp library was faster, and thus preferable.)

    I think that was a poorly chosen argument, because it would imply that every program written to interface to a proprietary OS is derivative of the that OS, which is not somewhere I want to end up. The argument didn't get much respect, anyway.

    But even if one accepts it, you wrote the DLL interface, so it makes it somewhat awkward to sue you for calling your own code. Even if the GPL doesn't allow it, you are free to grant yourself (or anyone else) additional permission to call the code that you wrote.

    The interpretation that it's permitted is supported by Linus's interpretation of the GPL with respect to Linux and binary-only kernel modules. He feels that as long as they're dynamically linked, there's not a problem.

    The LGPL is designed for the case where you want to use a linker to combine free and proprietary code in the same binary image. As the GPL says, just putting files on the same storage medium doesn't count as making a derivative work.

  • by Anonymous Coward
    I don't see why a library-ish part of any GPL'ed software should be republished under the LGPL. LGPL is for special circumstances only. I recommend reading Why you shouldn't use the Library GPL for your next library [gnu.org] by Richard Stallman.
  • by Anonymous Coward
    Lots of folks have commented that you can break the GPL by "making the program into a dll and linking it at run time." (or something similar).

    They have failed to mention that you can also extend any GPL program with dynamic linking configuration options, release that new modified
    version under GPL and then release propriatary dll modules for GPL'd program.

    I've done this with mawk and it works out very nicely.

    So there.

  • "If the authors have the right to pull the GPL, then wouldn't they have right to make previously free code closed source?"

    Not quite. Whatever *new* copies the author of the code puts out could be put under a proprietary license by the author, but the copies of code that have already been GPL'd are still GPL'd.
  • What if I call the DLL from a commercial software I bought? Say I write a winamp (winamp's source isn't available freely I assume) plugin wrapper for a GPLed mp3 player, and release the wrapper as a GPLed DLL with source. Doesn't seem anything wrong with that so far, right, since everything I wrote I release with source as GPL?


    But, then anybody could use the GPL wrapped library together with the closed source frontend. I just reread the GPL, it says nothing about use of the software, it only tells how you may distribute the GPLed software.


    Is this a bug or a feature in the GPL, or am I just too dumb to understand it?

  • I thought all they really had patents on was the psychoacoustic model they use, but their lawyers just hate everybody.

    Anyone know (or have a good guess?) how legal mp3 encoders that don't pay them the "mp3 encoder tax" are, why, and which patents are being violated?

    ('cause I sure don't. :)
    ---
    pb Reply or e-mail; don't vaguely moderate [152.7.41.11].
  • Getting someone else to change their license isn't that hard if they're the only people who own the code. With a GPL'ed app, though, you'd need to ask all the contributors, which is a mess. I hope it works for you.

    If it doesn't, though, there's always freshmeat, and there are lots of audio libraries out there, some of them GPL'ed, LGPL'ed, and whatnot.

    I would love to see someone working on porting Cubic (now OpenCP) to Linux, it already runs under DOS, and "runs" under Win '95 too, and they've been planning on porting it to Unix, but I can't wait that long! :) [cubic.org]

    There's the Open Source Audio Library Project [sourceforge.net], which is LGPL'ed, and unfinished but has a plan and some code to hack on... And apparently they use mpg123 [mpg123.org] for their mp3 routines, which does not suck. Don't believe the hype, if it isn't the fastest decoder, it's one of the fastest, really.

    There are some nice looking mp3 libraries in the "free to use but restricted" category. Since I don't know what your requirements are, I figure I'd mention that.
    ---
    pb Reply or e-mail; don't vaguely moderate [152.7.41.11].
  • You GPL zealots really need to read your precious license sometime. It is deliberately vague and open to many interpretations. The only way to get this settled is for some deep-pocketed company to take the FSF to court over it. Hopefully that will happen someday soon, it will make these pointless discussions a lot simpler...

    I doubt that the GPL is deliberately vague. To my (non-lawyer) reading, it's actually quite clear and precise. Yes, it's true that a lot of people misunderstand it, but I think that that's due to people reading what they want to read (on both sides) into it.

  • If the original author had produced the program with a license resembling the X or BSD license, this would not be a problem now.

    Perhaps the author WANTED this to be a 'problem'.

    Personally, I would object to someone using my free code to help them make proprietary code. If they want to release proprietary software that may one day become an annoyance to me, they get to be annoyed by proprietary code as well.

    The author of MaPlay might or might not feel the same way. Perhaps a different licen$e can be agreed upon?

  • This is a facinating discussion; I find it doubly so, since I had to deal with this issue myself as I made a new license for Omega and persuaded the previous contributors to accept it. (In case you're wondering, I used the LGPL, and defined the terms such that new levels could be made and released under some other license.)

    If applications are derivative works of the libraries they reference (which is what I believe you are asserting) then third party GPLed MS Apps would be derivative works of MS Windows.

    I don't think that's what he's asserting; he's simply pointing out that the GPL makes at least _that_ much explicit: system libraries don't count.

    It seems to me that he has a very strong case; if the GPL is explicit about certain libraries _not_ counting, doesn't it seem reasonable that other libraries _do_ count?

    Yes, the executable is under the GPL license. That's really fundamental

    I do not believe this to true. For a start some (most, all?) GPL binaries on my system do not contain the GPL notice (and many of them are not part of some larger package that is GPLed). I have many GPL binaries on my system that are clearly not GPLed.


    Whoah here. There is NO provision in the GPL that claims that it only applies to binaries which include the GPL (or something of the sort); in fact, to the best of my recollection, there's no provision for a "GPL notice" (to use your term). A license is made to a _person_, not to a program; the author is NOT making a three-way legal contract between a program, himself, and you, but rather a one-way license which gives up some of his rights (but retains some others).

    _You can't run, or even copy into memory, the binaries if you aren't licensed to do so._ It doesn't matter if the binaries have or don't have the entire text of the GPL. You MUST have permission. And having gotten that permission (through the GPL), you're free to do so, regardless of what text the program contains in it.

    This is bad but it is not the only bad thing there are several other severe problems with the license too. I can list some of them if you like

    No thanks. I know what you mean; I don't care for the GPL in many ways, and I seem to recall Bruce (the person with whom you're arguing) having similar problems.

    My main problem isn't actually with the GPL itself; it's really with a certain class of the people who advocate it (mind you, I'm NOT making this allegation about GPL defenders in general): some people strongly and stupidly believe that anyone arguing against the GPL is trying to steal source code and use it for proprietary gain.

    DUH.

    That sounds like a strawman, but I've seen it written SO often it's scary. It's often written in INCREDIBLY strong terms.

    Put in more rational-sounding terms, the GPL is often described as being "about freedom." So it is, and it's an honorable fight. But it's not the only way to fight, and it's not the way I choose to fight. I personally believe that freedom is achieved not by writing laws which claim to forever make tyranny impossible, but rather by each and every person remaining eternally vigilant.

    -Billy
  • Sorry. That should be "the last part of Point 1 is partially incorrect, and misses an important use of the LGPL".

    --

  • Point 1 is also incorrect. The LGPL was actually invented to address the issue in point 3 -- it allows you to make a library that non-GPL'd programs can link with. This is obviously less desirable from the "viral" standpoint, but is a nice compromise for many cases.

    --

  • Unless I'm blind, no one else has mentioned this. Odd.

    OK straight from the GPL itself. Section 10:

    10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

    I don't think you can state it any more plainly: ASK THE AUTHOR FOR PERMISSION.
  • It's very simple. Short of requesting a change of license from the author, if you decide to derive a library from someone else's GPL'd work you must meet the terms of the original license. Many libraries are released under the GPL... the LGPL now stands for "Lessor General Public License", and any reference it may have had to "Library" has been removed at rms's request. Please see the GNU Licensing [gnu.org] page for details on the differences between the GPL and LGPL, as well as Project GNU's philosophy behind each.
  • I think you're going about this the wrong way. Instead of considering what you might be able to get away with in a court of law, please consider what the wishes of the other copyright holder are and what you can thus do ethically with his code. I would hazard a guess that he would not like what you are doing with his code in your proprietary program regardless of how you are linking or server-izing his code. Think of how you would feel if he played fast and loose with your program.

    Why not contact the authors and negociate for a commercial license to their code? If that doesn't work, please consider their wishes and either GPL, LGPL, or MIT-license the whole thing, or write their property out of your program.

    Thanks

    Bruce

  • Gee. Please be sure you have a clue before wielding the stick. His comment was germane - the questioner seemed to me to be confused regarding the need for the LGPL simply because something is a library.

    Thanks

    Bruce

  • I think one could prove in court that this was a dodge aimed at circumventing the license terms and nothing else.

    And regardless of the legal realities, it's a sleazy thing to do. You do want to be able to sleep well at night, don't you?

    Isn't it funny that although libreadline is far from rocket science, it's been a stumbling block for a number of programs? Nobody's bothered to write a competent replacement, can that be right? And they call us whiners instead of coders?

    Bruce

  • Yeah. This is not an answer that you arrive at democraticaly, at least the way democracy works around here. Some of the folks here don't know a license from a sandwich. Fortunately, you can get some idea which is which from their comments.

    Bruce

  • Did you see that Ogg Vorbis compression scheme (search Slashdot). It avoids the patent, is said to perform as well as MP3, and can be improved beyond that.

    Bruce

  • MIT-license works and public-domain works can be linked to GPL libraries. The key is whether or not they impose license restrictions not present in the GPL.

    Bruce

  • No court has ruled on IPC vs. dynamic linking vs. static linking. I personally would like to see the GPL tightened up regarding dynamic linking and IPC. But this is complicated to do fairly, and should not be done in haste.

    Bruce

  • I don't think this is a valid argument. If what you are saying were true then people couldn't create GPled apps that link against proprietary libraries (eg GPLed apps on windows)

    With all due respect, had you read the GPL you would have seen that it explicitly makes an exception for standard facilities distirbuted with the compiler and operating system. I wish people would at least refer to the darned thing while arguing.

    You argument also has an implicit assumption that executable form of the application is GPLed, and I don't believe the text of the GPL supports that. (That's another argument entirely though).

    Yes, the executable is under the GPL license. That's really fundamental - there would otherwise be no compulsion do distribute source. If it's not GPL-ed, it's All Rights Reserved, so this would gain you nothing.

    I am afraid I can't, at present, grant that you are competent to discuss the GPL at all. Please read up and try again.

    Thanks

    Bruce

  • Stallman and I have discussed this. Currently, the GPL doesn't handle CORBA very well at all, and I would like him to deal with the problem. Whether or not you could prove that an application is derivative would depend on the application.

    Thanks

    Burce

  • This is a cop out.

    You know, courts do consider intent.

    I am not responsible for the GPL text and have suggested several improvements to RMS, to no avail so far. If it gets bad enough I will write my own license, but I don't want to add to license proliferation unnecessarily.

    Thanks

    Bruce

  • Using a GPL'd library in ANY way, is legal.

    You're making a very selective reading. The form of use you postulate is actually derivation, and thus you have to heed the language regarding derivation.

    If you really made a BSD-license library that actually did the work and distributed it freely, you could get away with the postulated scenario.

    However, if it happened that your library was a mere stand-in, something so insufficient that the GPL version would always be used by your customers, or if its license terms or distribution were such that you could not reasonably assume that the user would make use of your library, it would be easily demonstrable that your library is simply a device for circumventing the license.

    Also, shipping a library with a product that makes use of it does not satisfy the definition of mere aggregation. Aggregation applies to unconnected products.

    Thanks

    Bruce

  • The LGPL includes the GPL by reference, which is why it's in that directory. The idea is that you can, at any time, convert a LGPL work to a GPL work, as specified in the LGPL itself.

    But the Linux C library very clearly is under the LGPL. Believe me, we've checked that out very carefully.

    Thanks

    Bruce

  • I don't think his point 1 is incorrect. The LGPL is an option for libraries, or really for any code. It's not necessarily the best choice for a library or anything else. Sometimes you want to apply the GPL to a library, sometimes the LGPL, sometimes another license.

    Bruce

  • The issue of API copyright is entirely separate from the copyright of the library. You could have two interchangable libraries with the same APIs, and using one could be infringement while the other would not, depending on the library licenses.

    Also, the GPL claims no rights to anybody else's code. It simply disallows use of GPL code with programs under most software licenses. If you don't like the GPL, you simply should refrain form using GPL components in your programs.

    Thanks

    Bruce

  • I'm afraid you're incorrect. Dynamic link executables contain pieces of the library and headers that they are linked against. In addition, instead of distirbuting the pieces together, you are distributing a program that contains instructions to the user's computer that cause it to put the pieces together as if you had distributed them together. This would probably be viewed by a court as a device with the express purpose of circumventing a license restriction, and thus would be considered equivalent to static linking.

    Thanks

    Bruce

  • In this case dynamic linking would be considered a device explicitly used to circumvent a license restriction, and would most likely not be allowed.

    Thanks

    Bruce

  • The LGPL does have its uses, despite RMS' deprecation of it.

    Sure it does! We use it for most of the libraries on Linux, for gosh sake! It's because we explicitly want people to be able to create proprietary applications on their Linux systems.

    Was anybody arguing with that?

    To me, that's what free software should be about, a way to facilitate the free sharing and communal improvement of your code, not forcing others to do the same if they don't want to.

    Well, consider that there is another sort of forcing. I don't want someone to force me to participate in their proprietary product, with no compensation on my part. But that's what happens when somebody else includes my code. So I use the GPL to protect from that. If they want my code in a proprietary product, they can pay me for a commercial license. Thus, the GPL actually promotes payment for use of my code in this case! Nasty, pro-commercial GPL! :-) . Now, with most librarary work I do, I've waived that protection and used the LGPL so that producers of proprietary stuff will be able to use my code. It's a choice that I make as copyright holder every time I write something.

    Thanks

    Bruce

  • If the copyright holder intended his work to be used in a non-GPL work, library or not, he would have applied the LGPL to it. He didn't. Thus, you are free to library-ize the work and leave it under the GPL, and put your GPL program on top of it. Producers of proprietary software should negotiate a commercial license or request that the copyright holder LGPL his work.

    Let's not forget that commercial licenses are an option. The fact that the GPL is on something doesn't prevent you from negociating for one.

    Thanks

    Bruce

  • By preventing closed-source modifications, all you do is limit the number of choices available on the markey.
  • On the other hand, it is easily argued that most laws are unethical (for instance, laws about drug use and prostitution).
  • The lex clone was done by Lawrence Livermore Labratories, a group that works primarily with Berkeley.
  • If the original author had produced the program with a license resembling the X or BSD license, this would not be a problem now.
  • The type of intermediate GPL already exists. To use it, put your work under the GPL and then say "As a special exception, you may also do foo, where foo is replaced by whatever you want to permit (e.g. link with MPL or QPL code).

    Note that the copyright owner is the only one that can add exceptions, and for works with many owners, all the owners have to agree

  • You said.

    3. Any closed source programs that you make which reference the library do NOT have to be GPL'd and their source does NOT have to be open, but of course, it would be better for everyone if it were.

    The GPL does not clearly indicate what is vs. what is not a derivative work in all cases, at least as far as the actual text of the license. While the text may be clear to a lawyer, it is not clear to me. However, what is clear to me is that the general understanding of the implications in the discussions I have seen in the Free Software world is that linking against GPL code is only legitimate if your code is also under the GPL. Thus this library, under the GPL, _requires_ your code to be released under the GPL, unless you choose not to link against it (use it) in your program.

  • I am not a lawyer. But I found an archived Slashdot article [slashdot.org] that discusses these issues. In the main article, Bruce Perens notes that the issue is a little more complicated because the GPL combines copyright law with contract law. Later in the comments (look for comment #45), an actual intellectual property attorney weighed in on the matter. Worth a read.

    If linking is creating a derivative work, don't link. Let the user do the linking.

    This has been discussed in the past, and I believe the concensus was that the application would still be a derived work by virtue of being intended for use with that particular piece of code. (Same goes for libraries that are only available in GPL form.) On the other hand, this theory may not withstand a legal test...

    I don't think function names are copyrightable at all. Otherwise projects like WINE would be in a big trouble.

    This is a good point. If Microsoft can't stop us from imitating their APIs (and I'm sure they would if they could), why should we expect to be able to protect our APIs? I don't know what the answer to this is...
  • Here's a hyptothetical. What if the GPL'd code were compiled as a library to match an existing proprietary API. The library could be distributed freely under the GPL, and proprietary programs which would just happen to work with the GPL'd code also be written and distributed with impunity.

    I am not a lawyer, but my understanding is that using an API which is specifically to access the GPL'd library makes the calling application a "derived work". If the application is coded to an existing API for non-GPL'd code, it cannot be said to be derived from the GPL'd code. Making a glue layer to translate the non-GPL API to the GPL'd library's API would be new code covered by the GPL. Linking the application with that library, despite the changed API, almost certainly requires the application to be distributed under the GPL.

    If it's a shared library (DLL), the application can probably be closed, maybe even if the shared library is distributed with the application. If _only_ the GPL'd library is included, an argument might be made that the application is still a derived work; it might be necessary to include a proprietary shared library and leave it up to the user to replace it.

    Check with a real lawyer if you're actually thinking of trying this.

    On the ethical question of whether this is an okay thing to do, I'd say it's not. You may be able to find a legal way to do it (or maybe not), but legal != ethical. If you want to have the library used by a closed application, the best way is to convince the authors to relicense the code under the LGPL, which is explicitly designed for this purpose. Since they didn't use the LGPL, assume they don't want you using it with closed source. (On the other hand, if it didn't start as a library, maybe they didn't consider the possibility; they might be open to relicensing it...)
  • The GPL indeed wants to claim rights to code that merely links with GPL'ed software. While I understand the desire to do so, I think this sets a dangerous precedent because, in essence, it creates a notion of "API copyrights".

    If the GPL can claim this, Sun could claim that any code that "references" or "links with" their Java APIs should fall under their license, or Apple could claim that any code that "references" their OpenStep APIs should fall under their license. The POSIX organization might claim the same for the POSIX APIs, and Microsoft might claim it for Win32 (so much for Wine). There is also no reason why a license would stop at claiming "linking": if the "linking" reasoning applies, the expect or Perl script you write that is based on some licensed software might fall under its license merely for "using" the software if the license author writes that into their license.

    So far, thankfully, companies generally seem to have been unable to successfully claim rights over APIs. Let's hope that GPL'ed software won't set a dangerous precedent in this area. If the GPL claims are valid, I think they call into question the foundation of much of free software, since much of it relies on using APIs that are non-free and could have onerous API license terms applied to it if the vendor so chooses and if this part of the GPL is found valid.

  • For static linking, yes, it's pretty simple what "using GPL components in your programs" means and how not to do it.

    For dynamic linking, it isn't clear at all. I have understood RMS to have claimed in the past that if I distribute a program that is dynamically linked against a GPL'ed library, it falls under the GPL. (Once a binary compatible BSD-style library exists, then it doesn't, according to him.)

    How is that related to API copyrights? It isn't quite the same as an API copyright, but it is pretty close, because it basically says that I must put code under the GPL merely because it uses an API that falls under the GPL; the fact that I don't actually distribute binaries derived from GPL'ed code doesn't exempt me.

    "Don't use it" is, of course, the practical answer, but that's not the point. The point is that that the GPL seems to claim to be able to determine licensing for code that is connected to the GPL'ed software only through using its API; there is no copying or distribution of any GPL'ed code involved. And that's a dangerous precedent, I think.

    Of course, RMS may simply be wrong on the dynamic linking issue. But the question isn't as simple as you make it.

  • The author can always license GPL'ed code under other licenses if he so chooses. In fact, some GPL'ed packages are also licensed commercially under a completely separate license. The author of some GPL'ed software can also decide to license later versions of his software only commercially, something which has also happened. The versions distributed under GPL, of course, continue to be redistributable under GPL.
  • We've had a lot of discussion of copyright and licensing, and we're going o have much more.

    I humbly suggest that we try to use the phrase "reissue the software under a different license" rather than "change the license".

    It is more accurate. The original copyright owner can re-issue software and/or derivative rights under LGPL (or even a 'closed' license, to a commercial entity) without affecting the version issued under GPL. This is analogous to an author releasing a book in CD-ROM without affecting the rights of the hardcover purchasers. It's a 'reissue' of the existing work

    Of course, traditionally, this distinction was less important, but in UCITA states, like VA, the copyright owner has the right to *change* the license retroactively at will.

    We need the distinction between 're-issuing under a different license' and 'changing the (existing) license' if we are to fight the latter, or talk intelligently about either case.

    "Changing the license" is simply too misleading

    __________

  • so you could change it with the permission of the author.

    I just felt I should point out that it doesn't matter what license something is under if the original copyright holder agrees to change it. That is to say: the original copyright holder decides what the license is, no matter what the license may have been in the past. So, if the code in question were closed source under a typical EULA, and the author decided that he suddenly wanted to GPL it, he could! So, obviously, if you, as the copyright holder, want to allow someone to change the license, they can do so.


    Supreme Lord High Commander of the Interstellar Task Force for the Eradication of Stupidity

  • Yes, the GPL does prohibit linking a subroutine library into the program. But, i wonder how exactly it applies to a dynamically loadable library, which isn't "linked" with the executable except in the sense that the executable calls functions defined in the library. To my thinking, that could fall under the executing clause:
    The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.

    And the situation is even more complicated under WinDOS, since any executable needs to be linked specifically against the particular version of the DLL, making the situation one more of making calls into a library statically linked into the executable that just happens to be loaded from a separate file... In this case i think it would fall under the GPL.

    If i'm wrong, feel free to correct me.

    -----

  • The GPL is a license just like any other. It means what it says. Your only choice is to abide by its terms or not use the licensed product.

    I suppose it's possible that some people release code under the GPL without thinking about it, but I doubt that many do. Many of us - surely most of us - release code under the GPL precisely because of what the GPL requires of other parties who want to use the code, and we do not appreciate the continual attempts to work around those restrictions.

    It amazes me that this kind of question even comes up, let alone comes up so often as it actually does. People seem to think that the GPL is unfair, and that they therefore should be free to take it and do with it what they please. How can they imagine such a thing? If they got code from Digital under a nondisclose agreement, and then decided that the agreement was inconvenient and inhibited them from doing what they wanted to do, would they think they had some built-in right to unilaterally move the code over to another agreement that they found more advantageous?

    Of course not.

    --
  • Why build it in?

    Why not use the code to write a GPL'd sound server, and have your game link up with the server? In fact, this is probably the best design anyway, as the game can take the server down and reinitialize it without affecting game state (if you changed your sound settings, for instance).

    I don't understand everyones love for turning really complex things into libraries, but dread of making them deamons running in their own thread, where they belong. It is usually simpler to do it right.


    "Elegant, Commented, On Time; Pick any Two"
  • Statement 1 is not entirely correct. GPLed programs allowed to link to closed-source libraries as long as they are part of the standard distribution over which the program runs and no more restricted than the rest of the platform (which is why there are still so many GPLed windows programs that reference the win32 apis). What distinguishes LGPL code from GPLed code is that closed-source programs can link to LGPLed but not GPLed code.
  • <i>(glibc is GPL'd)</i>

    My Debian 2.2 documentation clearly states that glibc is LGPL'd.
  • yes.. I think someone finally hit on the piece of information that has slipped my mind. Once upon a time I would stand on the highest hill and say "you can not use my code to write non-free software".. if the GPL simply stated this it would embody the intent. The problem here is that I was doing contract work and I was trying to earn money. I could not find a free software project that would pay me so I had to do work for a closed source one. My hope was that I could do all my additions to the code as open source being that (in Australia) contractors retain ownership of their work.
  • Yes.. A submission I made to slashdot way back in Jan is now on the front page.. since then I actually got a reply from the author (which I can't find) who said "yes.. if you use my mp3
    playing code in a game you have to GPL the game" .. this reaks to me of the kind of stuff that RMS would hate because it FORCES people to use the GPL.. if they can't CONVICE someone to use the GPL and choose to resort to force they're not really the hippie fun loving guys we thought they were. I love free software.. but I love freedom more.
  • The question was one of ethics.. The ask slashdot was "what is your opinion?" or "is this right?", why can't slashdot readers generalise anymore. This is not about a specific case.. this is about software in general.. a game is not an extension of an mp3 player and as such, it does not automatically follow that a game which includes mp3 playing code that is gpl'd should be gpl'd. I think it is quite fair to praise the author, thank him for his mp3 playing code, put him in the credits of the game and add a REALLY BIG message to the game start up that says something like "This game uses xyz's mp3 playing code which is GPL'd.. if you want the source to this mp3 playing code, the web site is abc".. The email sent to the author was an attempt to feel out his wishes. I asked the question as I did so he wouldn't bother spending time quoting me the GPL (which BTW I have read in verbatim) and actually think about why he used the GPL. If it was his desire to stiffle any proprietory software (ever software where an open source license makes little sense, like a game) then obviously he would not waiver from the letter of the GPL, but if he just wanted to make it easier for people to play mp3's then he would issue a license. His response was the former, if you even breath on a line of my code your entire project must be GPL'd. The fact is that the core of his mp3 playing engine was copied line for line from the public domain mp3 consortium code.. so I just wrote my own player.
  • Put that way, the GPL is almost like a virus -- it tries to replicate itself in any program it touches. :)

    This is exactly why I called it the GNU General Public Virus 10 years ago, and have ever since. It is indeed a legal virus that contaminates everything it touches.
    --
  • By preventing closed-source modifications, all you do is limit the number of choices available on the markey.

    By preventing crime, and throwing criminals in jail, police limit the number of career choices available. Sometimes limiting people's choice is a good thing.
  • This is an extremely important question, one that I have long wondered about, and probably one of the most important brough up on Slashdot in some time. I've seen a lot of opinions both ways on this issue, both here, now, on Slashdot as well as in other places in the past, but never including relevant information from the GPL itself. What follows is my interpretation.

    It is completely legal to modify a GPL program, and redistribute it under the GPL. This is the fundamental point of the GPL. It is, therefore, completely legal to modify the program in such a way that it can be compiled into a library. It is most clearly not legal to take this, a derived work, and re-release it under the LesserGPL.

    What is at issue here is the status of a third program, written to take advantage of the library with e GPL license. I believe that this program is not bound by the GPL. Here are the relavant sections of the GPL that lead me to conclude this:

    From section 0 of the GPL:

    This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".

    Activities other than copying, distribution and modification are not covered by this License; they are outside its scope.

    Certainly the critical issue here is the phrase, derivative work under copyright law and the legal interpretation of it. Just because our hypothetical third application is not fully functional or usable without the GPLed library, does not necessarily mean that it is a derived work.

    This is further supported by Section 2 of the GPL:

    These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. [ ... ]

    Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.

    But, the critical phrase is the one I left out above:

    But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

    Therefore, the critical distinction comes as a result of distribution. If the GPLed library is distributed with the third program, then third program is infected by the GPL. However, if the third program is distributed apart from the library (separate tarballs, for instance) I believe that the third program is not infected with the GPL and can be released under whatever license the author desires.

    Several people have mentioned Section 10. I believe that section 10 can be used if the author of the third progam wishes to include the GPL code as part of his distribution. However, it is not a controlling issue of the author of the third program desires separate distributions.

    Of course, someone could just ask RMS for his thoughts on the issue...

    -p.

  • Simple answer is no.
    You can't link a GPL program to closed libraries, unless they are part of the base OS distribution.
    This is how you can write GPL code for OS's like Solaris or MS Windows.

    There were issues about this before, in the early days of KDE, back with Klyx and Kimp and stuff.
  • > proving that the LGPL actually have fewer restrictions,
    > and is therefore more free.

    But "free" is a word with multiple meanings, all of them vague as well. For example you could argue that a nation which drafted its citizens into an army which could repel a hostile invasion was free-er than a nation with no draft, which proved impotent against invasion. Or maybe not. Or that citizens who pay taxes, on official demand, to support a police force which makes it possible to walk the streets at night, is free-er than a country which has no police at all and the accompanying crime you'd expect. You might argue the opposite of that too.

    "Free" is commonly used to mean "unconstrained," or it could mean "unoppressed," two notions which are sometimes at odds. Excuse me for being so picky over just one word, but I've seen this same argument, based on one meaning of "free," elsewhere in comments to this article, where the word "free" is used as a solid building block in the foundation of a syllogism.

    Beside its literal meaning, "free" is also a really great cheerleading word. People love to hear the word "free," they thrill inside a bit whenever they hear it, which is why it is so often employed, in so bewildering a variety of meanings, in so much persuasive writing, such as Mr. Stallman's.

    If by "free" what you mean is no restraint, and if that's what you value the most, then it's clear that simple public domain is the way to go; anything less, any license at all, is an attempt to keep a grip on "your property." Not that there's anything so inherently wrong with the idea of "your property," when after all, you wrote it!

    Yours WDK - WKiernan@concentric.net

  • WRONG.

    You have to GPL stuff that uses the library and is distributed together with the library.

    There's an interpreter (called Hugs) for the functional language Haskell out there. It can be linked with the GNU readline library, which is GPL (rather than LGPL). Does it mean that Hugs is GPL now? No, its authors don't distribute readline, so its licence terms do not apply to Hugs.

    IF they distributed a compiled Hugs binary with readline, OR a source tree that combines Hugs and Readline, THEN GPL would apply.

    Of course they cannot take readline and magically convert it to use LGPL.
    --

  • I am not a lawyer, but my understanding is that using an API which is specifically to access the GPL'd library makes the calling application a "derived work".
    I believe this is wrong. If you do not copy the GPL'd code into your code, then GPL does not apply to your code. Remember, the code is copyrighted. GPL only grants you permission to do things that otherwise would be considered copyright infringement (i.e. copy the code). I don't believe that using an API can be ever considered copyright infringement. Using an API is not copying, in any sense.
    --
  • A GPLed program if free to link to whatever it wants.
    Fine. You have a GPLed library L0. Convert your non-GPLed program (P1) into a library (L1), release it. Write a small GPLed program (P2) that uses L1 and L0. All calls from L1 to L0 will go through P2.

    You will not be able to distribute all three components together. So what?
    --

  • Instead of considering what you might be able to get away with in a court of law, please consider what the wishes of the other copyright holder are
    I guess we must stop distributing DeCSS right now. [Sigh.]
    --
  • Isn't it funny that although libreadline is far from rocket science, it's been a stumbling block for a number of programs? Nobody's bothered to write a competent replacement, can that be right? And they call us whiners instead of coders?
    • libreadline is not a stumbling block at all (see my other post about Hugs)
    • there is a replacement, though I don't know how competent it is

    --
  • There's no difference between dynamic linking, static linking, and IPC as far as GPL is concerned.

    GPL permits you to copy things, if you agree to certain conditions. Nothing more, nothing less.

    If you write your non-GPLed app to call anything GPLed, and don't copy anything GPLed in the process, you may distribute your app provided that you don't distribute non-GPLed stuff and GPLed stuff together as a whole. The whole may be in the form of statically linked executable, or source tree. It doesn't matter.
    --

  • Sorry, I have to re-iterate. Mark this redundant if you wish.

    If Disney and Warner intended their work to be used fairly, they wouldn't put them in a format with encryption and region codes, and wouldn't sue people who distributed DeCSS. This does not mean that people who distributed DeCSS are somehow wrong.
    --

  • GPL does not disallow anything that you are allowed to do under copyright law. It allows you to copy stuff if you comply with its terms. It does not attempt to regulate activities other than copying, modifying and distributing GPLed programs. If you don't do any of these thing, you are not affected by GPL. Last time I checked, writing a program to a known API does not constitute copying.

    If you do copy GPLed code, then conditions of GPL do apply to things that you combine with that code. That is, if you distribute yourapp and gplapp and a script that contains "yourapp|gplapp" together as a whole, you may have to licence yourapp (and the script) under GPL.
    --

  • If linking is creating a derivative work, don't link. Let the user do the linking.

    I don't think function names are copyrightable at all. Otherwise projects like WINE would be in a big trouble.
    --

  • Everyone is screaming about UCITA granting too many rights to software vendors, but few people are noticing the absurd restrictions that they claim GPL places on code. I can't reference GPL'd libraries from non-GPL software? Why? A derived work means that I use the code, in a possibly modified form. But use isn't derivation.

    I can use EMACS to write a novel, but the novel isn't a derived work from EMACS.

    Assuming there was a video format that was supported only by GPL software, I could release a movie in that file format, that was unusable without the software, and the movie would not be a derived work of the software.

    If I dynamically link GPL'd system libraries in a commercial software product, it isn't a derived work.

    If I release GPL'd software that needs to call non-GPL'd libraries, I don't know how anyone could theorize that the libraries are a derived work of the software.

    The whole thing is part of RMS's "don't use software tainted by the sin of commercialization" campaign. RMS's dreams are not law. RMS's most recent wishes for what people would do are not legally binding. Only the text of the GPL and the realities of copyright law matter.

    The text of the GPL says "'work based on the Program' means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language." The original question seems to be just a sneaky way to create a derived work, if you are including the library with the program. On the other hand, if the library were already standard, then it wouldn't be. Assuming the GPL is valid, then it comes down to what the courts would consider a derived work. So ask for permission, or ask a lawyer. But even if it's technically legal, if you're just trying to swipe code without abiding by the author's wishes, you probably won't have much luck selling to the Linux community.

    --Kevin
  • The closest wins a /. baseball hat
    ___
  • If you're the author of maplay and want to do this, that's fine. You hold the original copyright. There IS some question about what happens if you incorporate patches from third parties into your code, but I suspect the original copyright holder can still decide what to do with the code.

    If you didn't write the original code, you can either release your stuff under GPL or write your own damn MP3 playing code. Keep in mind that the Frauhauf institute will want a piece of your action whether or not you're doing anything commercial, in the case of MP3s.

    Here's the obligatory "I am not a lawyer, but I play one on TV."

  • Thanks for the reply! Even though no court has ruled on the dynamic linking and IPC issue, what do the powers that be in the free software community feel about these things?
  • What if I take MaPlay's source code, and package it into a QuickTime component or an ActiveX control that might be called by proprietary closed source programs? If it is packaged as a QuickTime component, programs using QuickTime will think they can use the component like any other component installed in the system, so they will not be violating the GPL.

    Does this mean that packaging GPL code intosomething like a QuickTime or Active X component is not allowed since the GPL could be unknowingly violated by programs using QuickTime? Where does the GPL say that this is the case? Does anyone else find it silly that if you package GPL code into a separate program, and then communicate with it from a proprietary program through some sort of IPC, it is okay, but if you package it as a library, and call it from a proprietary program, you are violating the GPL?
  • > The groundwork for GCC was laid at Microsoft Research. Being responsible academics, the group at MR published their results, and Stallman, being a thief, plagiarized the work and took credit for it.

    Do you have any evidence? No offense, but you sound like a troll and flamebait. Sounds like you're sick of rms, but are afraid to stick your name on it. Please prove me wrong.

    > He's gotten away with this only because nobody in the "free" software "movement" has any formal computer science training at all.

    This, at least, is blatantly untrue. Not many people do, I don't, but there are some. If you mean "few", not "nobody", please say so.

    Evidence, links, documentation? Do I have the slightest reason to believe you?
  • ....that the abbreviation IANAL will be used 253 times.
    Be thankful you are not my student. You would not get a high grade for such a design :-)
  • no, it is not!!!
    it is under their licence, but not their copyright. what you wrote remains yours.
    the BSD license gives everyone the rights to use your code as they see fit, but it does not give them the copyright to your code.

    A software license is unenforceable without a copyright to back it up. Any modifications they make are derivative work, and fall under their copyright. (No, IANAL and never will be.)

  • of course.
    but they can not sue you for using your own code.

    True, but, they can take advantage of your generosity, then backstab you when you try to use their version of your program. At least with LGPL'ed software, you can clearly and distinctly separate their proprietary program from the part which is freely available to the rest of the world.

    Thus, you've allowed them to make proprietary programs, but any modifications to your code remain available for you to incorporate into your program in the future.

  • Nobody's forcing anybody to use the SOFTWARE in the first place. People complaining about the coercive nature of the GPL are literally saying that although they got something for free, that's simply not good enough. Somehow, I can muster remarkably little sympathy with this point of view.

    You've got a point, but you can be put in a situation where you've got to use a particular piece of software due to your job, etc. Ubiquity of any particular type of software means that somebody who can't stand it will have to use it.

    Or perhaps you've forgotten why so many of us loathe the Beast [microsoft.com].

    Ultimately, and I suppose this might answer the original story's poster's question, if I really wanted to mingle someone else's GPL'ed code into my proprietary software, I'd build a DLL under the LGPL which interfaces with both programs. A sort of "glue", if you will.

    The nice thing about that is, even though I'm (hypothetically!!) obscuring the code of the proprietary half of my program, I've still got to release the modifications to the original GPL'ed work (if I expect anyone else to be able to successfully run my program), and I've got to release the source to my LGPL'ed "glue" library, thereby defining a convenient API for anyone who wants to write a free replacement for my program.

    Net result: my boss is happy for the moment (he's just got a proprietary program out the door for a fraction of the development time), I'm happy (I'd've gotten a raise for my deviously ingenious scheme), and the rest of the world is happy (they're laughing because in 6 months, they'll have created a free replacement for my program, rendering it obsolete. Hopefully, by that time I'd be working somewhere else!).

    Ultimately, in my hypothetical scenario, I would have, IMO, helped rather than hindered the open source movement, by increasing the user base of a quality GPL'ed program, creating an open API for linking that program with others, and leaving the door wiiide open for others to replace my program with a free alternative. And tricked my employer into releasing an open API for their proprietary program.

    Granted, in this hypothetical scenario, I would have helped more if I just released my program under the GPL, but my hypothetical employer might be dead against that. (And in some states, any related work you do off the job can become the property of your employer. AFAIK, that's illegal here in California, but not everyone is that lucky.)

  • "[They] wouldn't be able to sue you because it's your original work. You can only patent original work. So not only would they spoil their patent but you could counter sue them for misapropiation of your work or plagiarism. That's why I like BSD licences. Though for the most part LGPL is de definitive patent for libraries. About other work, well GPL is good enough. At least that's what I think."

    Key words in your post: "At least, that's what I think".

    First, we're not dealing with "patents", we're dealing with copyright.

    Second, BSD-style licenses allow others to take your code and re-release it under their own licenses, including proprietary ones, or (even worse) a license that allows distribution of the source, but not granting the freedom to release your modifications. The new work is under their copyright, which means that they can sue you for using what was originally your work!

    Before you release your software under any terms, carefully review the license you choose, and fully understand it before you shoot yourself in the foot.

  • A DLL would be ok to link with proprietary software if it's under the LGPL, but not the GPL.

    Remember that Linux has shared libraries too ( .so == "shared objects", or something like that).

    Now, the LGPL lets your proprietary software call the functions in an LGPL'ed library, as long as it's dynamically linked. The GPL does not put up with that sort of thing.

    If I'm not mistaken, the proper term for "shared objects" is "dynamically linked libraries". Regardless of the platform, the idea is the same.

    (As for "a library statically linked into the executable that just happens to be loaded from a separate file"... umm... that sounds a lot like dynamic linkage to me.)

  • The Bruce Perens wrote:
    Sure it does! We use it for most of the libraries on Linux, for gosh sake! It's because we explicitly want people to be able to create proprietary applications on their Linux systems.

    Was anybody arguing with that?

    Nope. Although there was a time that I would have argued against that.

    What made me change my mind was a little company called Loki Games [lokigames.com]. Their products (a) make Linux more fun to play games on, and (b) increase the adoption rate of Linux among end-users. This in and of itself is a boon to the open source movement.

    Now, what enamored me with the LGPL was something related, the Simple Directmedia Layer ( SDL [devolution.com] ), by Sam Latinga, who just so happens to be the lead programmer at Loki Games.

    But what I'm suggesting in the earlier post is to use the LGPL not as a Library GPL, but as a Lesser GPL, and in fact release actual non-library programs under its terms. It seems to me to be the ideal compromise between BSD-style licenses and a full GNU copyleft.

    I mean, it is about freedom, isn't it?

  • Yup.

    When using ordinarily GPL (so not necessarily LGPL!) for a library, everyone can dinamically link to it.

    When using GPL for your program, everyone is free to put it in a library.

    Conclusion: when you write a GPL program, EVERYONE can use it in their proprietory code, as long as they are smart enough to make a dll from it, and distribute that dll freely.

    Whopee! Wonder when we'll see Microsoft(R) GIMP(tm) 2000 :-))


    It's... It's...
  • I don't think that it would ever hold up. Let's say I extract some code from a GPLed application and release it as a GPLed library. I then release my application, which dynamically links with the library, under an evil license.

    Conventional Wisdom and the official policy of the FSF would say that any program that links to the code would be a derivative and must be subject to the GPL. I think not.

    The restrictions in the GPL rely entirely on copyright. You receive a license to make copies and derivative works in exchange for agreeing that all derivative works will carry a license no more restrictive than the GPL.

    I don't believe that an API exposed by a library is copyrightable in that it is a "method of operation". Methods of operation are explicitly not copyrightable. I don't believe that the "derivative work" theory will hold up. In the industry, compiler vendors don't try to claim that programs you develop using their licenses are derivative works. You may have to pay a license fee to distribute their library with your application, but you can either distribute the required library or point to a source like Freshmeat for the user to go get it. I don't think that anyone will ever be able to force you to stop distributing your app or release your source.

    Anomalous: inconsistent with or deviating from what is usual, normal, or expected
  • Simple answer is no.
    You can't link a GPL program to closed libraries, unless they are part of the base OS distribution.
    This is how you can write GPL code for OS's like Solaris or MS Windows.

    Fortunately for us all, you have this exactly backwards. A GPLed program if free to link to whatever it wants. The issue is with a non-GPL program linking to a GPL library, because doing so is considered (at least by the GPL) to be incorporating GPL code into your program - which makes a kind of sense, since the code is combined at runtime. Therefore, if you link to GPL code, you cannot distribute the software except under the terms of the GPL.

    The LGPL is considered a "Lesser" license because it doesn't consider linking to be an incorporation of code, which means that software under any license, even a proprietary one, is allowed to link to it. That's why you usually see libraries placed under the LGPL - a library won't be successful, as in widely used, unless a variety of software can use it, which generally means allowing differently licensed software to use it.

    With respect to the original problem, note that the GPL doesn't forbid a proprietary program from ever linking to a GPL library. For instance, Netscape Navigator for Linux was developed with the Motif libraries, which are proprietary. Now, I believe that the LessTif libraries are under the LGPL ... but if I was to find a GPL library that implemented the Motif widget set, nothing would prevent me from running Navigator with this library. I could not, however, distribute Navigator with this library (and neither could Netscape, or anyone else). Nor could Netscape develop Navigator with this library without GPL-contaminating their code. But they used Motif; as long as I don't distribute Navigator with this GPL Motif clone, everything's alright.

  • Obviously You should get the authors permission in any case. But on principle if you made a game and used a GPL dll which you put a separate download to enable sound I think it would be fair. As usual, I'm not a lawyer so check before. And get a signed authorization faxed from the authors.
    /*Rant
    I've read the filosofical posture of the FSF and I don't really get it. I mean, the have this axiom: "Software should be free, as in freedom" (strange a language that don't distiguish gratis from libre.) But after a geek I'm also an economist (I know, but at least we have to learn dynamic optimization, chaotic systems and topology, which is a lot better than most other social sciences, besides I've been redeemed working as a CTO in a .com company) so I don't take such thing as an axiom.
    I believe that we should maximize the welfare of the society which is a function of the goods (a concept which I won't define yet) consumed (tip: axiom 1). I also believe in the greedyness of the human beings, not as an absolute value, but to a certain degree (tip bis: axiom 2). So I believe that we should enforce the property rights (tip: hypothesis 1. If you want to know why read Microeconomis, by Hal Varian.) This means that there should be property. I don't believe much in intellectual property, much less in the brain dead American law that let's you patent "anything manmade under the sun." Why? Ok, lets get to it.
    If we want to maximize the welfare we want to use the biggest technology set available in the know universe. So ideally anybody should get free access to the most advanced technics in each fields (this doesn't mean that AMD Dresden fab should be open to anyone, but it's plans and underlaying technology should, at least until this point). So, from this point of view, if we consider source code as a technology it should be on the public domain. But being the greedy animals we are, making huge investemnts of resources on investigating technology for the sake of it just doesn't seem compelling. Evidently we need some incentive to make research and development more interesting. So if we allow the developer of a new technique or technology to reap some of the benefits that his work has brought to society, we may have a more people willing to do R & D.
    Let's get to the software side of things. We can see a program as any other product, so let's think of it for a while (I wil try to discuss later a bit about the portions of a program, a tracendental point on this discussion.) It need a certain amount of resources to be designed, and another to be replicated. The former may be huge while the latter is insignificant. So what we have is that the cost of one extra unit of a program is basically costless. From microeconomics 101 we know that in order to maximize welfare the price of a good should equal the cost of the last unit produced (not exaclty, but close enough for a rant.) So from this point of view software should be costless. The problem comes from the huge development cost. If every all source code were in the public domain, then few programmers would work and programs which would increase the welfare would not be written even though the benefits to society are less than their cost.
    But if all software were commercial we would end up paying way more than the development cost (cough*Windows*cough). Even worst, a lot of consumers of the software wouldn't pay it, even though the cost asociated with their consumption is in practice zero. Worst yet, all programmers should reinvent the wheel for each new program (not to mention the added storage and debugging costs). But let's add pattents that allow to get property on trivial code. So you should license a printf() function! Developers wouldn't even have the chance to reinvent the wheel, they would have to pay for it every single time.
    Evidently, basic functions and algorithms should be almost free because all the other programs are based on those. But let's say that we have a huge company A that's competing with an even bigger company B. And a manager in Company A decides that they need a given software that's unavailable. That program means a lot of money to the, so they are willing to pay a lot for it. If they couldn't enforce their property on that software they wouldn't want to develop it because they would be investing money to get company B the same benefits without the costs. Or worst yet, some people simply like to own what they buy (not so crazy if you think about it).
    But let's suppose that company B want's to pay for that program too. If there's a patent they won't be able to use it. So company A would have an unfair advantage to company B. Which hurts competition and don't maximizes welfare.
    I'm letting the comments discuss my ideas while I continue to work. Don't bother to go my home page because I'm not posting this yet.

    Regards,
    Alejandro Belluscio
  • That this confusion arises at all is an accident.

    The LGPL was originally called the "Library General Public License", however RMS never intended it as "the GPL for libraries". To express his true intent, RMS renamed it the "Lesser General Public License.

    See http://www.fsf.org/philosophy/why-not-lgpl.html .

  • Thats exactly what LGPL is for. You see, with mandatory libraries like libc, it's would harm the development of opensource development if it couldn't be linked with propritiary software (YES, glibc is licensed under the LGPL) . But when it comes to libraries that are unique to free software(like readline), and not a seen as standard, it should, by RMS recommendation, be licensed under the GPL.

    It's totally wrong that you can dynamically link your propriarity-non-gpl binaries with the GPL software, the license explicitly disallow it.

    When it comes to making other communication methods to the GPL'ed library than dynamically linking it, it's getting a little in the grayarea, but your propriarity program would still use the GPL'ed code, if just not directly.

    If I wanted to use a GPL library with a closedsource project of mine, I would have offered the author a certain amount money to sell you a license, which you CAN use with your closedsource application.

    This is a very good system (I think), because while it give gnu software the advantage of being able to use GPL'ed libraries, it still permits commerical non-gpl software being used on a gnu system (like linux and the hurd). You can look at LGPL as a strategic transition from propriarity software to a world ruled by free (yes, as in speech) software. It's bait for big gpl-doubting companies...
  • Quoth the poster:
    You certainly should be able to have one segment of a program under a proprietary license and have other segments under the GPL
    You can certainly argue the merits of this position. However, I think from reading the GPL and the Gnu statements on it, it's pretty clear the GPL is a tar-baby: Once a piece of code is touched by the GPL, it's stuck with it ad infinituum, forever and ever, world with end amen. This goes for any piece of the code, too -- RMS explicitly wants to "force" people to use the GPL, by releasing cool bits of code under it.

    Put that way, the GPL is almost like a virus -- it tries to replicate itself in any program it touches. :)

  • What should we do if we're in this guy's shoes, and want to use a GPL'd library but need it to be LGPL?

    1. It's a DLL, so screw it, just apply the LGPL to it.
    2. Talk to the author. LGPL is quite close to GPL and the author will probably give you the permission.
    3. Whaddya mean, LGPL?!?! Why don't you just GPL your code and make the world a communism^H^H^H^H^H^H^H^H^Hbetter place?!
    4. IANAL, but, you know, according to the copyright law, blah blah blah, I *think* you can just apply the LGPL in this particular case, blah blah blah, IANAL but I'm probably right, blah blah blah.
    5. IANAL, but, blah blah blah, I *think* you have no choice but to use the GPL on your code, if you don't want to, too bad, you're screwed, blah blah blah (disclaimer: IANAL)
    6. GPL is a virus! RMS is a freak! (huh?)
    7. I see all these posts with IANAL... what does IANAL stand for?! (duh)
    8. Gimme some hot grits! (-1 Troll)
    9. CmdrTaco rulez.
  • called the GNU Public Virus for nothing.

    Congratulations comrade, you have corrupted your code.

    Wanna buy some cheap Linux stocks now?
  • I don't think using MaPlay code to play MP3 files instead of WAV files justifies that an entire game's source tree must be GPL'd.

    In that case, don't use MaPlay code to play MP3 files. What makes you think you have "justified" rights to this persons code in the first place? By releasing it under the GPL instead of the usual Windows shareware, he's giving you more rights to that code than you would normally have; but he hasn't made it public domain. Taking his code and using it for things not covered by the GPL (whether linking it into your game, calling it as a DLL, etc) is not allowed by that license.

    That said, you have a few options:

    Option 1: Write a separate executable program which plays MP3 files using the MaPlay source code. Release this program's entire source code under the GPL. Use this program from your closed source game, either by executing it each time you want to play an MP3 or (more efficient for frequent small MP3 playing) by leaving it blocking on IPC in the background until your game sends it a "play this" signal. This is how GIMP can be GPLed but still allow proprietary plugins.

    Option 2:

    Ask the original author(s) to use the code under a different license. It's their copyright; if you have their permission you can turn their code into an LGPL'ed DLL, into a closed source module, or whatever you want. Odds are 95% good that the authors will be fine with this, but you should get their permission first anyway; simply doing it and hoping they don't sue would be... distasteful, to say the least.
  • by clifyt ( 11768 ) <sonikmatterNO@SPAMgmail.com> on Sunday April 16, 2000 @07:25AM (#1129607)
    You can access DLLs and the like with Scripts (VB Scripts, etc) on the Win Side. If you were to release this on the linux side, you could as easily have written a Perl Script. Do perl scripts that access GPL'd software (most of what I use under Redhat) need to be GPL'd as well? No. Then again, if ya wanna be completely legit about it, ya might need to make it a seperate download.

    clif
  • by iCEBaLM ( 34905 ) <icebalm@@@icebalm...com> on Sunday April 16, 2000 @07:38AM (#1129608)
    1. Just because its a library doesn't mean it has to be under the LGPL, I think this person has that confused. The LGPL is used for programs who want to be GPL'd but are linked to a closed source library.

    2. If you derrive MaPlay, a GPL'd program into a Library with a simple API, its still under the GPL, and you have to release the source if you distribute it.

    3. Any closed source programs that you make which reference the library do NOT have to be GPL'd and their source does NOT have to be open, but of course, it would be better for everyone if it were.

    -- iCEBaLM
  • this is why you need to think about these things.. (Score:)
    by mcc (mcc@drowned.cx) on soon (#)
    (User Info) http://drowned.cx/
    this is why people writing open source software need to think these things out ahead of time..

    i personally like the restrictions of the LGPL better and think they're a lot more "fair". but i realize they shouldn't be for everything.
    if you're doing something that could conceivably be linked into, rather than just used, you have to take the time to think out whether it would be better to put that part under the LGPL.

    look, for example, at Macintosh NSCA Telnet 3.0, which the NSCA has given to this guy to continue work on. The guy placed it under the GPL/LGPL, and the way he did it is a model of well-thought-out application of the LGPL. The "library" portions are LGPLed-- the low-level bits,the bits that someone could concievably reuse later as a basis for a telnet feature in some other program. Such that people will feel free to use it casually, improve their software and maybe improve the LGPLed open bits (which they would then have to redistribute the source to) without having to go to the trouble of totally opening something they may not feel ready to open.
    The front-end bits, meanwhile, the bits that you wouldn't want anyone outright stealing, are GPLed.
    Each individual .c or .h file is split up into a different folder, and each one indicates which liscense it's under.

    But most people don't think these things out, they just slap "GPL" on it, and it doesn't occur to them to think whether some of it it may be better for everyone in general if they allowed some of the bits of the program to be linked against.
    Software in the "public good" doesn't mean it HAS to be GPLed.. THINK about how people may best be served by your program, and think about what may inspire them most likely to _use_ your library to link against, and maybe as a result improve it in ways they wouldn't if they didn't have a use for it.. Even if it isn't a library, even if it's something that could eb adapted into a library. THINK.
  • by David A. Madore ( 30444 ) on Sunday April 16, 2000 @01:00PM (#1129610) Homepage

    Since we're on the topic, I'd like to as the following: do you think there's room for an ``Intermediate'' GPL, between the (Greater) GPL and the Lesser GPL?

    More precisely: the .*GPL says that all derivatives of the work must remain free. The Lesser GPL allows linking of any programs / libraries (even proprietary programs / libraries) in the program / library under discussion. Whereas the (Greater) GPL allows linking only with programs / libraries that can be redistributed under the terms of the GPL.

    For example, an LGPL'ed library can be used by a proprietary program. A GPL'ed library cannot, but it cannot even be used by a free program such as Mozilla (yet it can be used by a program covered by the BSD license for example), since Mozilla cannot be redistrubted under the terms of the GPL (whereas a BSD-licensed program can).

    Now isn't there room for an intermediate license which would forbid linking with proprietary programs just like the GPL does, but allow linking with free software even if they are covered by licenses, such as the MPL or the QPL, which do not permit redistribution under the GPL's terms? I think this would achieve the goals which Stallman wants when he insists that some libraries should be covered by the GPL, and at the same time it would avoid excessive restrictions (consider how the expat library is released under the alternative between the GPL and the MPL: evidently jclark would have used such an Intermediate GPL).

    The idea seems so obvious I can't understand why it hasn't been applied yet? Is there some basic legal fact I'm missing here?

  • by nuggz ( 69912 ) on Sunday April 16, 2000 @07:44AM (#1129611) Homepage
    Point 3 is incorrect
    Any program which references the library is considered a derivative work of the library according to the terms of the GPL.
    You agree to that definition of derivative work by accepting the GPL.
    If you do not agree to that definition you are not following the terms of the GPL, and thereby have no license to redistribute it.

    Either accept the GPL, or don't accept the GPL.

    This prevents people from taking a GPL app, turning it into a library, then selling a new front end.
  • Stallman renamed the LGPL to "Lesser GPL" from "Library GPL". It makes more sense that way because the license doesn't really need to be applied to a library. Either the GPL or the LGPL can be applied to any program.

    If you want to use a GPL library, even with dynamic linking, you should either GPL your program, or find another library to use. So, you can make the program into a GPL library and make a GPL program on top of it.

    If you are concerned that you can't make a proprietary application that uses the library, you should consider that the copyright holder would have used the LGPL had they wanted you to do that, whether or not the program was a library at that time.

    Thanks

    Bruce Perens

  • by hypergeek ( 125182 ) on Sunday April 16, 2000 @09:59AM (#1129613)
    (BE WARNED: The following post is likely to piss off somebody out there. I'm not here to start a holy war or anything, just to make discussion. So think for a few seconds before impulsively launching your barrage of flames. :)

    The LGPL does have its uses, despite RMS' deprecation of it.

    For example, if I wanted to release my software under a less restrictive license than the GPL, I'd be tempted to use the BSD license at first, but if someone incorporates that into a proprietary license, (especially those nasty "source available" licenses that claim to be open source but aren't), then they can sue me for using something derived from my code!

    If I use the LGPL, then any portion of the code that was originally mine stays available for me to use with whatever modifications others add, but it's still usable by anyone, even those whose bosses insist that they write (gasp!) proprietary software.

    If later on, I decide that I want to spread free software "virulently", I can still place my LGPL'ed software under the GPL (the LGPL explicitly lets you do that), just as I could if I had placed it under the BSD license.

    To me, that's what free software should be about, a way to facilitate the free sharing and communal improvement of your code, not forcing others to do the same if they don't want to.

    IMHO, ESR really hit the nail on the head when he identified the "Bazaar" style of development popularized by Linux. Open source software can compete on its own merit, without resorting to a Borg-like assimilation of all the world's software.

On the eighth day, God created FORTRAN.

Working...