I’ve recently been giving more thoughts to the way I license my packages. While I don’t anticipate the choice becoming practically significant any times soon, I’ve realised that the topic probably deserves more consideration that I’ve previously given it.
Why we need to think about licenses
While many of us want to “just do (F)OSS” without paying much attention to licenses, they are an unavoidable part of the landscape due to the way intellectual property law has developed over the last several decades.
I’ve recently been perusing Lawrence Rosen’s Open Source Licensing: Software Freedom and Intellectual Property Law, which has been a useful reference for clarifying my understanding of several thorny nuances. As you might have guessed, Lawrence Rosen is not a layman but an adjunct professor of law at Columbia University who also provides legal advice to the OSI.
When I release a package of mine to the public, I hope, as I think many of us do, that it will be of as broad benefit to the community as possible, and that the community will help improve it if is indeed found useful.
The OSI gives us a wide spectrum of licenses to choose from, choosing various balances of rights and responsibilities, written by people with varying amounts of legal experience.
The MIT license
The MIT license is predominant in the Julia package ecosystem and is arguably the cheerleader for ‘permissive’ licenses. It’s famously short; in fact, it’s so concise that I can easily include the “here you go” clause here for reference:
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
[warranty disclaimer]
Isn’t that short and sweet! As I’ve mulled this over, I’ve realised there are two ways in which the MIT license falls short.
Limitations of the MIT license
Firstly, it’s too succinct. I think this is largely a consequence of the time it was written (late 1980s). For instance, it only explicitly mentions how users can interact with the implementation shared, not the methods. Software IP developed significantly in courts after the MIT license was written, and patents started being applied to the methods/processes of software. More recent licenses such as the Apache v2 license, GPL v3, MPL v2, and EPL v2 contain explicit provisions dealing with both copyright and patent rights. To quote Rosen on the MIT license:
This improves on the BSD license by specifically mentioning all of the exclusive rights under copyright law and almost all of the exclusive rights under patent law (e.g., “make” is omitted, but that is probably unnecessary given the other verbs in that sentence). No longer are we limited by the BSD’s reference to redistribution and use. On the other hand, the new phrase deal in the software has no precise legal meaning. In light of the longer list of rights in the MIT license grant, it appears not to limit copyright or patent rights in any way. Like the BSD license that preceded it, the scope of the patent grant in the MIT license is implicit rather than explicit. This means that a licensee cannot be sure that the implied patent rights granted by MIT are broad enough to cover derivative works.
Secondly, much of the way we hope people will use our packages, and share improvements is solely based on assumptions of goodwill. While nice, hope is not a strategy. Some licenses require that modifications in software that are then distributed must also be shared back. These are the “copyleft” licenses.
Copyleft and its challenges
Copyleft licenses also introduce another key property: being viral. If GPL-v3 licensed code is incorporated into a larger work, the larger work as a whole must satisfy the requirements of the GPL-v3 license. When people and companies complain about copyleft licenses being impractical and making software hard to adopt, it is this provision that’s responsible. Some people believe the entire software ecosystem should be copyleft and viral, but I’ll leave that debate aside.
Hybrid or “Weakly Copyleft” Licenses
This brings me to an interesting category of licenses that I’ve seen termed “hybrid” and “weakly copyleft”. The three most well-known such licenses are:
- Mozilla Public License (MPL),
- European Union Public License (EUPL), and
- GNU Lesser General Public License (LGPL)
The LGPL is a little messy in two respects:
- It contains imprecise legal terms (from the analysis I’ve seen by Rosen)
- It doesn’t precisely define the extent of the license with respect to a modified work
Here’s a relevant extract from Rosen’s writings:
These sections of the LGPL are an impenetrable maze of technological babble. They should not be in a general-purpose software license. The LGPL even concedes that “the threshold for this to be true is not precisely defined by law.” (LGPL section 5.) A licensee under these provisions won’t have a clue how extensive his or her good faith efforts must be when creating a derivative work in accordance with sections 2(d) and 5 of the LGPL.
From my reading, both the EUPL and the MPL are simply better licenses, they are less ambiguous, have more thorough definition sections, and like the Apache license address patent rights. To quote Rosen once again:
The MPL is a serious license. I will direct much less criticism to the structure and terms of the MPL in this book than to the other licenses I’ve already written about, because the MPL is a high-quality, professional legal accomplishment in a commercial setting
The MPL v2 makes no requirements on how MPL-licensed work is used, it can be incorporated into larger works and used with any mix of licenses including in proprietary/commercial settings. In this way it is much like the MIT and other “permissive” licenses. The MPL however, requires that direct improvements to the licensed work be shared (reciprocality), and that when distributing a larger work that includes an MPL component notice of the MPL component be distributed too (credit).
I essentially see this as a higher quality version of the MIT license, with mild extra stipulations that community-minded individuals will already be following (sharing direct improvements back, letting people know when you use it), and no restriction to its use in wider/commercial projects.
The EUPL seems very similar to the MPL, but is fantastically multi-lingual (it’s in 23 languages, where all have equal value), more widely interoperable, and covers SaaS usage too.
I find this mix of characteristics quite attractive. I think the MPL and EUPL both do a meaningfully better job expressing the spirit in which I share my work, while being better written than back-of-napkin licenses like MIT.
What are your thoughts on licensing choices? Have you looked at the MPL and/or EUPL? Is this a topic you’ve devoted much attention to?
I’d be interested in hearing other people’s thoughts and experiences.
Some references
- Lawrence Rosen’s Open Source Licensing: Software Freedom and Intellectual Property Law:
- Comparison of free and open-source software licenses - Wikipedia
- GNU Lesser General Public License v3.0 - GNU Project - Free Software Foundation
- Eclipse Public License - Wikipedia
- https://mit-license.org/license.txt
- Apache License, Version 2.0
- Mozilla Public License, version 2.0
- https://joinup.ec.europa.eu/collection/eupl/introduction-eupl-licence
- Joinup Licensing Assistant (JLA) | Joinup (comparison of MPL, EUPL, LGPL, Apache, and MIT licences)
- Licenses | Choose a License
- Open Source Software Licenses 101: Mozilla Public License 2.0 - FOSSA
- licensing - Pros and Cons of using MPL-2.0 license? - Open Source Stack Exchange
- licensing - Mozilla Public License (MPL 2.0) vs Lesser GNU General Public License (LGPL 3.0) - Software Engineering Stack Exchange
- licensing - Is there a modified LGPL license that allows static linking? - Software Engineering Stack Exchange
- Why is MPL *recommended* to module maintainers of the Scala Platform? - Scala Platform - Scala Contributors
- Various Licenses and Comments about Them - GNU Project - Free Software Foundation
- Copyleft licenses are not “restrictive”
- https://www.tldrlegal.com/
- What is your current go-to license? - Licenses - Write Free Software
- EUPL - a better choice for European citizens? - Licenses - Write Free Software