Should I use a permissive license? Copyleft? Or something in the middle?

No readers like this yet.
Broken copyright

The open source license you choose for your project, or for the projects you choose to contribute to, can have significant effects on how what you contribute is used. One question that has garnered quite a bit of interest recently is the fall in popularity of copyleft licenses in favor of permissive licenses. An article last year looked at the issue of large number of projects on GitHub that have no explicit license and posited the question about whether we live in a 'post open source software' world, where seemingly open source software has no license. After some time, GitHub agreed that licensing is important and worked to improve the situation with a license chooser.

Complications arising from copyleft

If you take a step back from the debate and think about what the motivations of those contributing their code to the wider world are, then I think it comes down to what is most important to you—reuse or freedom. The copyleft and weak copyleft licenses, from AGPL, GPL, LGPL, MPL, etc all use fairly complex language to legally enforce freedom for the code and to a greater or lesser extent any derived works. Another thing they work hard to accomplish is to ensure that no further conditions (beyond their own) are placed on the code, or any derived code.

This is the major reason for the GPLv2 being incompatible with Apache v2 and GPLv3 for example. When you have taken part in enough of these discussions, and looked at license compatibility charts, it is easy to understand how there may come a time where a developer or other team member of an open source project questions whether it is worth all of the work. It can get pretty complicated, especially when considering the LGPL license as it pertains to expansion of C++ templates from libraries such as Eigen (which recently moved to MPL2 to simplify the situation). It can also lead to issues where large open source CMS projects (Drupal, Wordpress) ask a JavaScript library to migrate from Apache 2 to MIT, or dual license, in order to retain GPLv2 compatibility. I will admit to still being somewhat hazy on what constitutes a derived work as it relates to a HTML 5 web application served by a CMS.

Permissive licensing simplifies things

One reason the business world, and more and more developers if recent articles are correct, favor permissive licenses is in the simplicity of reuse. The license usually only pertains to the source code that is licensed and makes no attempt to infer any conditions upon any other component, and because of this there is no need to define what constitutes a derived work. I have also never seen a license compatibility chart for permissive licenses; it seems that they are all compatible (please let me know in the comments if you know of an exception to this). Something that is more of a concern to many of us is the complication of bringing together and reusing many open source projects, and keeping track of overall licensing/compatibility. For proprietary work, or in-house work that should not be shared, there is also the wish to not release the source code. Copyleft does allow this, but you must keep a close eye on what constitutes distribution, or on what kind of linking is allowed (static versus dynamic in the case of the LGPL for example).

Final thoughts

I began my journey as an open source developer being firmly in the copyleft, GPL camp. After GPLv3 was released, and I saw the complications around license compatibility affect projects I am involved with (Avogadro, Open Babel, and recently Open Chemistry) due to GPLv2-only licensing, I spent quite a bit of time thinking about my position. More than anything I would like to see what I do used in as many places as it is useful, and after moving to Kitware, I learned about lots of other complications when developing large-scale codes with many collaborators, such as VTK and ParaView.

My feeling is that you must balance that with releasing some of your control—other people could repackage your work and sell it in a commercial project (although copyleft cannot guarantee that will never happen, but will make it more difficult). I have also been somewhat involved in the open access movement and seen the debates rage over licenses there. The Creative Commons share-alike licenses share similar compatibility issues, and you will notice in the matrix that once the SA clause is introduced your derivative work license choice is reduced very quickly.

In the sciences, funding and time are often in short supply, and the less time we can spend figuring out licensing (or completely ignoring it and risking future litigation) the better in my opinion. There are of course many reasons why your particular project may want to do more to enforce the freedom of both your code and any derived work. My advice would be to please use an existing license and think through the added complexity introduced by copyleft and/or share-alike licensing terms. There are of course dual-licensing options, and business models built around their use. In my experience dual-licensed business models often lead to a reduced community as the company always has more rights than the rest of the community, resulting in an imbalanced market where shared ownership is reduced.

Marcus D. Hanwell
Marcus D. Hanwell | Marcus leads the Open Chemistry project, developing open source tools for chemistry, bioinformatics, and materials science research.


>all use fairly complex language to legally enforce freedom for the >code and to a greater or lesser extent any derived works.

Its all about the freedom for the user, not the developer or the code.
The user.

As the previous poster said. If you come from the perspective of a developer, and you wish to develop something that you can latter charge for or sell, then you choose a "permissive licence". However, thats not to say you cannot make money from the GPL (redhat)

If you come from the perspective of a user, then the smart choice is software that cannot be closed off and will remain Libre for as long as it is useful. Thus you choose software licenced under copyleft terms.

The only reason to choose a BSD, MIT type licence, instead of a GPL type, is to manipulate a community into doing the foundational work (the most expensive part) and then take that hard work and make money from it without giving anything back.

