Big post on Matt Mullenweg’s blog today.
The Gutenberg team is going to take a step back and rewrite Gutenberg using a different library. It will likely delay Gutenberg at least a few weeks, and may push the release into next year.
The Calypso editor in WordPress.com will do the same:
Automattic will also use whatever we choose for Gutenberg to rewrite Calypso — that will take a lot longer, and Automattic still has no issue with the patents clause, but the long-term consistency with core is worth more than a short-term hit to Automattic’s business from a rewrite. Core WordPress updates go out to over a quarter of all websites, having them all inherit the patents clause isn’t something I’m comfortable with.
The search is on for a new library to replace React in both Calypso and Gutenberg:
We’ll look for something with most of the benefits of React, but without the baggage of a patents clause that’s confusing and threatening to many people.
Why It’s Happening
It’s complicated. React is BSD-licensed open-source software, but it also ships with a patent grant: the software is patented, and use of the patent is given out freely, resulting in a license nicknamed “BSD + Patents.” The patent grant also comes with a clause: “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.”
Both Facebook and WordPress’s general counsel explain that this complex licensing setup exists for only one reason: to let Facebook countersue for patent infringement when it’s targeted for frivolous lawsuits by patent trolls. However, Apache (the open-source server software that is the “A” in “LAMP stack”) doesn’t like it, and added the BSD + Patents license to a list of licenses contrary to their own policies.
All this, plus discomfort in the WordPress community around the mixed license, was enough to get WordPress (.org and .com) to push the eject button on React, and that’s where we are now.
Analysis and Takeaways
Possibly an Unforced Error
Personally, I hate to see ideology get in the way of good software being built for users. If it is indeed the case that React’s patents clause only kicks in if you sue Facebook for patent infringement, there’s an easy solution: don’t sue Facebook for patent infringement. This was the conclusion Calypso originally reached, and from my (very under-informed) vantage point it would have been the correct one for Gutenberg.
Or Politics Between Open-Source Projects
It’s also very possible that React was dropped not (primarily) because of #wpdrama, but because WordPress simply couldn’t take the hostile step of ignoring the Apache Foundation’s guidelines. The language of Matt’s post points to this as a possibility:
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.
This can be plausibly interpreted as, “We may be fine with React, but we don’t want to get dragged into an argument with the world’s largest open-source server software project over it.”
Could Be a Chance for a Reset on Gutenberg
On the other hand, I’m optimistic that the reset could be an occasion for people to rethink Gutenberg itself, in favor of it being the more ambitious front-end editor that users want. Last night, Matt commented on this site about that possibility; I find that he still thinks opaquely about the very simple statement “users want front-end editing,” but I’m really happy that he’s looking at community takes on Gutenberg, especially at the end of such a busy week.
I feel like Matt’s having a tough week. Thanks to him for for fighting the good fight. (It always shifts your perspective a bit when you get a comment from someone you’re writing about. You may not agree with him, but you imagine him sitting down to consider what you’ve got to say, late at night, with a glass of wine at the end of a week of tough decisions. It’s humanizing.)
Lastly, if you’re a patent troll, I hope that it’s lucrative enough to compensate for you being basically a human tapeworm.