Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Relicense React Native to MIT along with React, etc. #16079

Closed
fungilation opened this issue Sep 25, 2017 · 14 comments
Closed

Relicense React Native to MIT along with React, etc. #16079

fungilation opened this issue Sep 25, 2017 · 14 comments
Labels
Resolution: Locked This issue was locked by the bot.

Comments

@fungilation
Copy link

Facebook announced that React, Jest, Flow, Immutable are being relicensed from BSD+Patents to simple MIT. Unless there's particular reason for React Native not to and/or this is in a conversation somewhere I'm not seeing, RN should also be relicensed similarly.

For reference, this is the PATENTS grant file in RN that's similar to what's in React also, currently.

@richardgirges
Copy link

See #16069 for some detail around this, I think the current stance is that RN won't be relicensed (per FB Engineering Director via a Twitter post). Although this ticket is posed as more of an entry point for discussion.

See also #16080 which was just made with a similarly posted question.

@fungilation
Copy link
Author

Very much missed opportunity to start the community off again on fresh, legally neutral grounds. Facebook have the resources and patents porfolio now to defend themselves against any foe, troll or otherwise (cough Yahoo cough) when it comes to patents. If they truly want to make their technology core to other companies' and foster more shared innovation for 99.99% of what won't be a legal issue for them, they should relicense ALL their OSS and drop the patents clause.

@RobertoMalatesta
Copy link

My guess is that in the end they will release RN and GraphQL under MIT licenses.
It will only take time.
Else these projects will be seen as baits and loopholes and will turn into bad PR and no adoption of wonderful technologies in the enterprise world.

(just wondering how much stupid lawyers can damage a company image) 😠

--R

@fungilation
Copy link
Author

Lawyers are not stupid. I had to deal with too many for better or worse. They are just laggy.

@dantman
Copy link
Contributor

dantman commented Sep 27, 2017

At the moment I'm actually somewhat relieved. I do not think that relicensing to plain MIT, which has no patent protection of any kind as opposed to something like Apache 2.0 is a good idea.

MIT grants us users of react-native an open license to the copyrights involved in Facebook's work on react-native, but it doesn't grant a license to any patents. The current PATENTS file may not be the best for the OSS community, but IMHO neither would pure MIT.

I just skimmed over a list Facebook's patent applications and I see a couple of ones that could at some point be relevant to react-native. It would be just as bad for the OSS community if Facebook relicensed react-native to plain MIT and used techniques they've patented as part of react-native without granting a license for those patents, letting them sue any user of react-native using patents even though they licensed copyrights.

@SynerG
Copy link

SynerG commented Oct 8, 2017

This is a good point. With the previous license + patent grant, everybody knew we had a grant to use the related patents (until specific termination clauses).
With a pure MIT license, do we have a grant for related patents?
I guess what was needed was to remove the grant termination clauses, not the whole text that provides the grants.

@dantman
Copy link
Contributor

dantman commented Oct 8, 2017

With a pure MIT license, do we have a grant for related patents?

MIT license does not have any form of patent grant or protection. Under pure-MIT any mobile software patent applicable to react-native can be used to sue any react-native user.

I guess what was needed was to remove the grant termination clauses, not the whole text that provides the grants.

I don't think the idea of termination itself in the patent grant is the problem, but the execution of it.

The majority of OSS licenses that have a patent grant in them contain some form of a termination clause to the patent grant. Apache 2.0 has an explicit termination clause that terminates the patent grant if you institute relevant patent litigation. MPL 2.0 copies the termination clause in Apache 2.0. And while GPLv3 doesn't have an explicit clause a combination of the virality, patent, and termination clauses effectively make it so trying to sue anyone regarding usage of the software terminates all your rights under the license (copyright too, not just patent grants). The only OSS license with a patent grant but no retaliation clause is the uncommonly used EPL.

From what I understand from comments/articles I see in a quick search there are a few issues with the execution:

  • The major problem is with the text "(i) against Facebook or any of its subsidiaries or corporate
    affiliates" which is overly broad making it a harmful "strong retaliation clause" that causes the patent revocation clause to take effect even when a patent suit has nothing to do with react-native. Which allows Facebook to freely infringe on the patents of any react-native user unrelated to react-native while discouraging those companies from suing Facebook for Facebook's infringement because suing Facebook for infringing in patents unrelated to react-native will terminate the patent grant for patents related to react-native. This article has more information on weak/strong retaliation clauses near the end.
    • This broadness likely makes the license GPL incompatible, what violates the Apache Foundation's principles, and what makes various companies prohibit usage of React Native in any project.
  • There may be a few people confusing the termination clause thinking it also terminates the BSD/copyright side of the license, rather than just the patent grants.
  • Facebook writing a custom patent grant in addition to the license means that the terms need to go through review by the legal departments in companies trying to use react-native, which is a significant barrier to usage.
  • In general, creation of custom licenses is intensely discouraged in the open-source community.

