Why I usually prefer the GPL
[I was busy this weekend with Peter Norvig and Sebastian Thrun's AI course and Bayesian probabilities, so I am reduced to recycling reddit replies. But it is a topic I've been meaning to mention, so I do not feel too bad.]
Why does the license determine contributions?
Once upon a time, there was an operating system that I'll call BSD UNIX. This OS was distributed under a very permissive license that basically allowed anyone do to anything they wanted with it, including redistributing it as a closed-source product. Which they did, creating a host of different, but somewhat similar operating systems, which I'll call AIX, HP-UX, SunOS, and IRIX (and a large stack of others, but those'll do for now). Each of these OS's grew lots of new features; bugs were fixed, changes were made, markets were differentiated, everyone was happy.
Until everyone noticed that software that ran on one of the pile didn't run on the others, leading to the creation of wonderful things like POSIX, imake, and autoconf. But that was a little bit too late and a little bit too little (and quite a bit too flaky), leading many people to the conclusion that all of these similar operating systems were a bizarrely painful sewer that they wanted nothing to do with. Market differentiation became market fragmentation, almost leading to the death of Unix operating systems.
In the mean time, the greatest developers in the world were working on BSD. Or so they thought, apparently, given that the license they had chosen didn't even have a strong suggestion that any changes that someone else made should be passed back to BSD. (Sure, if they weren't the best, they might want contributions, but since they were, obviously they could do a better job of new features and bug fixes, right?)
So, one day a young programmer comes along trying to decide if he wants to check out this new Linux thing or if he should spend some time with the newly un-encumbered BSD, which was a real Unix and obviously closely related to the OS's he was familiar with. Unfortunately, the new upstart supported shared libraries and FreeBSD didn't, because all of the descendant operating systems which did, did it in completely different ways and no one ever saw fit to contribute it back to the ancestor.
[All characters and operating systems appearing in this work are fictitious. Any resemblance to real persons or operating systems, living or dead, running or panicked, is purely coincidental.]