Great news! This follows on the heels of the relicensing of React, Jest, Flow, and Immutable.js. All MIT licensed now. Thank you, Facebook for taking the high road here and putting developers first.
Are these licensing changes retroactive? If I'm already running Facebook's GraphQL reference implementation, do I have to upgrade to be free of the patent restrictions?
Great question. It applies to the variant of the spec as it exists today when the license was applied. Currently found at http://facebook.github.io/graphql/draft/
GraphQL's reference implementation (GraphQL.js) intends on not just being a great implementation, but also very closely following the spec, so you're in good shape.
Also, GraphQL.js has had a BSD3+PATENTS license until today, which meant you've always had that patent license. Later today I'll be releasing a version of GraphQL.js that is MIT license instead, understanding that the OWFa1.0 applies to all implementations including the reference implementation.
I'm not, by any means, a licensing expert but OWFa (the new spec license) has the following termination clause:
> All rights, grants, and promises made by me to you under this Agreement are terminated if you file, maintain, or voluntarily participate in a lawsuit against me or any person or entity asserting that its Permitted Uses infringe any Granted Claims you would have had the right to enforce had you signed this Agreement, unless that suit was in response to a corresponding suit first brought against you
Wasn't this the problem with the previous BSD + patents license? Not criticizing by any means, I'm genuinely curious.
The license is certainly unclear from a layman's perspective.
The text specifically defines "Granted Claims" as "those patent claims that I own or control [...] that are infringed by Permitted Uses." And "I" refers only to the entity granting the patent rights.
So how does "Granted Claims you would have had the right to enforce" make any sense? Does it only apply to co-owners of the patent rights, or something like that?
> The license is certainly unclear from a layman's perspective.
If that's your standard then you'll either be using PD or leaving yourself up to your ears in very very risky code. Most laymen won't understand the full legal implications of something as simple as the BSD licence.
It's important to note the difference between the specification (now licensed under OWFa) and the implementations (now licensed under MIT).
GraphQL.js and Relay are now basically in the same situation as React. The GraphQL specification however is more general and needs the Patents around it to be specifically granted. The above doesn't do anything but say "if you sue specifically over the rights granted herein then we'll revoke" but that's nothing like as broad as the problematic Patent grant was.
This patent grant seems at first glance to be much less aggressive than BSD+patents. It seems to only work if the patent claim being filed is related to GraphQL.
the funny thing is, this means that the patent grant previously shipped with react had basically zero relevance to using react (even after a patent dispute).
I don't understand how this can be a patent. I seem to be infringing on the patent every day whenever I try to navigate through xmls and json files with a friendly API. Can anyone shed some light on how this patent is innovative?
> some people were pushing the unfounded idea that one's usage of react would somehow be impacted by the patent grant.
The idea wasn't unfounded, it was untested. People had worries because of how it looked like it could be used, and people with legal experience that weighed in seemed to have differing opinions on the possible impact. That was a foundation for concern.
what matters are whether patents are registered (public data), not what fb claims.
removing the patent grant only means you are less safe in terms of patents (fb can initiate a suit without penalty), and no more safe in terms of react usage (fb can still revoke your copyright grant at their discretion).
For one, the problem with React was with the specific limitations and conditions of Facebook's patent grant. These are completely different terms, so I don't see why you'd expect the same response.
Additionally, React is software while GraphQL is a specification. Different types of works require different types of licenses.
The BSD license says I can use the thing being licensed. With a library like React, it's pretty clear what 'use' means. By 'use', they mean they want to allow me to build software with it, so they're granting me all rights necessary to do that. With a specification, though? What does it mean that it grants me the right to use it? There's lots of things you might do with a specification. Did they intend to allow me to implement my own version? If they didn't, I might not have all the rights I need to do so.
I obviously don't know for certain, but I wouldn't be surprised if it was Matt Mullenweg who framed the issue in a way that resonated well enough with Facebook to make them change their approach to licensing so drastically and swiftly...
> I think Facebook’s clause is actually clearer than many other approaches companies could take, and Facebook has been one of the better open source contributors out there. But we have a lot of problems to tackle, and convincing the world that Facebook’s patent clause is fine isn’t ours to take on. It’s their fight.
That last part summed it up perfectly for me. Facebook may well have been right (and I personally believe they were), but it's their responsibility to prove they're right to the world, not ours.
In my opinion this is a lot more important than relicensing React. There are a few libraries that do React's job even better than React. But GraphQL and Relay are a bigger game changer... a 10x improvement compare to the current use of REST for server/client communication.
46 comments
[ 0.21 ms ] story [ 101 ms ] threadGlad to see it, and learning about the OWFa license :)
The original Medium post from an IP attorney is linked in the original issue comment, but I will link it here too as it was a catalyst: https://medium.com/@dwalsh.sdlr/using-graphql-why-facebook-n...
GraphQL's reference implementation (GraphQL.js) intends on not just being a great implementation, but also very closely following the spec, so you're in good shape.
Also, GraphQL.js has had a BSD3+PATENTS license until today, which meant you've always had that patent license. Later today I'll be releasing a version of GraphQL.js that is MIT license instead, understanding that the OWFa1.0 applies to all implementations including the reference implementation.
Out of curiosity, does anyone know of any other specs licensed under OWFa?
> All rights, grants, and promises made by me to you under this Agreement are terminated if you file, maintain, or voluntarily participate in a lawsuit against me or any person or entity asserting that its Permitted Uses infringe any Granted Claims you would have had the right to enforce had you signed this Agreement, unless that suit was in response to a corresponding suit first brought against you
Wasn't this the problem with the previous BSD + patents license? Not criticizing by any means, I'm genuinely curious.
+1 to someone who knows the legal side and can differentiate for laypersons, since the text looks awfully similar between many of these.
The text specifically defines "Granted Claims" as "those patent claims that I own or control [...] that are infringed by Permitted Uses." And "I" refers only to the entity granting the patent rights.
So how does "Granted Claims you would have had the right to enforce" make any sense? Does it only apply to co-owners of the patent rights, or something like that?
If that's your standard then you'll either be using PD or leaving yourself up to your ears in very very risky code. Most laymen won't understand the full legal implications of something as simple as the BSD licence.
GraphQL.js and Relay are now basically in the same situation as React. The GraphQL specification however is more general and needs the Patents around it to be specifically granted. The above doesn't do anything but say "if you sue specifically over the rights granted herein then we'll revoke" but that's nothing like as broad as the problematic Patent grant was.
That seems to mean if there's a lawsuit with the concerned company, but not related to the permitted use of GraphQL spec, no termination then.
Not a lawyer, though.
React has a revokable patent grant, people freak out about it, FB removes the patent grant, everyone rejoices.
GraphQL doesn't have a patent grant, people freak out about it, FB adds a revokable patent grant, everyone rejoices.
What am I missing?
That there is a patent actually associated with GraphQL, I believe.
https://www.google.com/patents/US9646028
https://www.google.com/patents/US20170221242
but as you perhaps allude to... people's use of graphql will be impacted by the patent grant. so back to square one?
The idea wasn't unfounded, it was untested. People had worries because of how it looked like it could be used, and people with legal experience that weighed in seemed to have differing opinions on the possible impact. That was a foundation for concern.
if fb wanted to stop react use, they would simply revoke the copyright grant.
in the end, all that was accomplished is that react users became less safe, not more.
removing the patent grant only means you are less safe in terms of patents (fb can initiate a suit without penalty), and no more safe in terms of react usage (fb can still revoke your copyright grant at their discretion).
Additionally, React is software while GraphQL is a specification. Different types of works require different types of licenses.
The BSD license says I can use the thing being licensed. With a library like React, it's pretty clear what 'use' means. By 'use', they mean they want to allow me to build software with it, so they're granting me all rights necessary to do that. With a specification, though? What does it mean that it grants me the right to use it? There's lots of things you might do with a specification. Did they intend to allow me to implement my own version? If they didn't, I might not have all the rights I need to do so.
DannyBee, an actual lawyer, talked briefly about the importance that this is a specification when this topic first came up: https://news.ycombinator.com/item?id=15291330
> I think Facebook’s clause is actually clearer than many other approaches companies could take, and Facebook has been one of the better open source contributors out there. But we have a lot of problems to tackle, and convincing the world that Facebook’s patent clause is fine isn’t ours to take on. It’s their fight.
https://ma.tt/2017/09/on-react-and-wordpress/
That last part summed it up perfectly for me. Facebook may well have been right (and I personally believe they were), but it's their responsibility to prove they're right to the world, not ours.
i agree, to some extent. but it's also irresponsible to say they're wrong without sound reasoning.