Everything noted below is professional advice not legal advice. I’m not a lawyer, so check with your legal department or similar before you use open source software, regardless of the license.
In terms of software licensing, I have a simple principle:
Don’t make things unnecessarily complicated.
Let’s face it, most developers don’t understand licensing. They don’t understand copyright, licensing, or the rights and responsibilities that come along with them. In fact, some developers pride themselves on not knowing or understanding licenses at all.. they just want to write code.
As much as I wish we could live in that world, it’s wrong. If you’re sharing code in any way, shape or form, you need to understand the basics of the license you’re using and what the implications are.
Unfortunately, I did have to spend quite a bit of time and money researching licenses, acceptable use, and all the bits and pieces in between. You can read the details in “Why would we re-license Web2project?” on the web2project blog – but know that it was horribly painful and I wish it on no one.
For example, the PHP project was recently bitten by this line in the JSON library:
“The Software shall be used for Good, not Evil.”
which conflicts with the Free Software Foundation’s freedom Zero
“The freedom to run the program for any purpose.”
Many organizations have developed policies around which licenses are acceptable to use within their organization. They’ve reviewed the terms, done the homework, and cleared everything properly. They do this so you don’t have to.
But if you go with a non-standard license, you undo all of that work.
As much as the Pizzaware, Beerware, and DBAD licenses are entertaining and trying to make a point, they muddy things. It’s not because they are bad licenses, but because names matter in law as much as they do in computer science.
If your organization’s lawyers have said “you can use MIT, Apache 2, and the BSD 3-clause,” that means you can use those licenses and no others. If something is cited as the BSD 2-clause or Apache 1 license, they’re not interchangeable. After all, an array isn’t the same as a linked list though both are data structures to store items.
Whenever you’re writing code – any code – that will be released publicly, make things simpler for the next person by choosing a standard license. One of the big three listed above are generally well-known but sticking to the OSI-approved license list is a good strategy too.
And people who don’t include any license make things even worse..
PS – If you’re trying to resolve the PHP 5.5/JSON library issue, this post from Iteration 99 has the details.