For my software projects I've always preferred the GPL license, but nowadays its time has gone, at least for me. The IT industry is mature enough, and all copyleft (and copyright) licenses create more problems than advantages. Few examples:
- Inability to use the code in the commercial applications. Commercial applications are infamous for their poor quality, security-by-obscurity and other issues. I guess we all agree that in the perfect world the applications should be polished before releasing, but free market dictates faster release cycles, and therefore the overall poor quality of the software. At the end, it influences us all, directly or indirectly (commercial OSes, routers, cloud solutions and other infrastructure elements), and by lifting the software licenses restrictions we may help the commercial developers to use our code in their projects (instead of implementing their own, in many cases, inefficient, solutions). For example, because of the readline library restrictions, I had to implement my own version for one of the commercial projects I've worked on, and it went pretty bad, because I had very narrow timeline for the project. At the end, I wasted time and clients got an inefficient and error-prone solution.
- Developers contribute back regardless of the license. Many developers even don't bother with the licenses (unless the lawyers require them to do it). However, contributing helps everyone - developers don't need to keep their own patches for the used software, and the software creators are getting feedbacks and new patches to improve the quality of the code. The only reason to prevent contributing (in my practice) are restrictive licenses which may require that all the code copyrights should be waived, or the whole codebase should be open. Frankly, I don't see people around who are not willing to contribute back to public, we all see advantages of it.
- Judges are getting better. Oracle v Google case is a good example: Google beats Oracle—Android makes “fair use” of Java APIs One of the biggest reason for software licensing is a protection from patent trolls, but I think the situation is getting better. However, we still need to be careful, and have to use the proper licenses. Nevertheless, it doesn't mean that we need to escalate the situation by using the restrictive licenses. There is a good explanation about the legal hazards of open licenses: How can I place software in the public domain
Following the advice in the last link, all my projects are going to have MIT license. I guess the better choice would be Unlicense, but it has certain issues I don't want to deal with. However, let me quote their reasons to create the license:
You have more important things to do than enriching lawyers or imposing petty restrictions on users of your code. How often have you passed up on utilizing and contributing to a great software library just because its open source license was not compatible with your own preferred flavor of open source? How many precious hours of your life have you spent deliberating how to license your software or worrying about licensing compatibility with other software? You will never get those hours back, but here's your chance to start cutting your losses. Life's too short, let's get back to coding.