GPL:jdart wrote:I think Martin means: GPL gives users of your code few choices. If you use it and distribute the results, then the combined code has to be GPL too.
Licenses such as BSD or MIT give the consumer more choices, including the ability to distribute code w/o requiring source publication.
Some developers want others to be able to use their code, but in exchange they want to receive back any improvements those others make, and/or they want to prevent "parasitic" uses of their code in closed-source or Tivo-ized commercial products, because this is viewed as a threat to the freedom of end users. So the GPL license terms are designed to balance and protect both the interests of the original developers and the interests of end users, by forcing the code to stay open. Downstream developers can reuse the code, but the price they must pay for it is to contribute back any improvements, and to not lock up the code in a proprietary piece of software/hardware. Commercial developers often dislike the GPL because it is incompatible with the licensing model of their own products so they can't use the GPL code in their products (and if they do and they get caught they can be forced to open all of their own source code too). GPL is popular because of the 'fairness' aspect: everyone must share, they can't "cheat" by using available GPL code but not sharing back their own code. Also it maximizes future freedom of the end users, and everyone in those communities are also end users who benefit from that.
Some developers just want to give away what they've made and hope other developers can use it to make something with it. These developers don't care about getting anything back in return, they are satisfied enough if their work ends up being useful to other developers. They don't really care about preventing "freeloading" (although they might care about correct attribution, which is a different issue). Code under an MIT or BSD style license can be used in closed-source commercial products, or fully open-source projects, or almost anything in between. These licenses maximize freedom for developers who receive the code, but don't do anything to ensure freedom of the end users. Commercial developers love this kind of code because they don't have to write it themselves and if they want to, they can just use it without giving anything back. Some downstream developers make an effort to give back anyway, even if the license doesn't require them to.
Whatever license you want to use for your code, read it carefully and make sure you completely understand it before you use it. Once you release the code under that license, you can't take it back! Anybody who gets a copy will have your (non-revocable) permission to use that code under those terms. (They need this permission because of copyright law; a license from you is the only thing that makes it legal for them to distribute your code or make derivative works based on it.) For later versions you could choose a new license, but the old ones will forever be out there.