Apache disallows the Facebook BSD+patent license
Patent grants
Facebook has open-sourced a large number of projects that it uses
internally; the company's preferred license is the permissive three-clause BSD
license. This license says nothing about patents, but it has often
been argued that any entity releasing software under the BSD license is
making an implicit grant for any patents required to use that software.
Otherwise, the permission for "redistribution and use in source and
binary forms
" would lack meaning. Other licenses, including GPLv2,
are also generally assumed to contain an implicit patent grant, but this is
an idea that lacks testing in court.
The problem with untested legal hypotheses is that they are about as reliable as untested software. While the implicit grant remains unproven, one cannot discount the prospect of an evil entity releasing software under a free copyright license with the intent of attacking the users of that software for patent infringement. Companies that worry about such things are thus much happier with an explicit patent grant. The implicit patent grant idea also can rub patent holders the wrong way; they would prefer to retain more control and, if they must grant patent-use rights when they release software, they would like to do so in a way that is revocable should (from their point of view) the need arise.
That is the reasoning that leads to Facebook's "additional grant of patent rights" that it attaches to its software releases. It explicitly grants a right to any Facebook patents that might otherwise be infringed by the software. But it also contains a patent retaliation term, in that anybody who asserts a patent against Facebook (for any reason) or against other users of the software (for patents allegedly infringed by the software itself) can have their patent license terminated. "Assertion" is the word used in the grant; things do not have to get to a point where a lawsuit is filed before the termination can happen.
The Apache Software License 2.0 (ASL) contains similar patent-grant language, but termination only happens when actual litigation is initiated. It is also, crucially, more focused: the retaliation clause is restricted to patents (alleged to be) infringed by the licensed software itself. The Facebook grant, instead, terminates on any patent assertion against Facebook, even if it has nothing to do with the software covered by the grant. This language feeds fears that, if a company uses Facebook code in its products, it must grant Facebook access to all of its patents or risk license termination. That, too, is an untested legal hypothesis and there does not appear to be any evidence that Facebook wants to use the grant in that manner, but it still raises eyebrows.
Category-X
In April, Jeff Jirsa raised an issue with the Apache legal community. The Apache Cassandra project was considering adding Facebook's RocksDB key-value database as a storage engine, but was wondering about the patent grant. In June, the community started discussing the issue and didn't much like what it saw. The asymmetric nature of the patent grant, in particular, was deemed to be incompatible with the ASL.
On July 15, ASF director and vice president of legal affairs Chris Mattmann issued a decree stating that the Facebook BSD+patents license had been placed into the dreaded Category X and that, as a result, Apache projects could not incorporate or depend on software that uses that license. For any projects that had already released code with such a dependency (and there were a few in the case of RocksDB), a temporary reprieve — until August 31 — was granted. In the meantime, such projects need to add a notice to their repositories that the Facebook patent grant is present there.
That would seem to be the end of the line for the use of RocksDB in Apache projects — except that RocksDB changed its license in response to the Category-X designation. It is now dual-licensed under the ASL and GPLv2. Once an official release has been made under that license, RocksDB will once again be usable by Apache projects.
The story doesn't quite end there, though: perhaps a bigger issue is React, which is also under the Facebook license regime. React is used by Apache projects like CouchDB; moving away from it will not be an easy thing for the CouchDB developers to do in the next month. It is thus unsurprising that the CouchDB developers have asked the React project to consider a license change similar to what RocksDB has done. That change is under discussion as of this writing; it's not clear that the odds of it happening are particularly high, though, so the CouchDB developers are looking at alternatives.
This sort of licensing disagreement is unfortunate; it divides our
community into separate groups that are unable to share their software.
Since sharing the software is one of the major points behind this whole
exercise, that could be seen as a significant bug in how we operate.
Perhaps it is unsurprising that an increasingly large part of the community
seems to want to just toss the software out there and do away with
licensing altogether. Outside of copyleft concerns, though, most of these
disagreements are really artifacts of the legal regime in which the
community operates. That regime changes slowly at best, so we can expect
to be dealing with issues like this one for some time yet.
