Posted on 07/08/2008 5:49:48 AM PDT by ShadowAce
If you ever plan on writing an open source program, then you must make an important decision, selecting a program license. Generally for open source programs, there are two main licenses that most developers take into consideration. These licenses are the Gnu General Public License, and the BSD license. This article will explain the fundamentals of each license, and will help you in choosing the right license for your open source project.
The first software license that comes to mind for an open source program is the Gnu General Public License(GPL). Created by Richard Stallman in 1989, the GPL is currently at version 3. The GPL is a restrictive license, which actively enforces copyleft"
The BSD license is a permissive license, allowing more freedoms to the users who wish to use your work in their programs. Using the BSD license, a company or entity can take your program and incorporate into a commercial product, which is not allowed under the terms of the GPL.
The main differences between GPL and BSD licenses
This section is a question and answer section, and will demonstrate the fundamental differences in the GPL and BSD licenses.
Question: Who can use my code?
BSD Answer: When using a BSD license, a company (or a person) can take your code and use it in their own commercial or non-commercial products, and isnt required to give you credit or compensation for your work.
GPL Answer: Another party cannot use code licensed under the GPL without giving the original creator (for example, you) credit for their work. If a party does decide to use your work commercially, they cannot charge for your work, only for the repackaging of it. An exmaple of this is Cedega, a commercial program for Linux which is a fork of Wine, a Windows compatibility layer for Linux. Since Wine is licensed under the LGPL (Lesser GPL license), Cedega must provide the source code to all the Wine code that they use. They must also provide the source code of any modifications that they do to the Wine source. Although, some of its own code that hasnt been forked from Wine is licensed under another proprietary license, so that code doesnt need to be published for the world to see.
Question: So why bother using the BSD license if the GPL gives my code better protection?
Answer: For some developers, simply having their code out in the wild is fine, and they dont need or care about protecting their code from commercial use. The BSD license also makes it easier for people to create commercial or non-commercial forks of your code if you decide to abandon your project. This reason was a deciding factor for the Apache software group when they chose a BSD-style license for their webserver, who stated, This type of license is ideal for promoting the use of a reference body of code that implements a protocol for common service. This is another reason why we choose it [BSD license] for the Apache group - many of us wanted to see HTTP survive and become a true multiparty standard, and would not have minded in the slightest if Microsoft or Netscape choose to incorporate our HTTP engine or any other component of our code into their products, if it helped further the goal of keeping HTTP common
In summary, choosing either a GPL or BSD license comes down to what you (the developer) intends to do with the code that you use. This document should do an adequate job of presenting you the information on each license, and it is now up to you to weigh in the pros and cons of using each license in your program, and to select the one that is best suited to your needs. Have fun, and good luck working on your project!
I’m curious, how much does using open source licenses free you from legal responsibilities to support your code?
The licenses for code usually allow rights to users that aren't normally allowed by copyright. Each license (including MS' licenses) grants different rights.
In most cases, the licensing agreement promises very little to the purchaser, and software is supported not out of a legal obligation, but out of a desire for repeat business or to maintain a good reputation.
Open source licenses promise basically nothing. They only place restrictions on the user of the code. Accepting those restrictions is the price you pay for using the code.
However in general you only have an obligation to support your code if you explicitly or at least implicitly promise such support. Most companies will explicitly deny any obligation to support their code because our courts have a habit of upholding the unreasonable expectations of idiots as enforceable obligations.
Read any proprietary or open source software license, they disclaim even the responsibility for the software doing what they say it does. There is zero claimed responsibility for support in either case unless the author decides to provide it.
How about the happy middle ground, the Mozilla Public License. Not anti-commercial, but still with payback. Commercial vendors can include your code verbatim in their products and not have to give any of their code, but any changes to your actual code do have to be published under the MPL.
It’s better than the GPL because it is more free. Anyone will be able to get all published versions of the code for free (if modified, must be released), plus people who use it in their apps have more freedom in how they license their original, non-modification code. There’s never any worry of “If I just link to it, does that make my code a derivative?” (different GPL authors have different conclusions about this).
It’s better than BSD because people won’t legally be able to take your code down a black hole, never to be seen again, effectively making a future version of your free software non-free. With BSD you don’t necessarily get anything back for your work, eliminating the capitalist aspect of open source.
I posted this so we'd have an on-line resource when ORT starts claiming that BSD is "better."
Not at all, unless you tell someone you will support their system there is no legal requirement to do so..
RedHat sells support so they must support even though its GPL
A lot of proprietary ones don't either.
They only place restrictions on the user of the code. Accepting those restrictions is the price you pay for using the code.
Many proprietary licenses place serious restrictions in addition to having to pay for the software. A lot of vendors even said you couldn't release benchmarks of their products without prior approval from them. Microsoft and Network Associates have invoked this clause to prevent embarassing results from being published. NA's terms were thrown out in court, and Microsoft has gotten a bit better now for Vista at least: you can release results for any .NET benchmarks but only if you follow their rules, which include the release of your complete source code and scripts used to do the benchmark.
...
I think that's fine, and in fact I wish -all- benchmark programs had to follow that rule. I have written a lot of test/exercise code, and I know how easy it is to have unintentional bias leak in.
Also, releasing source of the benchmark means that -all- the tested vendors can tweak their code for better results, instead of only the vendor who pays off the benchmark writers. [slight /sarc] The source release requirement can only improve the quality of the benchmark.
I trust proprietary benchmark programs even less than I trust proprietary applications. I use proprietary software when I have to, and I rely on it to a degree every day, but never as much as if it were open.
It may be nice practice, but it shouldn't be forced. Here the king of proprietary software is telling everybody else to release their code. I don't think license terms for such products should be able to affect your freedom of speech. Boiled down, benchmarks are just "I used this publicly available program and here are my experiences." Courts aren't likely to allow such speech to be restricted or subject to terms, and so far they haven't.
This is of course separate from a private alpha or beta program where you sign an NDA for the privilege of being in on the program, and such NDAs have expirations (usually at the end of the program).
I wish people wouldn't say things like this....
Among Open Source licenses there aren't really any that are "better."
More properly, the are different.
The purpose of the GPL is to ensure that the code stays free. The terms of the GPL state that if you take GPL code, change it and then distribute binaries, you have to provide the source code for your changes. This ensures that no one takes the code and locks it up.
There are philosophical differences and some people may disagree with the purpose of the GPL, but it's no better or worse than other licenses.
The purpose of the GPL being to keep code available, it is "better" for that purpose.
If that doesn't interest you, then it's not "better," so using "better" is entirely point-of-view.
The only problem of the GPL (and I'm talking about GPL2) is that it is ambiguous. You don't know the extent of what's allowed depending on the author.
By more free I meant the balance between the producer and consumer, maximum freedom to both parties without conflict. You want to make sure the actual code stays free, which GPL does and BSD doesn't. You want to make sure the consumer has maximum rights, which BSD does and the GPL doesn't. The MPL balances this perfectly IMHO: the code itself and modifications to the code itself remain free, and consumers get maximum rights just short of violating the freedom of the code. Depending on the author, the GPL may mean that more than just the original code and modifications must be made free, such as software that only links to the original code.
It's not that the GPL2 is bad, I just don't like the ambiguity that can lead to overreaching. And I hate overreaching in licenses.
???
The GPL is the GPL. Either your code is under the GPL or it isn't. The requirements are spelled out in the license.
The MPL balances this perfectly IMHO: the code itself and modifications to the code itself remain free, and consumers get maximum rights just short of violating the freedom of the code.
That's kinda like balancing between the right to keep and bear arms and sensible gun control. You can't have one and still have the other.
If you want your code to remain available then letting the end user decide what to publish and what not to is not a balance.
If you want the maximum penetration of your software then putting any restrictions on what the end user can do can prevent that.
There are different reasons that people use Open Source licenses. That's why there are different licenses.
Pick the license that fits your philosophy and use it. Respect the right of other users to use a license that fit's their philosophy.
The MPL fits a different group than either BSD or GPL. And that flexibility, that ability to pick a license and have it do what you want is what matters.
The BSD license gives maximum freedom to the user at the expense of the freedom of the code. The GPL gives maximum freedom to the code at the expense of putting restrictions on the user. The MPL takes a little freedom from both sides.
So, depending on how much you care about where you want the freedom to be, different licenses are more suitable for that purpose.
The license you pick may be "better" for your purposes. That doesn't make it "better."
I'm mainly talking about linking to GPL code. Some authors consider doing that as making the whole product a derivative work, some don't, some like Torvalds with drivers think your driver is derivative if it requires Linux (written for it, not a non-GPL port). Not all authors agree about the meaning of "derivative," thus the ambiguity. A license shouldn't be ambiguous.
If you want your code to remain available then letting the end user decide what to publish and what not to is not a balance.
With the MPL the author is required to publish all of the original MPL code including any modifications to that code. The user has no choice. This is exactly like the GPL, the code will remain free. The difference is the clear delineation between what is derivative and what isn't. Any code you write outside of the original MPL code is not considered derivative. Basically, it codifies the intent of many GPL authors and disagrees with others.
Pick the license that fits your philosophy and use it.
I dislike philosophy in software. It leads to radicals like Stallman and our resident troll (sorry, courtesy means I have to ping it). I would say pick what best fits your situation, BSD, GPL, MPL or even proprietary. But unless you're planning to make your own code GPL when using GPL code, I'd check with the author first about his intent if it isn't already known.
No, it's not ambiguous. All you have to do is go read what the writer of the GPL said.
Does prelinking a GPLed binary to various libraries on the system, to optimize its performance, count as modification?
But unless you're planning to make your own code GPL when using GPL code, I'd check with the author first about his intent if it isn't already known.
Unnecessary. Code under the GPL is bound by the rules that the writer of the license says, not what the author wants them to say.
Notice the fact that this clarification is in a FAQ, not clear through the license itself. But if such linking is allowed, why do we have the LGPL which is basically GPL plus allowed linking?
Code under the GPL is bound by the rules that the writer of the license says, not what the author wants them to say.
We've already seen how Linus Torvalds disagrees.
Good points.
I guess I wasn't really thinking in absolute terms. I don't think you should be absolutely restricted from publishing benchmark results without source. But if you don't publish source, you should not be able to claim the results are necessarily meaningful to anyone else (for example, in a review).
I've been burned by benchmarks more times than I can count, usually as a design engineer trying to evaluate my own design, and finding out much later that the benchmark was "tuned" for a competitor's product...
Disclaimer: Opinions posted on Free Republic are those of the individual posters and do not necessarily represent the opinion of Free Republic or its management. All materials posted herein are protected by copyright law and the exemption for fair use of copyrighted works.