views:

104

answers:

3

I am about to host my first open source project. I will be hosting it on codeplex where I can choose between the follwing licenses:

Apache License 2.0, Common Development and Distribution License (CDDL), Eclipse Public License (EPL), GNU General Public License (GPL) v2, GNU Library General Public License (LGPL), Microsoft Public License (Ms-PL), Microsoft Reciprocal License (Ms-RL), Mozilla Public License 1.1 (MPL), New BSD License, and The MIT License

Now I am totally new to all this licenese thingy. Not only I do not know what license I should choose but also I don't really know what kind if rights I should grand and deny. Any help on the process of finding a license is appreicated. What kind of things need be considered? What question should I be asking myself?

Also: Do I loose any rights when I put the code under any of those licenses? Do I need to adhere to the chosen license too?

+11  A: 

There are three main families of free software licenses: permissive, weak copyleft and strong copyleft.

Permissive licenses (MIT, BSD and Apache in your list) allow use of your code in proprietary projects without sharing back either their code or your code, if they modified it.

Weak copyleft licenses (LGPL, MPL in your list) allow use of your code in proprietary projects, but they should share back your code under the same license if they modified it.

Strong copyleft licenses (GPL) require that they distribute their own code under the same license (GPL here).

I recommend against choosing other licenses in your list in order to fight license proliferation. You can read more about free software licenses in Wikipedia, FSF and OSI.

codeholic
+1 For a very nice overview and the fact that you recommended to restrict the choice to commonly used licenses in order to prevent trouble.
paprika
Good and concise answer. You may want to change the word "disclosing", and add that all these licenses insist on attribution, so you will always "get credit" if that's all you want. If you don't want your code to be used in a locked-up proprietary project, use GPL, and if on the contrary you don't want to restrict proprietary software from using your code, use one of the permissive (MIT/BSD/Apache) licenses.
ShreevatsaR
Do I loose any rights when I put the code under any of those licenses? Do I need to adhere to the chosen license too?
bitbonk
I think you're not right in that all these licenses insist on attribution. As far as I understand, permissive licenses (at least those listed) require attribution only if you distribute the source code, but attribution is not required for binaries.
codeholic
@bitbonk You don't loose any rights, you relinquish them ;-) You don't need to adhere to the chosen license, but you cannot revoke the license for the versions of software you've already released under its terms. Sorry for my English :-) Am I clear?
codeholic
A: 

What rights should you grant or deny?

  • Are you comfortable with anyone using your program?
  • Are you comfortable with anyone modifying your program?
  • Are you comfortable with anyone selling your program?
  • Are you comfortable with anyone selling modifications of your program?
  • Are you comfortable with somebody selling your program as closed source?

This are questions you need to answer on your own.

BTW, in my opinion GPL v2 or later is a safe default choice. It is used by those that answer 'yes' to all but the last of my sample questions.

Tadeusz A. Kadłubowski
Do I loose any rights when I put the code under any of those licenses? Do I need to adhere to the chosen license too ?
bitbonk
You are the *owner*. You give other people *license* to use your work on certain terms.
Tadeusz A. Kadłubowski
A: 

This gives a pretty good outline of what is out there

http://www.codinghorror.com/blog/2007/04/pick-a-license-any-license.html

There's a tool to help you pick on the Creative Commons site

http://creativecommons.org/choose/

We need something like that for all our code licenses!

Chad
+1 for the first link, -1 for the second. Creative Commons are not meant for software! Zero result.
codeholic