Selecting a Software Licence?
indraneil asks: "I am a code monkey and have been so for close to 5 years now. I have recently been doing some self-started work that lets me design, implement and test stuff all by myself. A couple of people have liked my prototype and wanted to use it. I would be happy to let others use it, but I am unsure of what license to release it under. My CS course did not include any awareness of licensing and while I am aware of GPL, LGPL, Apache, BSD and Creative Commons licenses, I never got around to understanding them well enough to be able to form an opinion on what suits me best. I notice that SourceForge also expects me to specify my licensing choice, while I am setting up my project. If a person doesn't know about software licensing, where should they educate themselves about the ins and outs, so they can properly choose the license that is right for their project?"
I vote for GPL.
http://www.x2ii.info/
Wikipedia has some useful information on the various licenses if you don't want to read through them directly.
This guy has some good points and it's worth a read. Title of the article is "Pick a License, Any License"
http://www.codinghorror.com/blog/archives/000833.Curiosity was framed, Ignorance killed the cat.
Open source does not mean no cost.
http://goatse.ch [twofo.co.uk][goatse.ch]
I looked into that one once, but it was full of holes...
This guy's the limit!
The short version:
BSD: Anyone can use your code, any way they want, as long as they mention your name.
GPL: Anyone can use your code, as long as they mention your name and allow others to use the code as you have let them use it.
LGPL: Same as GPL, but with some exceptions allowing others not to be bound to your licence if they don't actually touch your code in their project, but just use it.
Other licenses have variations on the above. In general I think most people should stick to one of those three, if for no other reason than to stop the confusion.
Pick the philosophy you like the best. That is the main point.
'Sensible' is a curse word.
If you are an individual or small team, the most important thing is to keep control over your copyright so you can make money from those people willing to pay for your work.
If you want to open source it, use the GPL and offer a commercial license opt-out. If you use the BSD, no-one will pay.
Do not accept any contributions unless people are willing to transfer (c) to you, or you cannot relicense your work.
Do not use GPL libraries, only BSD-licensed ones, or you cannot relicense your work.
If you are a team or company that does not want to make money from the software, license it under the BSD or Apache license.
My blog
You start with your intent. What are you trying to achieve by releasing the code?
Start by using a spell checker
I understand that. But, keeping it closed source and selling it to M$ = bigger profit.
I don't like the GPL, because it's to virial/constricting.
I don't like the BSD because it's to prone to abuse from others.
I would use a modification of the BSD licence where:
(1) Anything that uses the sotware/code must mention the software/code is being used and that part of the code is under the licence (the rest of the software/code is not).
(2) If the software/code, or any derived software/code is not being provided for a fee (even a cost of distribution fee), or associated to a fee (i.e. distributed for free, but pay for support), there are no other terms or conditions for use, but also no warantee/gurantee
(3) If criteria (2) is not met, then the users of the software/code must come back to you and come to an agreement regarding payment, and possibly the use of another license.
From a developer's perspective, it all depends on who you want to have the most freedom with your code.
With GPL you give freedom to the community - anything using GPL code will always be GPL.
With BSD you give freedom to the developer - they can use your code almost any way they want. Closed source devs can modify and distribute binaries as much as they want without giving anything back to the community.
LGPL is like a mix of the two. The single developer can use thier own license so long as they only link to the LGPL code. Any modifications to the LGPL code are under LGPL, so some things are still given back to the community.
There are many software licenses to choose one, and everyone should have a license that does exactly what they want it to do. You don't even have to pick a preexisting one; write your own with the help of a lawyer (if you need it).
However, it sounds to me that your intention is to share this software with others. If you want to share it with just those individuals you choose, use some different license and have them sign an nondisclosure agreement or something (ps I am not a lawyer). If your intention, however, is to share your software with the public at large and have the community benefit as a whole, then please use the GPL.
The reason why the GPL is important for this purpose is that it makes your community software stay in the community. Lots of commercial enterprises use the GPL for reasons like this; they have valuable assets they want to give away (in the from of source code), but they don't want their competitors using it to screw them over--they want the world to benefit, and they themselves might benefit from seeing improvements to their code. That's the GPL.
If you use the GPL, not only will you be sharing your hard work with others in a way that you deem appropriate, you are also encouraging them to share their work with you. Whoever uses your project or develops it will assume a mutually beneficial role with everyone else who does the same, including you.
You know how they say...if you love something, set it free? You'd want to take some steps to ensure that it at least STAYS free, right?
For the official Free Software Foundation (FSF) commentary on their GNU Public License (GPL) and other licenses, http://www.gnu.org/licenses/license-list.html is the place to start. The title of the page is: "Various Licenses and Comments about Them - GNU Project - Free Software Foundation (FSF)." I have referred to it often over the years.
One thing I like about Creative Commons is that their license page basically lets you mix and match license clauses to your own specification. Kinda nice to have a quick pre-build license reserving precisely those rights you desire.
The KDE documentation contains a brief comparison of open source licenses.
You might also want to consider using more than one license for different parts of the application. You could for instance create some sort of support library and license it under LGPL, but use BSD or GPL for the actual application. This way others can use the library in other projects, even closed source ones, but your application is always guaranteed to be open source.
Curiosity was framed, Ignorance killed the cat.
I find it hilarious that the OP asked how to educate him/her-self on this topic and immediately there are lots of post recommending a license (overwhelmingly the GPL); this is NOT what the OP asked for.
/you/ want, read the licenses. This site:
@OP:
If you want to educate yourself on what licenses would be appropriate for what
http://opensource.org/
has a TONNE of them.
The most common are the BSD, MIT, MPL, Apache, GPL and LGPL. That is according to sf.net. Please note that there are licenses that don't just protect you, but seriously effect how others can use your work. Please consider this as well when choosing your license.
To add in my personal opinion, I *really* don't like the GPL. What it does is FORCE other developers that use your work (whether dynamically linked to or not) to use the GPL as well. My personal opinion is that as a developer, I don't have the right to choose the license of someone else's work. There is of course the argument that the developer just shouldn't use your work. But, IMO, that is a non-argument as in some areas there really is only one or two real options.
At any rate, agree or disagree. That's just my opinion.
He clearly meant an open-source license didn't he? Why do you have to be an asshole about it? It's not your code, is it?
And before you dig up that tired old argument, no, *I* have never told someone they should go for an OSS license when they wanted a closed-source one. Strange as it may sound, slashdot is not a single being and I'm not responsible for the comments of the penguin fanatics.
What about non open source licensing? Anybody know any good resources for a prebuilt one so you don't have to have an army of lawyers to create one from scratch?
There are really two big open source licenses, along with many that are similar or slight modifications thereof:
Otherwise, keep the license closed and license it specifically to other individuals and groups for $20 a head and provide it like a traditional, commercial product.
Whatever annoys Stallman the most.
I metamoderate, therefore I am
Is "public domain" a kind of license?
Whatever license you choose, remember that you can *change* your selection later, as long as you still own the copyright completely.
You can release it as GPL, then (if people convince you there are good reasons to relax the license somewhat) you can switch to LGPL, BSD, whatever.
You can also *sell it* to commercial customers who want to distribute it as a part of a closed source project. Yes, at the same time as you have a GPL version out, or you can stop distributing the GPL version and go pure closed source.
The point is, as long as you personally own the copyright, you can leverage that however you want. If/when you start accepting contributions/patches/etc. from other developers under the GPL, though, you have to get agreement from them to change anything (unless they sign over copyright for their code to you). Getting permission to change from many, far-flung developers is not easy... so ideally you should make sure you are happy with your license before accepting donated code.
Yes, if you release it as GPL then go back to closed source, other people might "fork" your project and continue development & distribution of their own version. But THEY must always stay GPL -- they don't own the copyright, so they don't have the option (like you do) of changing the license.
These distinctions are important to understand; they're what make the MySql business model (for example) possible.
In order from least to most restrictive:
Use Public Domain if you don't care what people do with your code.
Use the MIT or X11 license if you want to give it as much chance as possible of being used by as many people as possible, without them being able to pass your code off as theirs.
The BSD (3-clause) license goes further by preventing other people from using you to endorse their products without your permission.
The LGPL ensures that the code will remain 'open' (i.e., distributing altered binaries means you have to distribute the matching sources). The LGPL specifically allows your code to be linked with, but not included in, non-LGPL projects. If your code isn't a library (or included in one), the LGPL isn't hugely different from the GPL, although releasing a program under the LGPL would mean somebody could turn it (or portions of it) into an LGPL-licensed library without any hassle.
The GPL is much the same as the LGPL, but doesn't contain any such provision for linking, so people linking with your code (if it's a library) had better make sure their do their homework first.
The GPL-compatible licenses (which includes PD, MIT/X11 and BSD) are so-called because they don't contain any restrictions beyond those included in the GPL. This means that your code, if released under a GPL-compatible license, can be legally be included in a GPL-licensed work: your code as you originally released it is still under the license you originally used, but the modifications and the derived work could be GPL'd.
Generally, the BSD license is a safe bet if you don't feel passionately about making sure that people who use your code must make their changes available to anybody who wants them, otherwise pick the LGPL or GPL depending on circumstance and requirements.
Avoid non-GPL-compatible licenses, especially home-grown ones: they usually end up doing nothing but preventing people who might want to use your code from doing so. Unless you're a huge multinational company, it's a sure-fire way to ensure that relatively few people will bother with what you've released (in which case, what was the point in releasing it?), and even then it'll stymie adoption.
Er, wait, I think I missed something here.
Yeah, you missed the part where we think our work has some value and would like some of that value contributed back. For the free software, it's code, enforced by the GPL; for proprietary software, it's money, enforced by copyright law.
Not so different, really.
IMO the zlib/libpng license is the best. It's functionally equivalent to BSD, but you don't need an army of lawyers, university presidents, or OMINOUS ALL CAPS DISCLAIMERS. In English, it says the following:
- Use the code however you want, but don't claim you're the author.
- You can modify the code, but don't claim the modified code is the original.
About as simple as it gets.
ROMANES EUNT DOMUS
Like many, I started out with GPL, moved up to LGPL, and finally realized that the BSD license was really the fairest.
p
The license is short and to-the-point, giving the author all the recognition and indemnity they need, and users all the freedom to derive that they could want.
Stay away from the silliness that is the whole inbred family of Creative Common licenses. They're a mistake that should never have happened.
You can see a sample BSD license here: http://www.opensource.org/licenses/bsd-license.ph
Nothing is inexplicable; only unexplained -Tom Baker, Doctor Who
Want to help people? Public domain: give it away.
Want to make money? Proprietary license: sell binaries to end users.
No sense in being half-assed about this.
+0 Meh
That article is subjective, it's licensed under the GNU Free Documentation License.
I picked the Common Development and Distribution License for my recently open source projects. I wrote up a rather length justification for this decision (and why I decided against others, like the GPL, LGPL, and BSD license) on my blog.
You have tried to support your argument with faulty reasoning! Go directly to jail; do not pass Go, do not collect $200!
"With the GPL, that which is born free will remain free." -- Eben Moglen
...try O'Reilly's Understanding Open Source and Free Software Licensing, which you can find (gratis) at http://www.oreilly.com/catalog/osfreesoft/book/
Andrew M. St. Laurent does an IMO excellent job of explaining the predominant licenses, how they differ, why they differ, which phrases of the license are the important ones and which ones are just fuzzy, and other considerations, including how you should select a license (don't forget that just because your work is "self-started", you don't have free license choice, depending on if and what you link against).
I recommend that, and I recommend all of the above comments saying to stick to one of the big licenses.
Then what free license is intended for works of authorship that include a significant amount of computer program and a significant amount of work other than computer program, such as educational software or video games?
Just a remind that you can license your code in more than one licenses. MySQL does this.
Why more people don't use public domain...
There's no "hold harmless" clause.
The upshot of this is that you are potentially legally liable for consequences arising from someone taking and using the code. This includes, but is not limited to:
- implied or statutory warranties
- legal liability for direct, indirect, incidental, special, consequential, or other damages
Putting something in the public domain unfortunately does not protect you from this by making it truly public property. Instead, you open yourself up to a world of legal hurt - particularly in countries like the U.S., which has more lawyers than could be kept gainfully employed otherwise.
It's unfortunate, but current tort law has made it such that there is (effectively) no such thing as a Commons. It won't be until nearly 2030 until the first piece of software without this liability risk comes off Copyright; I doubt that when it does, you will be able to get useful source code for it anyway.
-- Terry
Holes? Are you kidding? The whole thing's just one big hole!
.evom ton seod gis eht
The most important thing about all the most open source licences is that anyone can take your program,change the name, add some trivial changes and sell it (although with GPL they have to give away the code).
I'm amazed how many people GPL or BSD a program, then flip when someone else does this. If your program gets popular, someone will. Be sure you want that to happen. I think many people would be better off releasing the source code to their program and accepting patches, but not allowing derivate versions.
Combination - fun iPhone puzzling
If you're code has any worth I'll give you money out of my own pocket (as I recently did for MUSHClient). You don't need the government to make me.
So, the GP quoted the wrong Web page, but your statement is wrong. If you need static linking the LGPL is as infectious as the GPL. (That's why ECL LGPL license is pointless, as ECL is intended to be statically linked).
We are Turing O-Machines. The Oracle is out there.
I really like this (previously unheard of) CDDL license.
And your reasons are just right on the spot.
We are Turing O-Machines. The Oracle is out there.
The word "license" means "permission to do [something]" so in that sense, you could say that it's a license of sorts.
Although I suppose it would be more accurate to say that disclaiming your work into the public domain means that people no longer need anyone's permission to use it, so no one is under license and no one needs to be.
Remember, all property ownership is a government granted right. When the white man first showed up in N America and offered to buy land the natives were on the ground laughing much as you would be if I tried to buy a bridge from you. Of course if I sold you a bridge and you had the firepower to keep it it would be yours. Same with things like land, ownership is a government granted right. I mean if I can out gun you why shouldn't I have what you think of as yours?
https://en.wikipedia.org/wiki/Inverted_totalitarianism
If you want maximum exposure/use, the BSD license. GPL zealots will most likely fork and relicense it almost immediately if they wish to use it themselves, however.
If the acceptance of at least certain tragically vocal elements of the existing FOSS userbase is a priority to you, the GPL is your only real choice. The cult...sorry, community can have a tendency to refuse to use/develop anything that isn't GPL licensed on reflex, even if it is licensed under the BSD/MIT license.
It is possible to make money from software with the GPL, however be aware that you risk the sort of incident that befell Red Hat recently with Oracle. Oracle took Red Hat's codebase, and began offering support services to people itself, and seeing as support is the only thing Red Hat actually make money from, Oracle effectively took the meat out of their sandwich.
If you want to make money, I'd probably use a BSD/proprietary dual licensing approach; you have a baseline or "reference" version of the code which you keep under the BSD license, which people are free to take and do what they want with, but you retain the right to release a fork yourself which includes such proprietary elements as you see fit. You can then choose whether to add the proprietary elements back into the open source BSD licensed version later or not. I'd also keep downstream contributions clearly seperate from your own work in the code tree if possible; that way you can talk to the individual contributors about what licensing scenario (other than the GPL, the viral nature of which is specifically intended to assimilate an entire codebase if it is used at all) they want for their work. This way you can also avoid people screeching that you're "stealing their code" and issuing threats in the manner that we've seen Bruce Perens doing over the Microsoft/Novell deal.
Realise that if you do use the GPL, you are actually relinquishing control of your work far more effectively than if you were to use the BSD/MIT licenses, and that this is what Stallman originally intended. Although the openly viral element is distasteful enough in itself, its' most dangerous elements are actually the entirely subjective and unwritten ones; the insistence that you not only follow the letter of the license as it is currently written, but also that you accept Stallman and the FSF as (at least ideological, and very possibly legal) authority figures, which also means unconditional acceptance of any future version of the license, irrespective of what terms such future versions might contain. The welfare of the collective in abstract terms is the priority; the welfare of the individual is not considered.
On reflection, if you have the credentials, I would actually recommend seeking employment with a pre-existing software company, rather than attempting to join the FOSS community as an independent developer. Although it originally started out as something positive, I have come to believe that at least as far as Linux is concerned, the FOSS community now represents decentralised collectivism's dark side, or an illustration of what can happen when the anarchist dream is aimed for, but not genuinely reached.
It may be perhaps possible that at some point in the future, humanity could mature to the point where the concept of individual sovereignty could become a concrete reality. However, as members of the Linux community continue to prove on a daily basis, we're not there yet.
If you don't mind many others making stuff with your code, avoid GPL and use Apache/Mozilla instead. If you want to only have your code used by unwashed hippies like RSS, then go GPL and don't look back.
Many corporate shops I've worked with avoid GPL'd code, because they want the option of selling the product they make. They may never exercise that option, but they want it.
The GPL license does allow you the option of selling software under the license. What it doesn't do is allow you to prevent others from taking your software and also trying to make money from it as well. I've been wondering what license I'd write programs under myself. As I'm a photographer I'd like to work on a graphics program, specifically a photo editor with similar capabiliies to Photoshop, however if I'm going to spend all the tyme developing such a program I want to make sure I can make enough money selling it so it's worth my tyme before others can also sale it without me seeing a dime. Tyme that I could of used taking photos instead.
FalconShould there be a Law?