Is the Facebook BSD+Patents licence compatible with the GPL (GPLv3), in the sense that one could:
use code licensed under BSD+Patents, as part of a project, the rest of which you write yourself (own its copyright), and release the project under the GPL?
combine code licensed under BSD+Patents, with external GPL-licensed code, in a single project?
Obviously, if 2. is possible then so is 1., but not vice-versa.
Facebook's stance
According to Facebook it is:
Additionally, as has always been the case, you may distribute BSD + Patents licensed code with other popular open source licences, such as BSD, MIT, Apache 2.0, and GPL.
but I don't think that a statement in a blog post is really legally binding. On the other hand, it suggests that Facebook intended the licence to be GPL-compatible.
1. Writing your own GPL program, using code under BSD+Patents
Looking at the GPLv3, §7:
If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term.
Now, the question is whether the "Patent Grant" is considered a restriction, or not. If it's not, then there is no problem and 1. is probably possible.
However, if it is, then it would seem that by licensing the entire program under the GPL, (including the parts licensed under BSD+Patents), I'm giving permission to users/redistributors of my program, to remove the "Patent Grant" restriction. I'm obviously not allowed to give this permission, so in this scenario I can't release the program under the GPL.
A possible saving grace could be if I just use the BSD+Patents licensed code as a library — e.g. I use the React library, as a library, without changing it. In that case, I could perhaps distribute my program without React, but grant users the additional permission to combine the program with the React library — similarly to the OpenSSL linking exception. I have no idea, though, how the concept of linking transfers to the JavaScript world.
2. Combining with existing GPL code
According to §10 of the GPL:
You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License.
Hence, we're again faced with the question of whether the "Patent Grant" is an additional restriction. If it is, then I'm not allowed to combine an existing GPL code-base with code under BSD+Patents, while if it's not, then again, there's probably no problem.
Is the "Patent Grant" an additional restriction?
This is the crucial issue and also the most uncertain.
On the one hand, the first line of the "Patent Grant" is Additional Grant of Patent Rights
, suggesting that the grant is in addition to the BSD license and just gives you additional rights, not restrictions.
On the other hand, the BSD license already permits the use (and redistribution) of the software, under the set of three standard conditions, all of which are considered acceptable by the GPL, and none of which is linked to initiating Patent Assertions against Facebook, so the revocation of the patent license to use (etc.) the software, if you initiate a Patent Assertion against Facebook (et al.), might be considered an extra restriction.