TL;DR

The correct fix to this issue would be to relicense react-native not under MIT but instead either license under Apache 2.0 or dual-license it under Apache 2.0/GPLv2 (for compatibility with GPLv2-only projects that cannot use Apache 2.0).

Facebook likely already knows this, because they already relicensed RocksDB as Apache 2.0/GPLv2.

@fungilation
Copy link
Author

Nice write-up, thanks for the legal analysis.

@lsycxyj
Copy link

lsycxyj commented Oct 9, 2017

@dantman Do you mean I could be sued anytime if I use any libraries under MIT license Like Preact.js, Vue.js, AngularJS)? So why does MIT license exist?

@dantman
Copy link
Contributor

dantman commented Oct 9, 2017

@lsycxyj There are two answers to that:

Firstly, the reason MIT exists in its current form is because the MIT license was created before software patents even became "a thing".

Secondly, patent grants are only relevant if the creator of / contributors to a library actually have patents relevant to a library.

  • If someone other than a contributor to a library has a patent that a library infringes on, then they can sue you no matter what license the library is under. (Patent grants can only grant permissions for patents held by entities that write/contribute to the library)
  • If none of the writers of or contributors to a library have any patents or plan to get any, then patent grants are pointless since there are no patents to grant rights to
  • If there are no patents that could apply to a library and there likely won't be, then patent grants are pointless even if the contributors have unrelated patents since patent grants only grant permissions for patents that are applicable to the library

For most small libraries none of the developers have patents and/or the library doesn't do anything any of the contributors could get a patent for (ie: it doesn't do anything that hasn't been done before that you could patent). So MIT is fine for them because there is no point in including a patent grant. This is likely the case for projects like AngularJS and most of Vue.js.

As for Preact.js and Vue.js' diffing, that entirely depends on whether Facebook has a patent for the HTML/virtual diffing algorithm and whether Preact.js or Vue.js use the same technique. Of course license choice is irrelevant here, since those libraries aren't made by Facebook you wouldn't get a grant for a Facebook patent even if those libraries used Apache 2.0 or GPL. Of course since Facebook changed React.js to MIT without a patent grant (meaning React.js doesn't have patent protection for any possible patent related to the diffing algorithm) it's likely there aren't any patents held by related to React/Preact/Vue.js held by any relevant entity.

The problem with react-native is that it's being developed by large entities with large pools of patents (Facebook and others), react-native is part of the mobile ecosystem, and Facebook has or is trying to acquire a number of mobile related patents, which may or may not apply to techniques used in react-native or Facebook may add code using these patents in the future (Facebook and their internal developers use react-native internally and pull changes from that back into the open-source library, so it would be very easy for someone to intentionally or unintentionally slip in code using one of Facebook's patents). For instance Facebook has patent applications for patents relating to denoising and predicting touch input. Which could be applicable to techniques that may be used in the react-native touch responders now, or in the future if a Facebook developer decides react-native responders are too unreliable in a Facebook app and adds something patented into react-native.

@lsycxyj
Copy link

lsycxyj commented Oct 10, 2017

@dantman So could I interpret your answers as "I still could be sued if I use AngularJS under MIT license because, for example, AngularJS may get a patent something like relating to algorithms of dirty data checking and updating elements in the future"?

@dantman
Copy link
Contributor

dantman commented Oct 10, 2017

@lsycxyj AngularJS doesn't use virtual dom diffing like React/Preact/Vue.js. And the dom binding techniques that AngularJS uses have been used for ages, there's little "new" that AngularJS is doing from what I can tell. So it's unlikely that someone writing AngularJS could get a patent for anything AngularJS is doing.

@hramos
Copy link
Contributor

hramos commented Oct 11, 2017

As Adam Wolff said earlier, we're evaluating our open source projects' licenses, but each project is different and alternative licensing options will depend on a variety of factors.

I'm going to close this issue, as this is not an appropriate place to address license questions.

@hramos hramos closed this as completed Oct 11, 2017
@facebook facebook locked and limited conversation to collaborators Oct 16, 2017
@gaearon
Copy link
Collaborator

gaearon commented Feb 17, 2018

React Native (including Metro, Fresco, and Yoga) has also been relicensed as MIT.

26684cf

@react-native-bot react-native-bot added the Resolution: Locked This issue was locked by the bot. label Oct 11, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Resolution: Locked This issue was locked by the bot.
Projects
None yet
Development

No branches or pull requests

9 participants