So it seems my previous entry has finally started to stir up some controversy. I'll address some of the technical issues raised here shortly. But first I thought I'd clarify my view of the GPL, with the help of an analogy:
Let's say that I manufacture wooden two by fours, and that I want to make them freely available under an "open source" license. There are several options out there:
You have the right to use and modify my 2x4s to your hearts content.
This is the basis for open source software. It protects the rights of the consumer, but imparts few rights to the developer.
You have the right to use my 2x4s however you please, but if you modify one, then you have to make that modification freely available to the public in the same fashion as the original.
This gives the developer a few more guarantees about what can and cannot be done with his or her contributions. It protects the developer's rights without infringing on the rights of the consumer.
You have the right to use my 2x4 as-is, but if you decide to build a house with it, then your house must be as freely available as my 2x4.
This is the provision of the GPL that I don't agree with, and neither do customers that we've talked to. It protects my rights as a developer, but severely limits the rights of the consumer in what can and cannot be done with my public donation.
This analogy has some obvious flaws. Open source software is neither excludable nor rival, unlike the house I just built. There is also a tenuous line between derived works and fair use. In my example, I wouldn't have the right to the furniture put into your house. But I feel like its a reasonable simplification of my earlier point.
As an open source advocate, I would argue that #1 is the "most free". This is why, in many ways, the BSD license is the "most open" of all the main licenses. As a developer, I would argue that #2 is the best solution. My contribution is protected - no one can make changes without giving it back to me(and the community at large). But my code is essentially a service, and I feel everyone should have a right to that service, even if they go off and make money from it.
The problems arise when we get to #3, which is the essential controversy of the GPL. To me, this is a personal choice, which is why GPL advocacy often turns into pseudo-religious fanaticism. In many ways, arguing with a GPL zealot is like an atheist arguing with a religious fundamentalist. In the end, they agree on nothing. The atheist leaves understanding the fundamentalist's beliefs and respects his or her right to have them. The fundamentalist leaves beliving that the atheist will burn in hell for not accepting the one true religion.
This would be fine, except that GPL advocates often blur the line between #2 and #3, and make it seem like the protections of #2 can only be had if you fully embrace the GPL in all its glory. I support the rights provided by #2. You can scream and shout about the benefits of #3 and how it's an inalienable right of all people, but in the end I just don't agree. Don't equate the GPL with open source - if you do want to argue the GPL, make it very clear which points you are arguing for.
One final comment about GPL advocacy. Time and again I see people talk about easing migration, avoiding vendor lockin, and the necessity of consumer choice. But in the same breath they turn around and scream that you must accept the GPL, and any other license would be pure evil (at best, a slow and painful death). Why is it that we have the right to choose everything except our choice of license? I like Linux. I like the GPL. The GPL is not evil. There are a lot of great projects that benefit from the GPL. But it isn't everything to all people, and in my opinion it's not what's best for OpenSolaris.
[ UPDATE ]
As has been enumerated in the comments on this post, the original intent of the analogy is to show the the definition of derived works. As mentioned in the comments:
Say I post an example of a function foo() to my website. Oracle goes and uses that function in their software. They make no changes to it whatsover, and are willing to distribute that function in source code form with their product. If it was GPL, they would have to now release all of Oracle under the GPL, even though my code has not been altered. The consumer's rights are preserved - they still have the same rights to my code as before it was put into Oracle. I just don't see why they have a right to code that's not mine.
Though I didn't explain it well enough, the analogy was never intended to encompass right to use, ownership, distribution, or any of the other qualities of the GPL. It is a specific issue with one part of the GPL, and the analogy is intentionally simplistic in order to demonstrate this fact.
Your specific beef is with copyleft, afaict. The idea behind copyleft is that you must pass on the 'consumer rights' that you received to others when you distribute GPLd works. Copyleft keeps third parties from stripping away those 'consumer rights' in their modified versions. Do you see something wrong with that?
Posted by Dalibor Topic on September 24, 2004 at 10:49 AM PDT #
Yes, I ran with it because it is good enough and simplistic enough for these purposes.
I think you're missing the point. I am not against transferring rights to the consumer. The protections enumerated in #2 above provide for this. Eventually, you get down to same fundamental question about whether those rights apply to just my code, or everything that uses my code.
Say I post an example of a function <tt>foo()</tt> to my website. Oracle goes and uses that function in their software. They make no changes to it whatsover, and are willing to distribute that function in source code form with their product. If it was GPL, they would have to now release all of Oracle under the GPL, even though my code has not been altered. The consumer's rights are preserved - they still have the same rights to my code as before it was put into Oracle. I just don't see why they have a right to code that's not mine.
In the end, it always comes down to the same issue outlined in #3, and I simply don't agree with that. I made my source code freely available - why should Oracle have to give up their source code because they use something I donated to the public domain? We can agree to disagree on this point, but I want to be clear what the issue is.
Posted by Eric Schrock on September 24, 2004 at 11:08 AM PDT #
Posted by jf on September 24, 2004 at 01:01 PM PDT #
Now that we are talking about source code, I find it easier to follow your line of thought.
Beside the goal to protect consumer rights, the GPL has also the goal to broaden the pool of GPL-compatible software, by encouraging developers to contribute back to that pool. In RMS words: <cite> "Proprietary software developers have the advantage of money; free software developers need to make advantages for each other."</cite>[1]
GPL is one such advantage for developers like me, so I like it. If Sun doesn't want that 'edge'[2] for Solaris, that's cool, too.
cheers, dalibor topic
[1] http://www.gnu.org/licenses/why-not-lgpl.html
[2] http://www.gnu.org/philosophy/pragmatic.html
Posted by Dalibor Topic on September 24, 2004 at 01:21 PM PDT #
Dalibor -
Yep, you've hit the nail right on the head. Thanks for the pointers to GPL docs, too. The GPL has some noble goals, but as a corporation we have to balance the needs of individual developers against the needs of our customers and our corporate goals. It will be interesting to see where we end up ;-)
Posted by Eric Schrock on September 24, 2004 at 01:37 PM PDT #
I wish you & Sun best of luck with making Solaris open source. The GPL'd pool will be there whenever you feel like coming over and joining in the fun :)
cheers, dalibor topic
Posted by Dalibor Topic on September 24, 2004 at 01:55 PM PDT #
You should also read the FSF FAQ on the meaning of GPL-compatible.
Posted by Rob Funk on September 24, 2004 at 03:04 PM PDT #
Rob -
Thanks for the clarification. This is definitely an issue of what qualifies as derived work, but I was under the impression that this was part and parcel with the GPL (as described in section 2). Are you suggesting that the GPL by itself has no defition of what constitutes a derived work? The LGPL is interesting, but it only applies to software libraries. The three conditions I outlined are almost supersets of each other, so the GPL still satisfies most of #1 and all of #2; the point of contention is over whether it also enforces #3.
And I've already been warned for mis-using the term "GPL-compatible" (by implying that GPL code could not be taken back).
Posted by Eric Schrock on September 24, 2004 at 03:30 PM PDT #
... ...
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. 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.
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.
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
The latter part tries to explain what does and does not constitute a derived work, but my understanding (IANAL) is that that explanation has no legal force, while section 2b itself does. Note that there is no actual definition of "derived" here (or anywhere else in the GPL); that's because it's a legal concept that is defined in legal dictionaries.
As for the LGPL, read its first three paragraphs: <blockquote style="font-style: italic;"> 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) So basically, a library is a program intended to be linked into other programs. Seems to me that could include just about any nontrivial program if you want it to.
Not that I'm pushing for use of the LGPL; my original mention of was just for comparison.
And I agree with your judgement of the point of contention with the GPL. There's a lot of confusion floating around on that point, but the fact that some major technology companies have embraced the GPL (for some software) after running it through their lawyers gives me a good indication that it's not totally incompatible with keeping some things proprietary.
Posted by Rob Funk on September 24, 2004 at 04:57 PM PDT #
Posted by 42 on September 25, 2004 at 10:44 AM PDT #
The GPL is not really about protecting the rights of the developer, indeed it instead takes some rights away if they choose to either release using the GPL or use code that is already GPL.
The GPL is about protecting the rights of the customer or user of the software (with the exception of those customers who are also developers).
For example consider the customer buying a router/hub for their home broadband connection. By purchasing the Linksys product that is based on Linux (GPL) the customer knows that even if Linksys abandons that product it is possible to get fixes made, either by downloading from others or paying someone else. If on the other hand the product had been based on say *BSD then there likely would be no source code release, leaving the customer at the mercy of the developer of the product.
Most customers of software don't want to use the source code so whether the software is closed-source, BSD style license, or GPL doesn't matter to their use. What the GPL gives them is the option to preserve their investment if either the developer refuses to deal with their concerns or wants to try and create lockin by making key parts of the software closed-source.
Posted by Gerald on September 26, 2004 at 02:08 PM PDT #
Posted by Steve Parker on September 26, 2004 at 11:15 PM PDT #
Posted by Anonymous on September 27, 2004 at 06:27 AM PDT #
I'm not entirely sure your analogy works. GPL is about making modifications publicly available if you distribute derivative works. In-house projects do not have to give back code as long as they stay in-house (there's no third party). So your analogy is partly flawed.
Also, I take it you mean by "restricting your rights to do as you please with your donation" that it restricts your ability to keep your changes secret. Given that you used publicly available code in the first place (GPL), many regard this as a way of giving something in return. Other than that, there's nothing. As for using libraries, that's what LGPL is for - so you don't have to open up a project that only links to a LGPL library. I believe this (LGPL) is one reason Sun chose Gnome for its JDS, am I correct?
I'm not saying (L)GPL is an end-all-be-all solution. Nothing is. But it's a good tool for its purpose, which is to allow collaboration and resource pooling while providing some measure of copyright protection when needed.
Posted by Anonymous on September 27, 2004 at 08:36 AM PDT #
Note that the three options you describe are fairly close to what are provided by, respectively, the BSD without advertising clause, the LGPL, and the GPL.
Those three licenses are very widely used and a lot of people have a basic idea of how they work.
It would be lovely if Sun could limit its choice to one of those three, instead of making everyone start over from scratch when they need to figure out, for example, whether Sun's license is compatible with the LGPL, or what requirements must be met for redistribution.
Posted by Bruce Fields on September 27, 2004 at 08:41 AM PDT #
Posted by Anonymous on September 27, 2004 at 09:43 AM PDT #
I think your points 1, 2 and 3 don't quite capture the analogy with the GPL. I think the GPL is closer to:
"Here's my pile of 2x4s. You can take any you want for free. You can use them any way you want, modify them any way you want, for your own projects. But, if you build something using my 2x4s to give to someone else, you have to give it away under the same terms you got my 2x4s. If you don't want that, either don't use my 2x4s or come to me and negotiate a deal for my 2x4s."
I bolded those words because they're something I see ignored often by people on the corporate side saying how burdensome the GPL is and how it restricts their rights to their software, ignoring the fact that without someone else's code theirs would be worth pretty much nothing or would've required considerably more work to write all the parts they got for free by using a GPL'd work as the base. If you want to benefit from someone else's work, you expect to pay for it. Commercial software expects you to pay in cash, GPL'd software expects you to pay in kind (and then only if you want to distribute the results to others).
Posted by Todd Knarr on September 27, 2004 at 01:46 PM PDT #
A better analogy would be:,
You have the right to use my style of 2x4 as-is, and if you decide to build yourself a house with it I don't even need to know. But if you start building houses for other people too with your modified 2x4s, then your style of modifications must be made as freely available as my 2x4 style was.
Posted by George Kamp on September 27, 2004 at 02:37 PM PDT #
Posted by Mephistopheles Jones on September 27, 2004 at 04:12 PM PDT #
Thanks for the comments.
Yes, the analogy has flaws. A house is both excludable and rival, while open source software is neither.
But whether you're talking about 2x4s, the design of 2x4s, or plans for a house, you eventually come back to the same problem of derivative works. This was the point I was trying to illustrate, and I think the analogy works perfectly well in this limited scope. It was not designed to demonstrate transfer of customer rights or the nature of open source contributions.
The GPL has made it clear (either implicitly or explicitly) that any software which links to it in any way must fall under the GPL. Otherwise, there would be no need for the LGPL. The issue of non-GPL kernel modules is under constant contention, and has scared off enough commercial vendors for me to be wary.
Some of the comments are obviously way off base and probably don't deserve a response. But I'll stick to the original point of the article, the point that people still seem to dance around. As quoted in a previous comment of mine:
Say I post an example of a function foo() to my website. Oracle goes and uses that function in their software. They make no changes to it whatsover, and are willing to distribute that function in source code form with their product. If it was GPL, they would have to now release all of Oracle under the GPL, even though my code has not been altered. The consumer's rights are preserved - they still have the same rights to my code as before it was put into Oracle. I just don't see why they have a right to code that's not mine.
No matter how you try to spin my words, this is still the heart of the issue, and one that I don't agree with it. That does not necessarily mean that everyone else is wrong for choosing to believe in it.
Posted by Eric Schrock on September 27, 2004 at 04:25 PM PDT #
Posted by Chuck on September 27, 2004 at 04:41 PM PDT #
Posted by Chuck on September 27, 2004 at 04:43 PM PDT #
To re-quote Eric for clarity:
Say I post an example of a function foo() to my website. Oracle goes and uses that function in their software. They make no changes to it whatsover, and are willing to distribute that function in source code form with their product. If it was GPL, they would have to now release all of Oracle under the GPL, even though my code has not been altered. The consumer's rights are preserved - they still have the same rights to my code as before it was put into Oracle. I just don't see why they have a right to code that's not mine.
I think, Eric, you're deliberately ignoring the third option. If you publish foo() under the GPL and Oracle uses it in their code, then yes they're obliged to make all of their code available under the GPL as long as they got foo() under the GPL. That's what the GPL requires. But Oracle can always go to you and license foo() under non-GPL terms. Sure they have to actually go get the license, but then they'd have to do that if foo() were commercial software so I don't see the GPL adding any additional burden.
Let me turn it around: why should Oracle gain the right to distribute your code in violation of the license you published it under just because they want to? I don't think they should.
As for the GPL/LGPL split, I think you've got some good points there. However they were mostly addressed by the creation of the LGPL itself, which occurred exactly because of those very points. The GPL worked well for entire programs but it didn't do what the creators wanted when it came to libraries, so they took the GPL as the starting point and modified the terms until they had a GPL that let people use libraries in a reasonable way, and called it the LGPL. My presumption is that, if you published a routine under the GPL and not the LGPL, you intended the terms of the GPL to apply and not the LGPL. If someone then asked me why the conditions of the GPL applied to your foo(), I'd reply "Because that's the license the creator wanted it published under. His code, his right to set the license terms.".
Posted by Todd Knarr on September 27, 2004 at 05:24 PM PDT #
Todd -
The point of this discussion is choice of license. In my example of <tt>foo()</tt> we are dealing with a theoretical function that has yet to be released. By choosing the GPL, I am limiting how customers can use that code. The fact that I can release it under a different license simultaneously is not germane to the discussion. Same goes with "why should Oracle gain the right to distribute your code in violation of the license ..." I have the option choose a license that is not GPL (particularly, one which has most of the same guarantees about source code distribution and modification).
The purpose of the example, indeed the entire post, is to show that it's possible to pick a license that doesn't have this restriction. You have taken this to mean "the GPL flawed" and that I have problem with code already released under the GPL. What I am trying to say is that "I don't agree with every aspect of the GPL", and that given the choice, I may choose a different license because of that. While I don't have a right to gripe over code that has been released under the GPL, I do have a right to choose a different license a priori.
Posted by Eric Schrock on September 27, 2004 at 05:47 PM PDT #
GPLed code is NOT a public donation i.e it is not a donation to just anybody. It is a contribution to a very specific community. Those who want to share and share alike. If you object to that, there is always the BSD license. But you can't fault the GPL for being crafted to suit its purposes.
Finally, the GPL does not take rights away from the developer. It is developers who choose to use the GPL and so they bestow rights on others. Only if one believes that a standard proprietary license is the one true way, can one view this as giving up rights. If you beleive in the philosophy behind the GPL (and every license has an underlying philosophical worldview) then you are not giving up any rights because you did not have those "proprietary" rights in the first place. An example might make this clear. Suppose you find $1000 in cash on the street and turn it in to the relevant authority/owner. You would not, in the normal world, be giving up any money. Precisely because the money was not yours in the first place. However, if you lived in a world that believed in finders keepers, then you would be giving up the money, since finding it made it yours.
emk
Posted by emk on September 27, 2004 at 08:41 PM PDT #
Hi Eric,
You say:
This would be fine, except that GPL advocates often blur the line between #2 and #3, and make it seem like the protections of #2 can only be had if you fully embrace the GPL in all its glory.
And damn right we do. Let's look at it. Let's assume that I built a brilliant piece of software. I want all derivatives of this particular software to be free. In other words, if you want to compete with this software commercially, I don't want you to be using pieces from the code I wrote. I have the choices of the GPL or LGPL.
You seem to be saying I only want #2, and should therefor go with the LGPL, right? But what if certain aspects of my implementation are brilliant, and you take these aspects and put them into a library. You then link with that library and do your own stuff. I find that I can no longer have my desired #2. The reason is that, unlike 2x4, software can be derived to the point where it looks nowhere near what it started off like.
To try and shape it into your analogy, my 2x4 had some unique quality. You can shape them into something that is not a 2x4 (but still has that quality), and then build a proprietary 2x4 from that new thing. You then claim that your new 2x4 is not my original work, and therefor (under the assumptions of #2), does not have to be free. We find that #2 was not achieved, because we did not insist on #3.
Shachar
Posted by Shachar Shemesh on September 28, 2004 at 12:05 AM PDT #
In the end the missdirected arguments will amount to naught. The customer will decide.
Posted by Charles Esson on September 28, 2004 at 04:18 AM PDT #
Posted by Michel Nkwenti on September 28, 2004 at 02:18 PM PDT #
Sigh.
Let's say I release some code under my ideal license. Now, it's possible to have the following things be true:
My rights are preserved. My customer's rights are preserved. Note that this does not include:
If you distribute the code as part of another work, all code contained in that work must be made publicly available.
Comment after comment has gone off on some tangent or another, without addressing this fact.
The point of #3 is that the original code (2x4) has not been modified, only used in a new way. I can force my work to be free (as originally licensed) for all my children and children's children, without forcing anyone who uses it (without modification) to also be free.
I think Dalibor is the only one who has understood what I'm trying to say. The whole post revolves around this single point, which I've reiterated many times in the comments. It is a philosophical issue, but few people seem capable of just accepting my right to disagree. Instead, they're turning this into some religious battle which has very little to do with my original post.
It has become evident that this is a futile argument. It has proven my point, and reinforced the negative stereotypes of GPL zealots that I already had.
Posted by Eric Schrock on September 28, 2004 at 02:57 PM PDT #
However, I did see a one mistake I wish to correct, and I also have one comment I wish to make to Mr. Schrock.
The mistake was that one poster stated that the GPL prohibits commercial development - this is not so. The GPL only prohibits proprietary development and mixing up these two terms is one major reason why many business that might be potential contributers of code under the GPL are frightened off. GPL advocates need to stop using these terms interchangeably, and they also need to correct those that make the mistake whenever they see it.
Finally, for my own contribution to the discussion. I personally believe that the MIT and BSD style licences are the most free licences. However, one need only to look at the respective codebases to see one problem. When it comes to encouraging open source applications, the GPL does much better then the MIT or BSD licences. In my own work, I find many, many libraries, toolkits and code fragments are available under the BSD and MIT licences, while mature applications are in shorter supply.
Before others begin with the flames, I am aware that this is not absolute, and that there are many BSD licenced applications (and indeed a BSD licenced OS). But a comparison with the GPL application base shows the distinction, in my experience. The GPL is better at encouraging complete applications under an open source licence.
Posted by Robert Loggia on October 06, 2004 at 09:52 PM PDT #