It's safe to go back in the water again. Well, it's safe to use code from Facebook's React.js library in open source projects. The folks at the social site have done an about-face and will be changing React.js's license to MIT, along with the licenses for Jest, Flow and Immutable.js. The announcement came exactly a month after we reported on a licensing brouhaha that had resulted in a standoff between Facebook and the Apache Foundation.
At issue is a license Facebook created by taking an existing open source license, modifying it with a short patent caveat, then calling it the BSD+Patents license. Facebook had claimed the license to be GPL compatible, which was pretty much accepted at face value since its base, the three-clause BSD license, is an accepted open source license.
The issue was with the patent clause Facebook had added to the license, which states that anyone using the code, directly or indirectly, cannot take legal action against Facebook for any patent infringement involving any software without losing the right to use and distribute the code. Also, if someone using the code sues anyone other than Facebook for patent infringement involving Facebook's code, rights to the code is also lost.
The problem wasn't with patent protections: Many open source licenses, including Apache, have patent clauses preventing users from suing over any patents the covered software might infringe, but Facebook's license seeks to protect the company from infringement by any and all of its software. Some also fear that the wording might make derivative works downstream affected by an upstream lawsuit as well.
The later fear wasn't the intent, Facebook claimed, and refused to either rewrite the license or adopt a new one, issuing a statement on August 18 that said, "We've been looking for ways around this and have reached out to ASF to see if we could try to work with them, but have come up empty."
That seemed to be the end of it. Then on Friday, Facebook's engineering director, Adam Wolff, announced in a blog post, "Next week, we are going to relicense our open source projects React, Jest, Flow, and Immutable.js under the MIT license. 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."
So, what happened to bring about the abrupt change of heart? It appears as if the popular content management platform WordPress happened.
For several years, React.js has been heavily incorporated into Calypso, the WordPress.com interface. More recently, the WordPress community has started using it for the new Gutenberg core editor that is planned to be included in all versions of WordPress itself, which accounts for an estimated one out of four of all websites on the internet.
On September 14 Matt Mullenweg, the founder and CEO of WordPress's parent company, Automattic, wrote a blog post explaining that Automattic doesn't have a problem with Facebook's patent clause, but having WordPress users "all inherit the patents clause isn’t something I’m comfortable with."
"[T]he Gutenberg team is going to take a step back and rewrite Gutenberg using a different library," he said. "It will likely delay Gutenberg at least a few weeks, and may push the release into next year. Automattic will also use whatever we choose for Gutenberg to rewrite Calypso."
That was evidently enough to prompt Facebook to change its position. The company has often expressed pride in its open source efforts, and for several years has nurtured its relationship with the open source community by having people at open source conferences giving presentations. Evidently, it wasn't prepared to lose the goodwill it had worked to develop.
"Many of our popular projects will keep the BSD+Patents license for now," Wolff said. "We're evaluating those projects' licenses too, but each project is different and alternative licensing options will depend on a variety of factors."
Evidently, those using the software will need to update to be covered under the new license.
"We'll include the license updates with React 16's release next week," he added. "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."