I have recently been wondering why so little code is ever released as 'Public Domain'. MIT and BSD licenses are becoming extremely popular and practically only have the restriction of license propagation.
The reasons I can think of so far are:
Credit - aka Prestige, Street-cred, 'Props', etc. Authors don't want usage of the code restricted, but they also want credit for creating the code. Two problems with this reason.
I have seen projects copy/paste the MIT or BSD license without adding the 'Copyright InsertNameHere' thereby making it a tag-along license that doesn't give them credit.
I have talked to authors who say they don't care about people giving them credit, they just want people to use their code. Public Domain would make it easier for people to do so.
License Change - IANAL, but I believe by licensing their code, even with an extremely nonrestrictive license, this means they can change the license on a later revision? This reason is not good for explaining most BSD/MIT licensed code which seems to have no intent of ever becoming more restrictive.
AS IS - All licenses seem to have the SCREAMING CAPS declaration saying that the software is 'as is' and that the author offers no implied or express warranty. IANAL, but isn't this implied in public domain?
Am I missing some compelling reason? The authors I have talked to about this basically said something along the lines of "BSD/MIT just seems like what you do, no one does public domain". Is this groupthink in action, or is there a compelling anti-public domain argument?
Thanks
EDIT: I am specifically asking about Public Domain vs BSD/MIT/OtherEquallyUnrestrictiveLicense. Not GPL. Please understand what these licenses allow, and this includes: Selling the work, changing the work and not 'giving the changes back', and incorporating the work in a differently (such as commercially) licensed work. Thank You to everyone who has replied who understands what BSD/MIT means.