News

Facebook Relents to Developer Pressure, Relicenses React

The open source licensing issue that threatened to derail the popular React JavaScript library has been resolved, with Facebook agreeing to relicense the project without a controversial patent grant.

Facing backlash from individual developers and companies alike -- many of whom vowed to discontinue using React -- Facebook reversed a decision to issue React and other popular software under a "BSD + Patents" license that it enacted in an attempt to avoid "meritless" patent litigation.

To that aim, Facebook introduced the patent grant to its open source BSD license, creating the "BSD + Patents" license.

"The patent grant says that if you're going to use the software we've released under it, you lose the patent license from us if you sue us for patent infringement," Facebook Engineering's Adam Wolff said in an Aug. 18 blog post. "We believe that if this license were widely adopted, it could actually reduce meritless litigation for all adopters, and we want to work with others to explore this possibility."

However, the Apache Software Foundation (ASF), a main player in the open source space, subsequently ruled that the BSD + Patents license would not be accepted in Apache products. As those products include a vast array of software, that was a huge blow to React and other projects.

The ASF said:

The Facebook BSD + Patents license includes a specification of a PATENTS file that passes along risk to downstream consumers of our software imbalanced in favor of the licensor, not the licensee, thereby violating our Apache legal policy of being a universal donor. The terms of Facebook BSD+Patents license are not a subset of those found in the ALv2, and they cannot be sublicensed as ALv2.

Facebook dug in its heels against the ASF decision, which came shortly before a major new release of React, called React 16, featuring a big tech rewrite of core technology nicknamed "React Fiber." The licensing kerfuffle served as a distraction from the new React 16, whose impending official release is just days away.

"We won't be changing our default license or React's license at this time," said Wolff, who apologized "for the amount of thrash, confusion, and uncertainty this has caused the React and open source communities." Furthermore, he said, "We know this is painful, especially for teams that feel like they're going to need to rewrite large parts of their project to remove React or other dependencies."

One developer in that camp is Matt Mullenweg -- the main guy behind the popular WordPress platform -- who threatened to redo project Gutenberg, a "block editor" from the WordPress community designed "to make adding rich content to WordPress simple and enjoyable."

"The Gutenberg team is going to take a step back and rewrite Gutenberg using a different library," Mullenweg said in a Sept. 14 post. "It will likely delay Gutenberg at least a few weeks, and may push the release into next year."

Other companies and developers weighed in with similar thoughts, though some developers seemed confused about the technical aspects of the patents grant and what real-world effect the BSD + Patents license would actually have on their operations.

"Well my company is shying away from react now ... this is sad," said one Reddit commenter about the impending release of React 16. The reader attributed the problem to "some open source issue." Other readers said they or their companies were also rethinking the use of React, though others reported their legal teams had approved the continued use of React, anticipating no litigation problems.

And the debate about the open source licensing brouhaha continued on multiple forums.

On Friday -- exactly five weeks after Wolff's post -- Facebook changed its mind.

"Next week, we are going to relicense our open source projects React, Jest, Flow, and Immutable.js under the MIT license," Wolff said in a new post. "We're relicensing these projects because React is the foundation of a broad ecosystem of open source software for the Web, and we don't want to hold back forward progress for nontechnical reasons."

That move pleased several companies and developers, including Mullenweg.

"I am surprised and excited to see the news that Facebook is going to drop the patent clause that I wrote about last week," Mullenweg said in a new post yesterday. "They've announced that with React 16 the license will just be regular MIT with no patent addition. I applaud Facebook for making this move, and I hope that patent clause use is re-examined across all their open source projects."

Some were glad to see the licensing issue resolved, so developers can get back to worrying about development, including Wolff.

"We'll include the license updates with React 16's release next week," he concluded in Friday's post. "We've been working on React 16 for over a year, and we've completely rewritten its internals in order to unlock powerful features that will benefit everyone building user interfaces at scale. We'll share more soon about how we rewrote React, and we hope that our work will inspire developers everywhere, whether they use React or not. We're looking forward to putting this license discussion behind us and getting back to what we care about most: shipping great products."

For those interested in more details about the case, an exhaustive Hacker News thread provides plenty of fodder.

Among other things, the thread brings into question the fate of other Facebook-sponsored open source projects that weren't included in the relicensing that affects React, Jest, Flow and Immutable.js. That includes React Native, a young, popular approach building upon React that puts JavaScript to work in the same way, except for building native iOS and Android apps.

One Hacker News reader said:

"So which FB project still have a BSD+patents license. I count:
  • ReasonML - https://github.com/facebook/reason/blob/master/PATENTS.txt
  • GraphQL - https://github.com/graphql/graphql-js/blob/master/PATENTS
  • react-native - https://github.com/facebook/react-native/blob/master/PATENTS
  • PlanOut - https://github.com/facebook/planout/blob/master/PATENTS
  • Flow - https://github.com/facebook/flow/blob/master/PATENTS
  • Haxl - https://github.com/facebook/Haxl/blob/master/PATENTS
  • Flux - https://github.com/facebook/flux/blob/master/PATENTS

So stay tuned for more open source licensing debate.

About the Author

David Ramel is an editor and writer for Converge360.