Take the 2-minute tour ×

What license should I pick on codeplex if I want an open source project? What are the pros and cons on all licenses?

share|improve this question
add comment

closed as not constructive by Kyle Trauberman, Filburt, ChrisF, David Pfeffer, j0k Oct 2 '12 at 20:36


3 Answers

up vote 47 down vote accepted

If you want to ensure that anyone who modifies your program or builds on top of your program (by linking to it) should share their changes in the same way that you share yours, you should choose the GPL.

If you want to ensure that anyone who modifies your library share their changes, but allow people to dynamically link to it from a proprietary application, in which they don't share the source with you under the terms you shared it with them, you should choose the LGPL.

If you want to allow anyone to use your code as they wish, with no significant restrictions other than providing you credit, you should use the MIT (also known as X11) license. It is short, simple, easy to understand, and permissive.

If you need to integrate with an existing project that already has a license, you should probably just use the same license. Having everything in one project under the same license makes life a lot easier for anyone who wants to use it. But if you're creating a new project, I would recommend one of the three licenses listed above, since they are widely used, well known so people know exactly what you mean when you mention them, and will make it easier to integrate your code with existing projects. There are lots of other licenses to choose from, but in general, they just make things more complicated and difficult (because they are less well known, because of license incompatibilities, etc) without improving on one of the licenses listed above.

share|improve this answer
What's the closest to en.wikipedia.org/wiki/WTFPL? What is the most permissive available on codeplex? For those who can't be bothered checking, these are the options: Apache, BSD, CDDL, EPL, GPLv2, LGPL, MIT, MPL, MS-PL, MS-RL –  George R Jan 1 '11 at 5:53
@George The most permissive is the MIT license. It is basically equivalent to the two-clause or simplified BSD license, but using the BSD license invites confusion because there are 3 common versions (2-clause, 3-clause, and 4-clause BSD), one of which (4-clause) is incompatible with the GPL and possibly other copyleft licenses. In case you're unfamiliar, the MIT license: opensource.org/licenses/mit-license.php –  Brian Campbell Jan 3 '11 at 5:00
add comment

It depends very much on what you want. I'll summarize very briefly, but I recommend reading more in depth on various licenses.

  • GPL: great if you want to share code but you couldn't sleep at night if someone put your code into a commercial product. Con: tons of legal stuff that's almost impossible to comprehend.
  • BSD/ISC/MIT: very minimal license that only retains copyright attribution. Maybe be used is commercial products. Can be understood by common people. Cons: if you care if Apple takes your code then it's not for you (webkit in safari, freebsd userland in OSX).
  • Apache/Mozilla: kind of like GPL, but also protects the brand name. Cons: you can't tweak and still call it by the name you got it.
  • Lots of variations on the above. Cons: nobody knows just what the license means.
share|improve this answer
Actually, many parts of WebKit are licensed under the LGPL; Apple is required to allow you to modify WebKit itself, though Safari is proprietary. This is how WebKit nightlies work; you get a new build of WebKit, and run it using your current copy of Safari. –  Brian Campbell Mar 28 '09 at 0:06
A question about GPL: Can you, being the author of the code, still use it in a commercial product? Or sell the entire application to which this license is applied for that matter? If not, what would be similar to GPL but still gives the author complete freedom? Sorry for the thread digging, came here through Google :) –  Jeroen Pelgrims Jun 24 '11 at 16:05
@JeroenPelgrims that would be a separate question, but since it is relevant: yes, you can, by Dual Licensing it. Most popular example: Oracle does this with MySQL. In essence, by paying, customers get a different/less-restrictive license. For free, they get to live with GPL. –  Hendy Irawan Mar 11 '12 at 7:10
add comment

The choice of license is personal, and depends on how you want your project used.

I would recommend reading up on this at the Open Source Inititive.

In particular, they have a page describing licenses grouped in categories.

Here are some of the more common, by goal:

For encouraging commercial usage of your project, I'd recommend looking at the BSD and MIT licenses.

For encouraging commercial and noncommercial work, but forcing that all users share any modifications to your code, look at the LGPL license.

If you want to force everybody who uses your code to share any modifications, look into the GPL license.

There are many others listed, each with their own significant benefits and downsides... These are just four very common choices.

share|improve this answer
They are not exactly grouped by goals on that page. More like a general "in use"/"superseded"/"not in widespread use" categorization. Doesn't help much for choosing, imho. –  Јοеу Mar 27 '09 at 23:56
@Johannes Rossel - Good point, I clarified a bit more. –  Reed Copsey Mar 28 '09 at 0:33
add comment
