Hacker News new | ask | show | jobs
by coreyp_1 930 days ago
I'm actually speaking to a group of University students about this very topic later this week.

In my opinion, permissive licenses such as MIT, BSD, and Apache are best for libraries. A library is not the final product, but is a helpful tool that could be of benefit to many different projects. It can encourage participation for many different sources, including commercial.

A copyleft license, such as anything in the GPL family, is better for a final product in order to keep people from copying the product wholesale and passing it off as their own work. The AGPL is probably the strictest license possible in this domain. A copy left license discourages commercial participation in many circumstances, although not all. The Linux kernel, for example, is GPL version 2, but does benefit from commercial contribution.

For philosophical reasons, some people will say that you should only ever use a copyleft license, regardless of the subject matter. They do this because they believe that everything should be copyleft, and copyleft licenses are infectious. That is, the inclusion of a copyleft piece of code forces all of the code to be copyleft and subject to the distribution requirements. It may also invalidate software patents which, again, some people are strictly opposed to, and therefore they will only recommend copyleft licenses.

There's a lot of nuances to the different licenses, and the license is often reflect philosophical and political beliefs. For me, personally, I have released my code as MIT, which I greatly favor, however I have also written gpl'd libraries for something like drupal because that was the only option as Drupal itself was gpl.

1 comments

Thanks! So what does AGPL (or the GPL family) actually restrict?
The big difference between a permissive license and a copyleft license is in the obligation of the user when modifications have been made to the code.

A permissive license may require that you make the original source code available to your users, but that does not necessarily apply to your modifications. So if, for example, I have written project X, and license it as MIT, and you add a single feature to it, and now a user wants to see the source code, then you can give them the original code to project X, but you are not required to provide the code for your privately developed feature.

Conversely, with a copyleft license, in the same scenario, you would be required to release the code for your privately developed feature as well to your customer. Moreover, they would then be able to freely distribute that source code as well, including your privately developed feature. That is why the copyleft licenses are often defined as being viral or infectious, because they propagate to whatever code they come into contact with.

So then, the question of boundaries comes into play. What if the software is on another system? For example, you write program Y, and it calls system X across the network. With the GPL version 2, the copy left license does not cross the network barrier. Agpl, however, removes this barrier, making the virality of project X extend to program Y.

In short, copyleft is generally hostile to any proprietary use, and many companies won't touch it for any software that must be distributed to customers. Again, this aligns with some people's political and philosophical wishes, so they do not see a problem with this.

In short, permissive versus copyleft is a fundamental difference in how freedom is defined. The permissive license gives you the freedom to use software however you see fit. The copyleft license tries to eliminate the possibility of proprietary control. It's really two different sides of freedom. Permissive is freedom of the individual from control of the many. Copyleft is freedom of the many from control of the one.

I think I'm going to use a permissive license. I definitely want companies to be able to use this as a starting point for their own in-house ERP.
This is a really, really terrific explanation of an often-difficult concept. Thank you for being so clear!
This is the best explanation I've ever read!