When I was examining licenses for some content that I create, I came across the Free Software Foundation's "How to Choose a License for Your Own Work" page. Of course, their first recommendation is the GNU General Public License, a strong copyleft license. However, they do have exceptions to this:
- For small programs (they define small as <300 lines), they recommend the Apache License 2.0. Although not compatible with GPLv2, it provides some terms regarding software patents. It also doesn't have a massive license text to carry around with the small amount of source code.
- For libraries that implement free standards and must obtain widespread use, they also recommend the Apache License 2.0. It is easier to use this license in a wider variety of projects (closed source or open source, commercial or non-commercial) without the viral nature of GPL having an impact on your work - this promotes the general cause of free software. They also recommend the LGPL in cases where the library isn't competing against restricted standards.
- For server software, they recommend the AGPL to ensure that users of the software over the network would have access to the source code upon request.
To be very clear: I don't like the GPL. I also don't like the LGPL or the AGPL. The LGPL is the least offensive, as it allows people to link to my code, but my concern tends to be toward maximum reach and usage, not forcing code or modifications to be open source.
So, at this point, the FSF, the champion of strong copyleft, has identified cases where permissive licenses (like Apache 2.0, BSD, and MIT) are good things. The way I read it, when it becomes too bulky to move around copy of a large license or it's more important to make the code widely used, they favor permissive licenses over strong copyleft licenses.
Let's now take a look at the mission of Stack Exchange. The whole point is getting solutions to problems. If you have a hard bug to solve in your code, you can post some code and a write up of what's going on to Stack Overflow. If you wrote some working code, but are having trouble making it better, you can post your code to Code Review. If you're having problems managing your project, you can ask on Project Management. On a number of sites - Stack Overflow, Game Development, Unix & Linux, Programmers, Programming Puzzles & Code Golf, Code Review, Mathematica, WordPress Developers, and more - the problems are in code.
Now, something to recognize is that not all code can be licensed. There's something called the threshold of originality. In the United States, you can only copyright something that has a "minimal degree of creativity". A lot of code samples or code snippets or MVCEs won't meet this threshold of originality. However, larger pieces of code will. So now, you have a large piece of code that took creativity to write posted on a Stack Exchange site (as part of a question or an answer). What now?
Today, it's licensed Creative Commons Attribution-ShareAlike 3.0 Unported. Yes, that's a copyleft license. It's important to recognize that Creative Commons says that their licenses should not be used for software source code or binaries, but it is in this instance. This question on the Open Source Stack Exchange has a lot more detail about the CC licenses and software. There are two problems with the license itself: it does not provide patent protections (like Apache or GPLv3, but in the same position as some other FSF and OSI approved free software licenses) and it does not address the distribution of binary files versus source files.
The other issue with CC BY-SA (which also exists with other strong copyleft licenses) is the ShareAlike clause. If I were to take software licensed CC BY-SA and incorporate it into a body of work that I wanted to keep closed source, that work must also be released under CC BY-SA. Not appropriate for many personal uses, but very inappropriate for company uses.
In order to achieve its goals to make programmers lives better, the source code must be available for use under a permissive license that allows software developers to incorporate it into a closed source application without fear. The best licenses to do this would be MIT, BSD 2-clause, BSD 3-clause, or Apache 2.0 - they are permissive and well understood by open source software developers as well as organizations' legal departments.
Why is source different than the text you may ask. The difference is that I likely will not incorporate the text into a closed-source software product. Chances are, you aren't going to be putting the text in such an application - you simply need to read it to help understand the code. It also ensures that the contributions to Stack Exchange are perpetually available and reusable to continue to grow the world's knowledge base - no one can do something evil. Even if they sell access to it, both the original SE content and the derived work are there.