I'm a big fan of the BSD and Apache licenses. For being "Free," the GPL sure does put a lot of restrictions on what one may or may not do with a given piece of code.
Using a BSD license means you're being nice to developers.
The GPL means you're being nice to users and telling companies/developers to move along.
In particular, it could lead to me breaking the law! If someone built something using my code that they then kept closed-source and put a "no-reverse-engineering" kind of EULA on, I'd of course be curious how they'd built on my stuff, and would want to reverse engineer it. Quite a temptation!
(That said, I do use BSD-style licensing myself for some things, mostly stuff I consider as good as public domain, e.g. a fairly small bit of code implementing a well-known algorithm, even if it's imo a particularly optimized and elegant version.)