This article promotes ignornce and reminds me exactly why as both a developr and user, I will always choose The GPL. Not only does it garuantee freedom for users, but it also allows develoers to make money.

I take your point, but I don't think it is that simple. You seem to assume that all open source is developed/expected to be developed by volunteers. My intent was to present an alternate view, and I am well aware it is not the only one. There is quite a lot of development done by professionals in their paid time, and permissive licenses offer a simple way of sharing code that can equally be incorporated into many GPLed works as well as proprietary works. If it is important to guarantee freedom to any and all users of your work, then the GPL licenses are an ideal choice, but freedom is not the one and only reason to develop open source code.

We should also be aware that the GPL has some downsides, such as license compatibility and complexity. They may well be worth it, and this likely depends on the project and its contributors. There are also examples of GPL code being taken without companies contributing back - Apple adhered to the letter of the GPL if not the spirit in the early days of webkit development for example. I don't see how I am "promoting ignorance" in what I wrote, and disagree that the only reason to choose MIT, BSD, Apache etc is "to manipulate a community into doing the foundational work". I agree that there are many companies using the GPL and running sustainable businesses, with Red Hat being a prime example.

There are also examples of multiple stakeholders contributing to software platforms licensed under MIT/BSD/Apache for their mutual benefit, with members of the wider community free to take part in development and/or use the code in their own projects. I think this is a much better model than dual licensing with copyright assignment of contributions for example. There are many licenses and models that can be used in a software community, and I will continue to contribute to projects whether they are GPL or MIT/BSD/Apache. I also have a deep admiration of the Linux kernel community, and think that the GPL was a great choice for that community - I would love to contribute to the Linux kernel if I can find the time/a meaningful way to contribute there. I don't think there is a one size fits all license, and seeing the issues the Drupal community had with the Bootstrap license inspired me to write this article (along with my own experiences in different software communities over the years).

With regard to your first paragraph, I agree to a point, the MIT licence specifically focuses on innovation without bounds. There's also many examples of permissively licensed software that has and will continue to serve the FOSS community very well. Those projects prove that permissively licensed software *can* be good community players.

The trouble however is there's a great desire for businesses to gain competitive advantage. Especially now where FOSS software controls most of the worlds digital infrastructure. Code which can be used to foster an industry standard, which can the be closed and altered to be incompatible from the still public version, is a very inexpensive and effective way of gaining that competitive advantage. Once you have control of an entrenched standard, making money becomes stupidly easy. Exactly the result any big business would like to achieve.

For instance, If I were a cleaver CEO of corpX, I'd suggest to the community of a successful project that we would like to contribute a number of developers to help out and sit on the community board. I'd then make sure the community board and its decisions were predictable enough to base a business model on by being a vocal majority. I'd then heavily promote corpX and its new alliance with project Y, and sell services/software off the goodwill. Once my company had become well known for providing the industry standard, It'd be in corpXs interest in gaining competitive advantage to take the community code, make it ever so slightly incompatible, withdraw board members and developers from the community effort, and go our own way.

If we consider that copyleft code specifically denies this situation the opportunity to arise, where as permissive licences allow it through indifference, we can logically make the asersion that copyleft=no-risk and permissive=risk. And that risk isn't just shouldered by the user, but the developer too. Because even as a developer, you still have the possibility of the rug being pulled out from under your feet. Not to mention the fact that as a developer, you are also a user of the same, or any other project which chose risk.

The complexity in dealing with copyleft code only arises when developers wish to do the one thing the copyleft licence does not allow, a non-reciprocal exchange. Otherwise the licence is very clear. "Please contribute back any patches that you have made to the binary you are distributing so we are all working on the same codebase" and/or "If you wish to extend that codebase with a plugin, then feel free to use whatever licence you like"

Well said!

A business first and primary motive is profit. And tech is just a means to achieve that.

A competitor just needs to hold back any improvements to my/your code long enough to kill and sideline your business. And at the rate of development and fast evolving need for growth, its imperative.
However, there are always exceptions, Its not a good Idea to risk your freedom for these exceptions. :)

On a similar note, I wonder whether Google would had benefited by using GPL on Android, as Android is being forked by Samsung, Nokia (with MS services) and countless other Chinese companies.

I also meant to appologise for my harsh words, sorry.

In a true sense we all know that nothing really works well. License does not do the things we need. So I think law should be strict.

<ul class=field><li class=field-label-inline><a href="">rave pants</a> </li> </ul>

Remove all copyright, patent and trademarks and the licencing becomes very simple.

If your motivation is what's good for users rather than lining your own pockets then the results will be absolutely amazing.

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution 3.0 Unported License.