While
Jagger's WU is indeed most excellent, I would like to add my own
thoughts on the matter. Specifically, I propose to
analyse the
effects of choosing a particular
license for a piece of
software, and the kinds of
'ware for which that might be
appropriate.
Why people contribute to free software
Basically two reasons: 1) They want that feature so they can use it 2) They want to sell you something. I infer this from the fact that there are plenty of great system tools for linux, a few tools which have a plugin-based architecture, and you need to buy the plugins to have something, and no good, large games (Other than as ported by Loki).
The GPL
This licence prevents commercial exploitation of software, as people can use it completely freely, but can't distribute under a different license. This means that is works great for projects that programmers like to use: Xemacs, webservers, linux.
Business models used in relation to this include making software where all the functionality is in modules, and selling support for existing software (like Red Hat). No-one has started a project with the intention of selling support, as the risk of someone else coming along and selling better support is too high. The modules approach may or may not be appropriate, but it is a poor thing to have a license dictate the software's design.
LGPL
This allows commercial software to be linked against the so licensed software. This still has implications for the design of software that links against such code, but it is still much less strong, and frankly, breaking other people's code out into libraries is probably a good thing.
The implications of this are that commercial programs may be based upon free libraries; commercial developers have an incentive to contribute to the libraries, at least in terms of bug fixes. This is good for everyone. Because these things have to be shared, but the originators may still reap the benefits, there is an incentive for companies to develop and LGPL code that they want to be kept bug-free, and have many new features added cheaply. Typically, one might do this is developing the library on one's own would just take too much time, and/or not actually be large enough to be worth marketing as a product in it's own right.
BSD License
This is the LGPL on crack. It allows all of the freedoms of the LGPL, but it also allows you to close the source of shared code. Why would anyone contribute rather than steal? The answer is that if one were to create a bug-fixed, closed source version, a) The open-sourcers would know what to fix, and fix it, b) Maintaining a separate, clean development tree would drive you insane. Instead, people fix the bugs, giving them access to code to base their commercial work off, or just to use. Again, people add features which they want maintained cheaply, but which, in themselves, don't constitute killer features.