Facebook is changing its open source licensing for some of its products. The products React, Jest, Flow and Immutable are changing from the Facebook-created BSD+Patent license to the MIT license in the beginning of October. There has been a lot of disquiet amongst the open source community, as it seems that the BSD+Patent license is too restrictive. What is all the fuss about? Before that question is answered, an overview of the differing types of FOSS (Free and Open Source Software) licenses may be in order.
As has already been intimated, there is not a single truth regarding an Open Source license. The Free Software Foundation maintains a list of relevant licenses here. There are over eighty different approved FOSS-based licenses; each has varying levels of permissiveness regarding usage.
Even though there are eighty recognised licenses, the vast majority of projects and products are licensed with the GNU, BSD (either 2 clause or 3 clause version), BSD+Patent, Apache, or MIT license, so these are the ones this article will concentrate on.
The table below compares the various features of each license and offers a brief guide to terms and conditions.
- Linking: Linking of the licensed code with code licensed under a different license (e.g., when the code is provided as a library)
- Distribution: Distribution of the code to third parties
- Modification: Modification of the code by a licensee
- Patent grant: Protection of licensees from patent claims made by code contributors regarding their contribution, and protection of contributors from patent claims made by licensees
- Private use: Whether modification to the code must be shared with the community or may be used privately (e.g., internal use by a corporation)
- Sublicensing: Whether modified code may be licensed under a different license (for example, a copyright) or must retain the same license under which it was provided
- Trademark grant: Use of trademarks associated with the licensed code or its contributors by a licensee
License | Author | Latest Version | Publication date | Linking | Distribution | Modification | Patent grant | Private use | Sub licensing | TM Grant |
Apache License | Apache Software Foundation | 2.0 | 2004 | Permissive | Permissive | Permissive | Yes | Yes | Permissive | No |
BSD License 2 Clause | Regents of the University of California | 3.0 | ? | Permissive | Permissive | Permissive | Manual | Yes | Permissive | Manually |
BSD 3 Clause | Regents of the University of California | 3.0 | ? | Permissive | Permissive | Permissive | Manual | Yes | Permissive | Manually |
BSD + Patent | Regents of the University of California | 3.0 | ? | Permissive | Permissive | Permissive | Yes | Yes | Permissive | Manually |
GNU General Public License | Free Software Foundation | 3.0 | 2007 | GNU GPL v3 only | copylefted | copylefted | Yes | copylefted | copylefted | Yes |
MIT License | MIT | N/A | 1988 | Permissive | Permissive | Permissive | manually | Yes | Permissive | manually |
What is copylefted?
Copyleft is a play on the term “copyright,” and it involves the practice of offering people the right to freely distribute copies and modified versions of a work, with the stipulation that the same rights be preserved in derivative works down the line. This is a core tenet of the GNU license. Once open source, always open source. Yes, you can place the code in closed source software, but you must offer the open source software or derivative as open source.
The Apache, MIT and standard BSD licenses on the face of it appear very similar, and they are, with some very obvious restrictions. For example, the Apache license states that if any code is changed, you must clearly state that fact. Further, it includes the following restrictive clauses:
This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
And a clause dealing with patents:
If You institute patent litigation against any entity … then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
We now come to the unmodified BSD licenses and the MIT license. These two licenses are commonly considered the most permissive of all FOSS licenses, and they share many traits. However, this is only true when comparing the BSD 2 clause to the MIT license. The 3 and 4 clause BSD licenses are more restrictive.
Facebook used the BSD 2-clause license and added Patent restrictions as its default license.
So, why has Facebook changed its license base? Both licenses share the following traits:
- Permits use
- Permits redistribution
- Permits redistribution with modification
- Provision to retain the copyright notice and warranty disclaimer
However, the MIT license also explicitly allows:
- Merging
- Publishing
- Sublicensing
- Selling
While it is true that all these freedoms are implied by the BSD license, because all these activities can be considered “use” and/or “redistribution” of the software, problems arise when they’re coupled with the patent clause. The use of the very permissive MIT license mitigates all potential issues.
Personally, I feel that this is a good thing for Open Source software. It clears up any potential grey areas. Facebook has now effectively given everyone unfettered access to the software in several key development areas.