I was half expecting the authors of KidSafe and Kitchen Sink to jump in here
especially WebFork and his acquired knowledge.
Thanks for the recommendation!
Disclaimer: like webfork, I'm not a lawyer, and nothing I say can be interpreted as legal advice. I also can't be held accountable if you use one of the licenses I mention and get in trouble with it/because of it.
Now for the good stuff.
For any license, I think the most important thing is to read it - every word
- and thoroughly understand it before you begin using it. If you don't, there will invariably be something important you miss which will come back to bite you later. Remember Murphy's Law.
For now, I'm using the GNU Public License, version 2
, for all my stuff because it allows others to freely copy & build on my work without being allowed to charge for it. I happen to believe in free software, and I don't want others to be able to charge for one of my apps because they added some new features.
The GPL is also important for covering yourself legally - by explicitly stating "NO WARRANTY", even if somebody blows up their computer with your app you can't be held responsible for it. For many apps, especially those that do things deep in the computer's core (like KidSafe), this "no warranty" clause can be very important.
GPL's greatest strength - openness - it also its biggest problem, though. Because all code released under the GPL must remain open-source, those who want to use GPL code in a commercial or closed-source freeware app have to look elsewhere. This is probably the biggest complaint people have about the GPL.
Note that you may wish to upgrade to GPLv3; it's got some important upgrades from GPLv2, including a clause forbidding "tivoization", or a hardware manufacturer locking certain app features because that's what the manufacturer wants. Modifying the software causes the hardware to malfunction/shut down, because that's what the hardware manufacturer wants.
To quote http://www.gnu.org/licenses/rms-why-gplv3.html
It [GPLv3] doesn't forbid DRM, or any kind of feature. It places no limits on the substantive functionality you can add to a program, or remove from it. Rather, it makes sure that you are just as free to remove nasty features as the distributor of your copy was to add them. Tivoization is the way they deny you that freedom; to protect your freedom, GPLv3 forbids tivoization.
The zlib license
could perhaps be one of the best licenses for everyone. For devs, there's a "no warranty" clause - you're legally protected. For devs who want to keep their code closed-source, that's acceptable. For devs who want to fork existing zlib-license projects/use code in a closed-source freeware project/use code in a commercial project, that's acceptable too. For users, there's no complex legalese, and the entire license is only a few paragraphs long.
As an OSS advocate, I personally find this license to be a massive pain in the backside; for others, though, it could be perfect.
Like Windows Vista, this comes with a plethora of "sub-licenses"; each is pretty easy to understand, but the risks & rewards are very different. Warning:
if you're easily bored by legalese and/or a plethora of options, skip this section or it'll probably put you to sleep.
- Attribution (cc by): Others can do what they like with your code, including putting it into a closed-source or commercial app, as long as they give you credit.
- Attribution Share Alike (cc by-sa): Others can do what they like with your code, including putting it into a closed-source or commercial app, as long as they give you credit and license their app under the same terms as yours. For many, this could be a deal-breaker. It's bitten me a couple of times already.
- Attribution No Derivatives (cc by-nd): Frequently used for artwork; this is a massive pain in the backside, although Attribution Non-Commercial No Derivatives (see below) makes this look very attractive by comparison.
Others can only redistribute your work (both commercially and non-commercially) - they can't modify it - and they must give full credit to you.
- Attribution Non-Commercial (cc by-nc): Others can redistribute your work, under their own terms, as long as their redistribution is non-commercial. Most freeware devs won't care, since their work is non-commercial anyway, but this is still pretty frustrating for commercial developers.
- Attribution Non-Commercial Share Alike (cc by-nc-sa): Others can modify & redistribute your work, and others can modify & redistribute those redistributions, and so on. The catch: none of the derivative works can be commercial, and they all have to carry your original license terms.
- Attribution Non-Commercial No Derivatives (cc by-nc-nd): Truly a royal pain in the backside; if you see this, run like crazy. If you use this... well, it's your right. Just expect some complaints.
This sublicense is all about "don't": people can't modify your work and can't use it in commercial apps. They also have to link back to you. About the only thing people can do is redistribute your work, but it has to be unmodified.
(This license is sometimes known as the "free advertising" license - with good reason.)
There are lots of other licenses & license variants, but I'm pretty sure I got the big players; if I missed one, please let me know & I'll cover it. (Sorry, it's late here and my brain is starting to reach Hibernate mode)