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

 



Forgot your password?
typodupeerror
×
GNU is Not Unix Java Programming

LGPL is Viral for Java 717

carlfish writes "According to this post to POI-dev, Dave Turner (Mr License) of the FSF has decreed that the steps required to use an LGPL'd Java library will actually infect client code with substantial GNU-ness via Section 6 of the LGPL. (The "Lesser" GPL is supposed to protect only the Library, without infecting code using the library) This, as you might imagine, puts a few LGPL Java projects that previously thought they were embeddable without being viral in a bit of a bind. Various weblogs have further coverage." Update: 07/18 02:44 GMT by CN : The FSF's Executive Director, Brad Kuhn adds "LGPL's S. 6 allows you to make new works that link with the LGPL'ed code, and license them any way you see fit. Only the LGPL'ed code itself must remain Free. Such 'client code' can even be proprietary; it need not be LGPL'ed."
This discussion has been archived. No new comments can be posted.

LGPL is Viral for Java

Comments Filter:
  • by Anonymous Coward on Thursday July 17, 2003 @07:10PM (#6466384)
    they coined the term "viral" with respect to software licenses, and now everyone's using it.

    good stuff. :\
  • No problem. (Score:4, Insightful)

    by Blackknight ( 25168 ) on Thursday July 17, 2003 @07:16PM (#6466423) Homepage
    Just switch to the BSD license, like the Vorbis project did.
  • by oGMo ( 379 ) on Thursday July 17, 2003 @07:16PM (#6466424)

    Please read that again. And again, until you get it. The GPL is not viral. It's pretty simple, really. If you're going to use [L]GPL'd code, follow the terms of the license, or don't use it.

    You have a choice. The [L]GPL is not a little bug trying to worm its way into your code. If you chose to use GPL code, then you follow the terms, or don't use the code. It's simple.

    If you find some really neat library under the [L]GPL that you want to use, and you don't want to follow the terms, well: tough luck. Offer to compensate the author; perhaps he or she will license it to you differently. Otherwise, write your own code.

  • by waterbear ( 190559 ) on Thursday July 17, 2003 @07:17PM (#6466434)
    It's worth pointing out that no-one (except a court) is really in a position to 'decree' what the LGPL clause 6 means if it really is a close call on more than one interpretation. If it turns out to be ambiguous or contentious, the best move could be to debate a clarification and campaign for the adoption of that instead.
  • by bokmann ( 323771 ) on Thursday July 17, 2003 @07:21PM (#6466453) Homepage
    I am a Java developer, and I have used the LGPL on work (and also used work that HAS been LGPLed).

    My intent in using the LGPL is pretty simple: If you want to use my library, go ahead. If you make CHANGES to my library, those have to be released back into the wild, so the library can be improved by everyone's improvements. I'm not a 'Free Software' zealot - I'm an open-source pragmatist.

    If the LGPL does not meet this intent with Java, then we should find or write a license that has this intent. Perhaps one of the ones at Creative Commons would work...
  • by Anonymous Coward on Thursday July 17, 2003 @07:23PM (#6466467)
    The post states that you cannot import or "lift" any lgpl code * code * code into another project unless that project becomes lgpl'd also. This is correct; however, the resulting lgpl'd library (binary) can be called / used by a non-lgpl'd project. It is really not that confusing.
  • by Michael's a Jerk! ( 668185 ) on Thursday July 17, 2003 @07:23PM (#6466468) Homepage Journal

    This viral stuff is backwards. I think the BSD license is actually more
    viral than the GPL. Here's why:

    If I decide to write a program and contribute it to free software, the
    GPL assures me that it will stay free software forever. I'd be bothered
    if somebody made it non-free, effectively stealing my work for their
    own remuneration. The GPL is effectively a vaccine against that.

    The BSD license lets people apply almost any license to my software,
    including most non-free licenses. If I wrote work under the BSD license,
    someone could modify it and sell the result with no source code, and
    I'd have no recourse at all. Anyone who wants can infect my BSD software
    with the non-free license virus.

    So, which license is more viral? It sounds to me as if the GPL is getting
    a bum rap here.

    By the way, the BSD license allows you to apply the GPL to a modified
    BSD work. I've thought about organizing a GPL-ed thread derived from the
    body of existing BSD-licensed work, just to illustrate a lesson about
    the BSD license. That would really piss people off, but it would be legal.

  • obWhore (Score:3, Insightful)

    by dspeyer ( 531333 ) <dspeyer&wam,umd,edu> on Thursday July 17, 2003 @07:24PM (#6466473) Homepage Journal
    The site's awfully slow already; I suspect it's going down soon, so here's the content:

    Subject: Re: [Followup] RE: Possibly Include HTMLParser Jar in contribcode?
    From: "Andrew C. Oliver" <acoliver <at> apache.org>
    Date: Wed, 16 Jul 2003 08:12:12 -0400
    Newsgroups: gmane.comp.jakarta.poi.devel

    You cannot. Though the FSF has stated that the Apache interpretation was correct and that importing classes from LGPL jar files in Java does indeed cause the "viral clause" to apply to Java.

    Please stop saying "lift the code" or other things that imply violating the copyright.

    Under no circumstances can any LGPL code be used as it would require us to LGPL our code per section 6 of the LGPL license and the statement I received from the Free Software Foundation's Dave Turner (the man behind licensing <at> fsf.org):

    " Me:

    Brett Smith referred me to you regarding a question regarding the Lesser Gnu Public License (LGPL) in regards to Java. It is the interpretation of most of the open/free software communities that the use of a "jar" file by a piece of software linked via a Java "import" statement does not bind the linking work under the terms of the LGPL. The Apache Software Foundation, presently takes a more conservative view and thus projects of the ASF are not allowed to link/distribute LGPL programs into Java projects of the foundation.
    DT: This sort of linking falls under section 6 of the LGPL. "

    In short, Sam was right, I was wrong.

    -Andy

    On 7/16/03 4:55 AM, "EPugh <at> upstate.com" <EPugh <at> upstate.com> wrote:

    Sorry I haven't been on the list more, been traveling the last week. At any rate, Andy, did you ever get a resolution to including the HTMLParser Jar?

    Should I just submit a code change the mimics the code that I need from HTMLParser, I mean, it is just a long list of values being populated into a Map! That is all I really want, versus sophisticated translation of character set logic or something...

    Thanks for your efforts... eric

    --
    Andrew C. Oliver
    http://www.superlinksoftware.com/poi.jsp
    Custom enhancements and Commercial Implementation for Jakarta POI

    http://jakarta.apache.org/poi
    For Java and Excel, Got POI?


  • by The Bungi ( 221687 ) <thebungi@gmail.com> on Thursday July 17, 2003 @07:26PM (#6466487) Homepage
    And again, until you get it

    Sorry, but that's like saying cholera is not bad as long as I don't catch it.

    The term "viral" pisses people like you off because it's convenient to think that it's a term invented solely for the purpose of turning people off from using it, and that's not the case. In cases like this one (and many others that I won't dredge up right now) the adjective is perfectly applicable - it implies a lack of knowledge as to how the license works and how to use it, but it doesn't make it any less "viral". It was used in ignorance, and now the folks that assumed they were OK find themselves "infected". That's what viral means. It doesn't mean that the license in and of itself is evil or incorrect or otherwise wrong.

  • Re:No problem. (Score:5, Insightful)

    by keesh ( 202812 ) on Thursday July 17, 2003 @07:26PM (#6466490) Homepage
    I am a Java developer, and I have used the LGPL on work (and also used work that has been LGPL'ed).

    My intent in using the LGPL is pretty simple: If you want to use my library, go ahead. If you make changes to my library, those have to be released back into the wild, so the library can be improved by everyone's improvements. I'm not a 'Free Software' zealot -- I'm an open-source pragmatist.

    If the LGPL does not meet this intent with Java, then we should find or write a license that has this intent. Perhaps one of the ones at Creative Commons would work...
  • Re:No problem. (Score:5, Insightful)

    by Michael's a Jerk! ( 668185 ) on Thursday July 17, 2003 @07:26PM (#6466494) Homepage Journal
    Perhaps you need to make an effort to understand the reasons people
    refer to the GPL as viral.

    If I spend years writing a program using no code other than my own, I
    can release it under any license I want. If I incorporate BSD licensed
    code into my program, I can still use any license I want, so long as I
    preserve copyright notices. If, however, I want to include GPLed code in
    my program, the GPL forces me to release my program under the GPL. It
    has *infected* my program. This is where the term `viral' originates
    with regard to the GPL.

    The BSD license does not affect code and cannot affect code since it
    can always be placed under another license. If someone makes proprietary
    enhancements to my BSD licensed code on his own time with his own money,
    the only code that has been infected with a non-free virus is his. My
    code is still perfectly free. I can give it to whoever I want and it
    is still as free as ever. The only thing I can't do is give away the
    other person's proprietary enhancements made with his own time and his
    own money and which could possibly completely overshadow the features
    provided by my small amount of code.

    Although the BSD license encourages the reuse of code for *any* purpose,
    including in projects released under non-free licenses like the GPL or one
    of the dozens of proprietary software licenses, doing it to piss people
    off will not get you very far, and it will make you look foolhardy,
    especially in the eyes of the people who wrote the free software (free
    for *any* purpose) that you would be making non-free. I guess you think
    no one understands the BSD license.

    All in all, a fine spirit to take in the name of free software....

  • by adamy ( 78406 ) on Thursday July 17, 2003 @07:28PM (#6466510) Homepage Journal

    b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.

    So what you should do as a LGPL library developer is:

    1. Define interfaces for all the objects.
    2. But these into their own Jar files. Tag these as the interface.
    3. Both the Implementing Jar and the calling program refer to eah other through the interfaces only. Somewhere in the interface Jar is a Factory the various implementations can regster themselve with to provide dynamic loading.

    This is how Databse and Cryptography stuff works in Java. If it can't be done this way, it is probably not a library.

    Note that doing:

    List l = new LGPLList(); is probably Illegal but

    List l = (List) Class.forName("org.gnu.LGPLList").newINstance();

    Is probably OK. Note that I say probably. I'm not a lawyer, nor do I play one on TV.
  • by Anonymous Coward on Thursday July 17, 2003 @07:30PM (#6466527)
    Sorry to rant here, but I quickly checked section six, no big deal here

    Either use a separate jar file for the library then the thing is not linked and used like a shared lib (according to the section six definition it must reside as a separated interface compatible lib)

    Or just bundle the binary with the LGPL code and add I will allow reverse engineering to my code clause to your own code license. I don't really see the problem, there is no way stated that you have to deliver the source from your own code there is an explizit "and/or" there and even the usage of obfuscators aren't prohibited as long as you allow reverse engineering and alteration of your own binary files.

    Btw. separate class files must fall into the same shared library section as separated jar files :-)

    As I see it this is nothing but self inflicted fud :-)
  • by William Tanksley ( 1752 ) on Thursday July 17, 2003 @07:31PM (#6466534)
    Nonsense. The GPL is intended to do exactly what you say it doesn't: it's intended to make all software free. It's a tool intended to destroy copyright from within.

    Saying that it's viral is mere shorthand for that, and you obviously know that (since you define viral in that way).

    Now, your prescription to deal with the viralness is quite on-target -- money talks, and coding your own dang solution also works. But this doesn't change the facts about how the GPL works, and how it's intended to work.

    Grin... To stretch the analogy, suppose someone claimed that the common cold wasn't viral because you could avoid it by wearing a mask, washing your hands, and staying out of public. I know, it's a stretched analogy...

    -Billy
  • by MisterFancypants ( 615129 ) on Thursday July 17, 2003 @07:32PM (#6466545)
    The post states that you cannot import or "lift" any lgpl code * code * code into another project unless that project becomes lgpl'd also. This is correct; however, the resulting lgpl'd library (binary) can be called / used by a non-lgpl'd project. It is really not that confusing.

    You are absolutely wrong. What they are really saying is that the LGPL works virtually the same as the GPL when it comes to Java code because Java code doesn't use early linking, everything is bound at runtime, thus there is no clear separation between one LGPL library and other libraries used by an application, or between the LGPL library and the application itself.

    If you follow this to its logical conclusion (which I haven't seen done in by the 'FSF-license guy') what you wind up with is the fact that you just cannot use the LGPL license with Java at all since the LGPL license conflicts with Java's own base set of libraries, which are shared source, but not free software in the *GPL sense.

  • by IntelliTubbie ( 29947 ) on Thursday July 17, 2003 @07:34PM (#6466553)
    You have a choice. The [L]GPL is not a little bug trying to worm its way into your code. If you chose to use GPL code, then you follow the terms, or don't use the code. It's simple.

    You seem to miss the entire point of the LGPL. The whole point is that you should be able to use LGPL code in a non-LGPL project. To quote from the website [gnu.org]:

    "The choice of license makes a big difference: using the Library GPL permits use of the library in proprietary programs; using the ordinary GPL for a library makes it available only for free programs."

    So whereas the GPL is intended to be somewhat "viral" -- i.e. software using GPL code must also be GPL -- the LGPL is not supposed to. This is why the viral-ness of the LGPL is news, since it's contrary to much of the community's understanding and intent regarding the use of LGPL code.

    Cheers,
    IT
  • by sterno ( 16320 ) on Thursday July 17, 2003 @07:34PM (#6466554) Homepage
    The problem here is that the technicality of this section of the LGPL and the FSF's interpretation of it are not in sync with 98% of the people using and releasing code under the LGPL. I've used LGPL code and seeing as the jars were libraries it didn't even occurr to me that this would be an issue.

    This causes uncertainty over the nature of LGPL software right now. Would a court of law agree with this interpretation? Now I'm left with an odd decision. Do I gut my code under the presumption that this FSF lawyer is right, or do I take my chances that a court will interpret this as the vast majority of the community has.

    Open source software lives by the certainty of the licensing it uses. If we can't trust the interpretation of the licenses, then we can't feel confident in working with this code. The FSF is risking a serious blow to the open source community.
  • by reynaert ( 264437 ) on Thursday July 17, 2003 @07:36PM (#6466572)
    The FSF's interpretation of the LGPL only applies to software owned by the FSF. If I had a different interpretation of the LGPL (which is certainly possible -- many parts are quite vague), that interpretation would apply to my software, and the FSF can do nothing about it.

    One example of one such non-standard interpretation is the "Lisp LGPL", used by Franz [franz.com] for their open source libraries. Parts of the LGPL don't make much sense for non-C-like languages such as Common Lisp, so they added a preample [franz.com] which explains their interpretation.

    Another real-world example is Pine. Early versions of Pine had a BSD-like license, which allows "modification and distribution". The University of Waterloo interpreted this to mean that you could modify Pine, or distribute an unmodified Pine, but not distribute a modified Pine. This was contrary to everybody else's interpretation, but they owned the copyright so they got to decide. (More recent versions have a different license).

  • Not his call (Score:4, Insightful)

    by Otter ( 3800 ) on Thursday July 17, 2003 @07:39PM (#6466597) Journal
    Dave Turner (Mr License) of the FSF has decreed that the steps required to use an LGPL'd Java library will actually infect client code with substantial GNU-ness via Section 6 of the LGPL.

    We get statements like that all the time from the FSF and there's no validity to them.

    The FSF writes their licenses. Any subsequent ambiguities are to be decided in court. There is no basis for post-facto "decrees" about what a document is supposed to mean -- the author has the opportunity to write it to cover whatever case, and has the responsibility to make his intentions clear then.

  • by oGMo ( 379 ) on Thursday July 17, 2003 @07:41PM (#6466605)
    I think you missed the point. The LGPL does not do what it was designed to do and what most programmers who use it think it does with their code.

    No, the point is that calling the GPL or LGPL viral is wrong, whether or not it acts correctly in this case. Using the term "viral" is merely FUD-spreading. Saying "the LGPL has bugs when used with Java" would be far more accurate.

    Besides, my point stands: you're responsible for knowing the actual terms of the license, not just thinking you know what it means. And you have the choice to follow them or use something else.

    Now, if there are bugs with the license in this case, then let's have someone fix them. But spreading FUD is not doing any good.

  • I have to agree (Score:2, Insightful)

    by abe ferlman ( 205607 ) <bgtrio@ya[ ].com ['hoo' in gap]> on Thursday July 17, 2003 @07:42PM (#6466612) Homepage Journal
    This is an interesting topic, but the way the submitter phrases it is 100% pure flamebait.

    The GPL (and to a lesser extent the LGPL) is a vaccine for the body of free code (a little bit of benign IP law to save us from the ravages of truly malignant IP law), not a disease you catch accidentally.
  • by p3d0 ( 42270 ) on Thursday July 17, 2003 @07:42PM (#6466613)
    Have we hit your pet peeve here?

    Obviously if you don't use GPL'ed code, then you have no problem. Equally obviously, then, that can't be what people are talking about when they say it's viral.

    The GPL has the property that, if you derive a project from code covered by it, your own code must also be covered by it. Most licenses don't have that property. So, if your 10,000 LOC project has 50 LOC covered by the GPL, you must license the whole thing under the GPL (in which case the GPL has effectively transmitted itself to other code) or remove those 50 LOC (thereby innoculating your project).

    If you object to the term "viral" being applied to this situation, so be it, but I think it's an apt description, and it's exactly the effect that I think Stallman intended. Regardless, you need to take a deep breath and relax a bit.

  • Re:No problem. (Score:5, Insightful)

    by SuperDuG ( 134989 ) <<kt.celce> <ta> <eb>> on Thursday July 17, 2003 @07:51PM (#6466673) Homepage Journal
    I know the other comment-replies to this post have been marked -1 for one reason or the other, but in all honesty I couldn't agree with you more.

    In all honest the BSD license is the "Ultimate Opensource Freedom". You release your code in hopes of the good will of future coders seeing your code. You bank on the fact that if you had the heart to release it to the public that future developers may feel the same way. But you also realize that they may not even explore your code if it has a license that forces them to release their code.

    So corperate america is willing to take a look at the possibility if their hands aren't tied. Eventually it's the hope that they will see the benifit of the source being released in the first place and let their modifications benifit the whole as well, possibly a little later after there has been a corner on the market from the secondary developers.

    Perfect example? Macintosh OS X and FreeBSD. Apple saw that the FreeBSD system was solid and they added to it to make it a system they thought was overly viable for them and then later released an entire project (darwin) back under the BSD code it was incepted with.

    So is BSD dying? Who knows, it's a wonder what exactly BSD code is doing right now as there is no obligation for the developers to release their modifications source. It's like a behind the scenes world where everyone uses the stuff but no one admits it. But yet we still see great projects come out of it, anyone ever used OS X?

  • by alienw ( 585907 ) <alienw.slashdot@ ... inus threevowels> on Thursday July 17, 2003 @07:54PM (#6466689)
    What are you smoking? I want some of that.

    The GPL is a tool to make YOUR software free, not someone else's software. It's not designed to "destroy copyright from within". If you think so, you are a retarded assmonkey who needs to shut up and read what Richard Stallman has to say about the goals of the FSF and the GPL.

    Unlike certain EULAs and NDAs, the GPL is not viral. Looking at GPL'd code is permitted, no strings attached. You just can't copy GPL-licensed code into your program unless it's also GPL-licensed. I don't see how this is viral.
  • by oGMo ( 379 ) on Thursday July 17, 2003 @07:55PM (#6466692)
    Nonsense. The GPL is intended to do exactly what you say it doesn't: it's intended to make all software free. It's a tool intended to destroy copyright from within.

    Yes, basically, and no, I didn't say it wasn't.

    Saying that it's viral is mere shorthand for that, and you obviously know that (since you define viral in that way).

    Precisely wrong. The idea is to provide a great deal of high-quality software that's Free(tm) such that's it's easier (and perhaps cheaper) just to write more Free(tm) software than it is to write proprietary alternatives.

    There's still nothing forcing you to write free software. You can go out and rewrite everything yourself. But that doesn't mean it's easy, and really: why should it be? Why should those who write free software make life easier for those who write proprietary software?

    That's right, they shouldn't. But no one is stopping you from writing the proprietary software. (They're not making it harder, either. If that free software wasn't there, you'd still have to write your own.)

    Grin... To stretch the analogy, suppose someone claimed that the common cold wasn't viral because you could avoid it by wearing a mask, washing your hands, and staying out of public. I know, it's a stretched analogy...

    Yes, this analogy falls far short. The GPL is much more like peer pressure. It's easier and more fun to go along with it, but if you make up your mind not to, there's nothing stopping you.

  • by swb ( 14022 ) on Thursday July 17, 2003 @07:59PM (#6466718)
    Has the GPL or the LGPL ever been litigated? With the opportunity for interpretation being what it is, you would think someone would push the envelope and wind up in court. Have they?
  • by pldms ( 136522 ) on Thursday July 17, 2003 @08:01PM (#6466731)
    Is probably OK. Note that I say probably. I'm not a lawyer, nor do I play one on TV.

    Neither am I (or do I) :-)

    I think you might be wrong about this. The second condition is fine - you don't need interfaces. For example I could write my own javax.swing.* classes (just give me a while :-). That satisfies 2) since "the modified version is interface-compatible with the version that the work was made with."

    1) is, I suspect, the contentious part. Each instance of a java executable has a copy of the classes in memory. No sharing, IIRC. Although the linking mechanism is dynamic, it isn't shared, which is what the text is trying to define.

    But I may be very wrong about all of this, so take my words with the appropriate quantity of salt.
  • by JonMartin ( 123209 ) on Thursday July 17, 2003 @08:12PM (#6466811) Homepage
    This viral stuff is backwards. I think the BSD license is actually more viral than the GPL. Here's why:
    If I decide to write a program and contribute it to free software, the GPL assures me that it will stay free software forever. I'd be bothered if somebody made it non-free, effectively stealing my work for their own remuneration.

    No dumbass, they can't steal your code if it is BSD licensed. What are they going to do, break into your house and remove the source from your HD? And do the same to every person who downloaded it? Repeat after me: YOU CANNOT STEAL WHAT IS FREE. As long as someone out there has a copy of your BSD code it will always be free.

    The next point is that if someone copies your free BSD code and charges money for it they are NOT MAKING MONEY OFF OF YOUR CODE. Your code is FREE remember? They are making money off of whatever they added to your code (be it more code or a service contract or shiny packaging). If Microsoft takes your free BSD code, adds one line to it and charges $100 for it they are charging $100 for that one line of their code.

    The BSD license lets people apply almost any license to my software, including most non-free licenses. If I wrote work under the BSD license, someone could modify it and sell the result with no source code, and I'd have no recourse at all.

    Why would you want recourse? How have they wronged you? You released your code under a free license, and people are using your code. Hooray! Wasn't that the point of releasing your code?

    Anyone who wants can infect my BSD software with the non-free license virus.

    How can they "infect" your code? You still have your code sitting on your harddrive. What they have done is create an entirely new "thing" out of your code and their code.

    By the way, the BSD license allows you to apply the GPL to a modified BSD work.

    Correct. Isn't that nice and free of them?

    I've thought about organizing a GPL-ed thread derived from the body of existing BSD-licensed work, just to illustrate a lesson about the BSD license. That would really piss people off, but it would be legal.

    Perfectly legal. That's the point of the BSD license: allow as many people as possible to use the code for whatever purpose they imagine. I doubt the authors of the BSDed code would be bothered at all. They will probably be happy it is being used - that is why they released it under the BSD license.

  • by Anonymous Coward on Thursday July 17, 2003 @08:14PM (#6466824)
    The Java import statement does not alter the compiled class in any way. The import statement is esentially a compiler directive, which tells the compiler in what packages to look for classes.

    For example:

    import java.util.*;
    public class Bob {
    Vector v = new Vector();
    }

    and...

    public class Bob {
    java.util.Vector v = new java.util.Vector();
    }

    produce the same exact bytecode. In the first case the compiler would search for class Vector in the packages specified in the import statements.

    I does not actually import anything from those packages/classes into the class.
  • by JonMartin ( 123209 ) on Thursday July 17, 2003 @08:23PM (#6466892) Homepage
    You ever get the sense that some of the people who post about the GPL have absolutely no idea what they're talking about?

    I'm convinced that the vast majority of people who release code under GPL have a hero fantasy in which Microsoft gets caught stealing their GPLed code and is thus forced to release the source for Windows, destroying them and sending Bill to the poorhouse. Then our brave coder will become a geek folk hero, showered with adoration for all time. I can see them on Letterman now: "Aw shucks, Dave, I just like writing code. I didn't plan on changing the world."

    A very small group don't have this fantasy but foolishly believe that the GPL helps "free software" (whatever the hell that means).

    An even smaller group understands what the GPL is actually for. These are the diehard RMS zealots who think nobody should be allowed to keep code private.

  • by jswitte ( 216975 ) <`su.ni.notgnimoolb' `ta' `ettiwsj'> on Thursday July 17, 2003 @08:34PM (#6466960)
    Open source software lives by the certainty of the licensing it uses. If we can't trust the interpretation of the licenses, then we can't feel confident in working with this code. The FSF is risking a serious blow to the open source community.

    So why not just draft your own license that's basically the LGPL, except that it is built specifically so that it will work as most people expect it to with Java libraries (and maybe other languages, like Objective-C libraries)?

    Make sure that the license is compatible (as much as possible without destroying the intended modification for Java code) with the FSF's LGPL, GPL, etc licensees. Then find some way (I have no idea how to do this) to get people to know about this. Maybe bribe on of the Slashdot webmasters to put it on..
  • Re:Almost.. (Score:3, Insightful)

    by Anonymous Canard ( 594978 ) on Thursday July 17, 2003 @08:37PM (#6466988)
    This pisses me off. OK, so it does not say you have to distribute your code. But it does say you must permit modification [for personal use] of the work and you must permit reverse engineering for debugging the modifications the other user decided to do.

    Those are both fair uses. The LGPL does not permit users to link with LGPL'd code if their license explicitly prohibits fair use -- in fact it goes out of its way to ensure that linked LGPL code can be replaced with other linked LGPL code.

  • by bwt ( 68845 ) on Thursday July 17, 2003 @08:38PM (#6466989)
    I'm really baffled by what the issue is. It appears to me that the LGPL works just fine for Java.

    Suppose I write a libarary in Java and place it under the LGPL. I also create a jar file for it. You write some code which uses my library and includes some import statements that name a package in my jar. You compile your stuff into a separate package jar. You distribute your jar which contains none of my code source or bytecode other than calls to public methods. I don't see any reason to think the LGPL places any requirements on your jar.

    Java's built in class loader seems ideal as a "suitable shared library mechanism". So long as the LGPL library is on the classpath, it will get loaded at run time, as modified or not, and it will work so long as the public method signitures don't change. This is what the LGPL means when it uses "interface" -- it is NOT talking about a declared interface in the Java sense, but simply the public method calls treated as an API.

    The difference between the standard contstructor form and the Class.forName form seems like a distinction without a difference to me. Both use whatever library class is on the classpath at runtime and don't depend on it being unmodified aside from the method signatures.

    I'm baffled by this article and the claim that the LGPL is problematic in Java. It seems to me that so long as you distribute your code which uses an LGPL class or jar without including your own copy of that LGPL libary, you are fine. Heck, you could even distribute the LGPL library as long as you do it in a separate download.

    In fact, I would go one further. Even if the class you are using was full GPL, how does my program care so long as I don't distribute your code? Because of OO encapsilation, my code does not depend on anything other than the public methods I call, and I'm not sure an API can be copyrighted, or if it can that interoperability is not a fair use. What right of yours would I be violating? I'm not distributing a derivitive of your code (unless you think like SCO), nor modifying it. The only thing that I copy is API call signatures. So what?

  • by fanatic ( 86657 ) on Thursday July 17, 2003 @08:51PM (#6467056)

    The GPL is intended to do exactly what you say it doesn't: it's intended to make all software free. It's a tool intended to destroy copyright from within.

    That's right. GPL'd code reaches up, grabs you by the throat and makes you insert it into your project.

    Oh, you mean it doesn't?

    Then, it must, by itself, open your code in your favorite editor, and type itself into your code?

    Oh, it doesn't?

    Gee then you must be a fucking dumbshit, since your code got the GPL-ness in it because you included GPL code in your code. Because that's the only way it can happen.

    CHrist, how many times does it have to be said? If you don't wnat your code GPL'd, don't use GPL'd code in your code. Even a moron like you should be able to undestand that.

    Now this issue of using the LPGL .jars, it looks to me like you escape your whole work being LGPL' if you "b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with." So, if you dind't actually incorporate the libraries into your code, ocne again you are OK.

  • by alienw ( 585907 ) <alienw.slashdot@ ... inus threevowels> on Thursday July 17, 2003 @08:53PM (#6467071)
    Stallman's goals are the erradication of all commercial software.

    Can you quote him on that? I always thought he was encouraging software to be free, not eradicaing any commercial programs. How can you 'eradicate' commercial software, anyway? I don't think Stallman is trying to get laws passed that prohibit charging money for software.

    So that "information can be free".

    Stallman was talking about software, not 'information'. Again, can you cite a source for that "quote"?

    Do you contend that?

    Yes, see above.

    If not then I think a good case can be made that the GPL is his way of extending and embracing the very thing he wants to disappear.

    How in the hell does the GPL 'extend' and 'embrace' commercial software? You are now contradicting your previous statement.

    It's a tribute to the quality of open source software that he even remotely has a chance to do that, of course. If that wasn't the case then nobody would even bother listening to him.

    I think the reason the quality is so good is because people listen to him. You have cause and effect reversed.

    BTW, "assmonkey" is right up there with "fucktard" in the list of colorful adjectives used by low-IQ Slashdot posters who can't come up with something intelligent to say if their lives depended on it.

    I personally think that 'assmonkey', like 'fucktard', is an accurate description of most Slashdot posters. Also, very nice selective quoting there. I'm impressed by your mad skillz, Mr. High-IQ Slashdot Poster. But next time, try to use a small amount of logic in your post. You would certainly sound quite a bit smarter than you do now.
  • connotation (Score:5, Insightful)

    by Kunta Kinte ( 323399 ) on Thursday July 17, 2003 @08:56PM (#6467090) Journal
    ...That's what viral means. It doesn't mean that the license in and of itself is evil or incorrect or otherwise wrong....

    I'm not a GPL fantic or anything but...

    GPL backers typically don't like the adjective "viral" to be used to describe their work because it has a negative connotation. ie. The set of associations implied by a word in addition to its literal meaning. ( dictionary.com ) To me, that position is very understandable.

    There's always more than one way to say what you mean. You can call someone "Stubborn" or you can call them "Strong willed", almost the same thing? Marketing, politicials use this type of thing very often.

    In fact 'viral', as an adjective is, I'd say, blatantly demeaning. There is absolutely nothing good about a virus, and that connotation sticks with the adjective.

    Would you tell your girlfriend "your love for her is spreading through your system like ebola"? or I love you like flies like sh**?

    Both those statements I believe express great unyeilding passion. But it may not go over that way.

  • by bwt ( 68845 ) on Thursday July 17, 2003 @08:58PM (#6467103)
    But there is a clear distinction. The LGPL library is loaded from one jar on the classpath at runtime and the rest of the code is loaded from somewhere else. They're clearly separable. If you modify anything in the LGPL jar (or class) and distribute it, you must include full source to everything packaged in that jar, but if you don't do that you are fine, even if you're dealing with full GPL java code.

    The JVM plays the same role as bash does: it loads separately packaged programs into memory, and handles messages being sent back and forth, none of which implicates any right held by the copyright holder of either. I my propietary class calls your GPL'd or LGPL'd class, so what!? How is that different than my proprietary bash script calling grep? As long as I don't modify or distribute your code, or copy parts of it into mine, I don't need a licence.

    If you say the method calls are me copying your code, I'll argue back that public method names are a fair use for interoperability.
  • by ajs ( 35943 ) <{ajs} {at} {ajs.com}> on Thursday July 17, 2003 @09:09PM (#6467152) Homepage Journal
    There's a flaw in your logic. You cannot retro-actively interpret a license. The license is an agreement. If you then decide that the agreement "really means" something other than what I think it means, we have a dispute. We can settle it between us by altering the agreement to be clear on the point, or either one of us can take the matter to court for resolution. This happens all the time. What you meant for the agreement to say is beside the point unless we had some form of verbal or implied understanding at the time.

    If, for example, SCO got to tell IBM, "well, our interpretation of the license for UNIX means that you can't put code from Sequent into Linux," then IBM would be quite unhappy about the results.

    I think the point of confusion here is history. Long ago, Linus made a big splash when he stated his interpretation of the GPL for purposes of binary-only drivers. A lot of folks walked away from that assuming that that meant he had the ability to retro-actively interpret ambiguity in the GPL.

    That was not at all the case. What Linus was doing was essentially making a promise to holders of this ambiguous license (and the GPL *is* ambiguous on that point, IMHO) that he was interpreting the license in the most liberal possible way, and thus no one need fear that he would sue them over it.

    He could still sue, of course, but his public statements would weigh heavily against the outcome (the scary part for businesses is that you still run into litigation risk regardless of the fact that the cards are stacked in your favor).

    On the other hand, if Linus had said, "I'm interpreting the GPL to mean that you can't link your binary-only driver into Linux without creating a derived work which may only be distributed under the terms of the GPL," then the ambiguity would still remain, and no one would be sure if Linus was right or wrong about that until precident was set in court (which it probably has in other contexts outside of the GPL, but I'm not at all sure about that).

    The same thing happens if I say, "I interpret the GPL to mean that you [can/cannot] distribute my software on DVD media." My interpretation is just that, and does not affect you at all. You might, of course, think to yourself, "hmm... this guy is interpretting the GPL in exactly the same way a first-class nut-case would... perhaps I should use some other software."

    That's fine, you can feel that way, and I would not blame you in the slightest. But that social dynamic does not change the essence of the GPL, nor our agreement as stated in the GPL.
  • Re:No problem. (Score:2, Insightful)

    by plague3106 ( 71849 ) on Thursday July 17, 2003 @09:12PM (#6467167)
    Who knows, it's a wonder what exactly BSD code is doing right now as there is no obligation for the developers to release their modifications source.

    Which is why i don't like the BSD license. Code released under it is essentally ending up as work done for free for corporations. So while the code may now be better, it doesn't benifit everyone, it simply benifits the company.
  • by Breakfast Pants ( 323698 ) on Thursday July 17, 2003 @09:13PM (#6467173) Journal
    You forgot the group that wants to release their code but they also want the assurance that anyone making additions shares back.
  • by hummassa ( 157160 ) on Thursday July 17, 2003 @09:16PM (#6467189) Homepage Journal
    Linking is a step done by the final user, who executes the program/applet.
  • by Otto ( 17870 ) on Thursday July 17, 2003 @10:21PM (#6467513) Homepage Journal
    Okay, if I make a piece of java code, like a class, and provide methods to use that class, and wrap this up in a jar file and say it's now under LGPL, then here's what somebody should be able to do (IMO):

    1. Create java code which uses my library (jar file) with the library as a separate jar file (ie., none of my code is in their code, they're just calling methods and classes from my code).

    2. Not have any requirements placed upon their code at all in any way.

    As I see it, this is exactly what the LGPL does. Section 6 never comes into play whatsoever, because their code falls into section 5. They haven't actually combined my code into theirs, it's totally separate, sitting right in that jar file (aka library).

    Granted, if they modify my code and distribute the modified version, then they must distribute the modifications they made to my code as well. That's what the LGPL is for in the first place.

    But I fail to see how section 6 applies in any way whatsoever. None of my LGPL'd code is included in their code in any way. It's separated because it's in a separate jar file.

    Lookie here:
    5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.

    To me, this exactly describes someone calling classes or other code that resides in my jar file. They're not copying the code into their own jar, they're linking to it. But let's look at section 6:

    6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library...

    This never happens if done properly. My jar is sitting alone, their jar is sitting alone. At runtime, their jar loads, says to the java interpreter "hey, make a class from that other jar", then my jar loads and a class gets created.

    So, am I wrong here? I see no normal situation in which section 6 would ever apply to Java libraries, unless someone was straight up ripping my classes off and including them in their own jar file along with their own code.
  • Re:No problem. (Score:3, Insightful)

    by jrockway ( 229604 ) * <jon-nospam@jrock.us> on Thursday July 17, 2003 @10:39PM (#6467650) Homepage Journal
    I was just about to post something like this. The spirit of the LGPL is that you can use the library for your whatever-liscensed program, but if you change the library then you show the world your changes. If Java happens to use some strange library/package/class loading system that makes the LGPL incompatible, the LGPL can be fixed.

    We should worry about intent, not physical locading of the class into memory.
  • by Osty ( 16825 ) on Thursday July 17, 2003 @10:54PM (#6467740)

    You think the choice is between releasing as non-free and not releasing at all. The choice, for many, is probably between releasing as non-free and releasing as Free. Certainly forcing it to be released as Free would be more viral.

    I think the better assumption is the first one. Perhaps you've not worked in the professional world, but any firm that would be inclined to choose BSD over GPL because of GPL's "Free"ness would certainly choose not to release over releasing as GPL. However, that's still missing the point. In a world where no BSD licensed code exists, the code consumers you're talking about would sooner write the functionality themselves and put a correspondingly higher price tag on their work to make up for the development costs than they would choose to use GPLed code.


    Of course there are exceptions, but in most cases those exceptions are not people whose livelihood depends on selling software. For example, a hardware and service provider like TiVO has no problem using GPLed code, because they don't make their money off of the software. A company like Oracle, however, would not because they make their money off of selling their software as well as service contracts. They'll support GPLed code like Linux, but they won't incorporate that into their own product.

  • by Arandir ( 19206 ) on Thursday July 17, 2003 @10:58PM (#6467774) Homepage Journal
    I would do that, except that the FSF doesn't believe in freedom. The freest you can get source code is the public domain, but the FSF does not want you to release code under the public domain, particularly their specially copyrighted stuff.

    In fact, the FSF doesn't even want to achieve their goals. You see, if they got their stated wishes, and all copyright laws were rescinded, the whole concept of copyleft would instantly evaporate. You would no longer be required to distribute the sources to gcc on demand to those you gave the binaries to. You could link to libreadline without placing your application under the GPL.

    It's sort of like an organization arguing against land ownership, who came up with a boilerplate deed called "propertyleft" that attempts to abolish the building of fences. But if they ever got their way, their deeds would be meaningless and people would be free to build fences all over the place, including on land that was previously owned by the Free Property Foundation.
  • by Anonymous Coward on Thursday July 17, 2003 @11:11PM (#6467854)
    Err, no. The GPL does not restrict. Under international law all works of creativity are covered automatically under a copyright which totally prohibits all unauthorized copying. The GPL grants you a license to not only use the code, but modify it and redistribute the code. This is a great freedom.

    The only "condition" if you will is that if you distribute binaries built on GPL software, you must also distribute the source code used to build the software. Since you got it under that condition I don't see why you are complaining about. If you don't like the condition, don't use GPL software.

    BSD like licenses allow companies like Microsoft to take free and open code, put that code into their code base and do what is called, "embrace and extend." This is where they take an open standard, oh lets just pick say, KERBEROS. And they take that package and add functionality that nobody else has and which prevents cross linking so their clients can only connect to microsoft servers... but the microsoft servers can interoperate the other way... Then you patent this little gem and threaten to sue anyone who begins to implement a server or a client with that feature.

    This is not a made up example, this is what MS did.

    Someone tell me the difference between a BSD license and just putting your code into the public domain, 'cause I would really like to know what that difference is.
  • by dinotrac ( 18304 ) on Thursday July 17, 2003 @11:34PM (#6468004) Journal
    Before you go calling people names, you might want to find out what it is you're talking about.

    1. The GPL does not prevent you from copying GPL'd code into a non-GPL'd program. You are completely free to do that. The GPL prevents you from distributing that code as part of a non-GPL'd program. A company, for example, could create their own proprietary software based in part on GPL'd code and distribute it throughout, but not outside of, the organization.

    2. Like it or not, viral is not an unreasonable way to describe the GPL.

    Consider the program in point 1.

    After using that program internally for some time, the company sees an opportunity outside of the company.
    At that point, the GPL, springs out of its dormant state and infects the rest of the program. It doesn't actually GPL the rest of the code (contrary to Microsoft hyperbole). What it does is revoke all rights to the GPL'd code, resulting in a derivatvie work that cannot legally be used or distributed.

    This is neither good nor evil. It's the mechanism by which the GPL is able to do the things it does.
    It is, however, something that developers need to be aware of and plan for accordingly.
  • by Anonymous Coward on Friday July 18, 2003 @12:19AM (#6468236)
    The JVM plays the same role as bash does: it loads separately packaged programs into memory
    I think the component you are thinking of (as applies to libraries) is not the shell but rather the dynamic linker, ld.so. When you exec() a binary it is linked to ld.so which will link any DLLs and call main().

    What bash does is parse command lines, fork()s, and tells the kernel to exec things.

    Just a small technical thing to clear up. No big deal. In fact, you're absolutely correct to say that Java is the same way, just in a different nature. I looked at Section 6 myself and see no problems.
  • by Yaztromo ( 655250 ) on Friday July 18, 2003 @02:01AM (#6468631) Homepage Journal

    Distributing a jar, along with some code which will end up calling code from that jar, is linking to that jar. The actual bindings are resolved at runtime (although as I understand it, the jar needs to be present at compile time too), but it's still linking.

    If you use this as your definition of "linking", then "linking" loses all purpose and meaning.

    According to your definition, it appears that any two binaries loaded in memory, where on calls the other, are "linked", regardless of wether or not the code is mingled in its distribution.

    Thus, if my shell script calls on "grep", that's considered "linking", because a call interface is constructed between the two pieces of code, and the logical execution of the program flows from my code to "grep" and then back to my code.

    I think you have a terrible definition of "linking" that doesn't coincide with that of anyone in the computer industry.

    Yaz.

  • by Yaztromo ( 655250 ) on Friday July 18, 2003 @02:07AM (#6468651) Homepage Journal

    I say, "I use the GPL to encourage open source development. If I were to use the LGPL, then you could use my libraries without giving me the source to your program.".

    They still can -- the GPL only requires a party to provide their changes to your code _if_ they redistribute the code. And then, they only have to provide it to the people they redistribute the binaries to.

    You may never see their changes if they don't redistribute your code, or if they decide to redistribute it only to those people they've redistributed their binaries to (which doesn't have to be publically online -- they could do it via postal mail if they wanted to).

    You've chosen a bad reason to not use the LGPL license...

    Yaz.

  • by msobkow ( 48369 ) on Friday July 18, 2003 @02:12AM (#6468662) Homepage Journal

    As I understand it, the Java issue seems to be almost identical to the static linking problem.

    While I label a lot of my code as LGPL, I have absolutely no problem with static linking the code. I don't see how a few linker options are relevant to licensing of source code.

    This has always been a nitpick that has baffled me about the GPL and LGPL. Why does everyone have such an issue with static linking? Static linking doesn't change the code I release, and nor should the implementation of byte code loaders and Java runtimes.

  • Oops, revision! (Score:3, Insightful)

    by Otto ( 17870 ) on Friday July 18, 2003 @02:29AM (#6468708) Homepage Journal
    Let me rephrase that last statement:

    In other words, by your definition, it's utterly impossible for anyone making code that uses any LGPL library of any type to create one distribution file that includes both the code and the LGPL'd library, without getting the most definitely undesirable stigma of section 6 attached to the code.

    The whole point of the LGPL is to create libraries that are open source but which can be used by closed source programs, requiring only that any modifications to the *library* be distributed back into open source. Your definition requires more than that, and thus the LGPL doesn't do what everybody has thought it did for the past X years.
  • Re:Huh? (Score:1, Insightful)

    by Anonymous Coward on Friday July 18, 2003 @03:11AM (#6468804)
    Just a wrong headline on slashdot. The whole thing apparently started by somebody believing "since we use Java, we don't have do follow the LGPL", and the FSF clarified that the LGPL works exactly the same for Java as it does for C or C++.

    Constructing a headline from an out-of-context quote in the middle of a long thread... Is slashdot trying to copy CNET or MSNBC?
  • by FooBarWidget ( 556006 ) on Friday July 18, 2003 @07:27AM (#6469454)
    "Frankly, I'd be pissed if you forked my project,"

    The only one you should be pissed on is yourself. If you chose to release your project as open source and someone forks it and you don't like it, then it's entirely your fault.
  • by Anonymous Coward on Friday July 18, 2003 @08:28AM (#6469675)
    I really don't understand why you think it is a problem...

    When you take that GPL'ed code, you KNOW the license terms...
    There is absolutely noone that stops you from writing it yourself...
    Then you are absolutely free to do what you want.

    If you buy software from Microsoft or anybody else, you KNOW what the terms are...
    You KNOW what the terms are when you use GPL'ed code.

    I really don't see the difference...

    If you can't accept the terms of the license of the code, then just don't use the code...
  • Wrong (Score:2, Insightful)

    by GreyWizard ( 567129 ) on Friday July 18, 2003 @08:55AM (#6469793) Homepage Journal

    If, however, I want to include GPLed code in my program, the GPL forces me to release my program under the GPL. It has *infected* my program.

    Wrong. You have infected your program by including the GPL covered code. No one held a gun to your head and demanded that you include it, nor did the code sneak in through an open window and jump into your source repository. That was your choice. Calling it viral is ungracious at best.

    [...] under non-free licenses like the GPL [...]

    That you prefer the BSD terms to those of the GPL does not make the latter non-free in any meaningful sense and your claim to that effect is nothing more than religious zealotry. Learn to accept that not everyone will genuflect at your church and get over yourself.

  • Re:This is a farce (Score:3, Insightful)

    by tetra103 ( 611412 ) <tetra103@yahoo.com> on Friday July 18, 2003 @12:56PM (#6471892)
    But it IS true. The end users have more choices than they had if the original code had been under GPL: they could choose the original, any open forks off of it, AND the proprietary fork.

    You are so dead on with this comment and it's the one thing that all GPL zealots don't seem to get. Just because you release some code for free, be it BSD or public domain or whatever, and some commercial entity hyjaks the code, how did your initial contribution become "less free?". Everyone can still use YOUR free code. In fact, another commercial corp can hyjak your code again and be a competitor to the first commercial hyjak. Who cares? YOUR CODE IS STILL FREE!

    Don't get me wrong, I like the GPL as well, but I see the GPL as applying Intellectual Proprety Rights to free code. Whereas the motive may be good, the purpose is to limit it's useability. Sure you can say GPL is more free because it virally mandates that all derived works must be free, hence this increases the overall amount of free code availible on the net. That's great and you'll save the world by putting a few commercial programmers out of a job. BSD code can be said to be more free because you can do whatever the hell you want to do with it. A larger audience can use it and hence more free.

    It depends on your perspective, but I like the BSD definition of free and it's more meaniful. In regards to protecting a personal free project from being hyjaked, the GPL is a good vehicle. Just don't lie and think you're doing a better service to the world because you use GPL. People who use GPL do it for themselves and no one else.

He has not acquired a fortune; the fortune has acquired him. -- Bion

Working...