Today, during my daily web crawling, I found this article by Matt Mullenweg. I will not dwell in details, you can read the full story in the linked post. But I try to give you the core of the announcement: WordPress just decided to abandon React. This is a big news, with many implications and a few lessons to learn. Let’s go by steps.
The Context
You are probably asking yourselves: why? A perfect summary is explained u/A-Grey-World comment on Reddit:
Facebook has a clause that says “If you sue us, you loose the rights to use our Patents” in their license to use React (some very popular software).
Suing is how you defend your patents. So by giving up your right to sue, you’re effectively giving Facebook the ability to use any patent your company or related companies own.
Now they’d never do that, because it would be stupid - the company who’s patents it was using would just replace React ASAP and then Facebook would be exposed. So it’s too risky for Facebook to ever do. But that mean’s there’d be a big redesign cost of replacing React. Super, super tiny risk. But say “don’t worry the risk is tiny!” to your company lawyers…
[…]
Ultimately, it’s probably fine to use React. Microsoft, Google etc do. However, there’s a good chance many company lawyers will take one look at it and see a huge exposure of the companies IP, and say “nope”. The confusion over the license can easily be seen as risk.
And if companies say no to React, they’ll be saying no to any Wordpress that uses it. Wordpress don’t want that, even if their laywers okayed the license - they know there’s a good chance it’ll impact the update of a React Wordpress as companies decide it’s easier just to stay clear of the mess.
Like (I suspect) many companies, Wordpress just don’t want to deal with all the confusion, and decided not to use React.
To summarize even further. Facebook is going to introduce a very controversial clause in React license. The clause says “if you want to sue us, you must stop using React”. There is probably no risk in using React because of a mutual tacit agreement between you and Facebook to never use that clause. Facebook has no advantage in using it if you are not starting a patent war with Facebook. Nevertheless, even if the risk is near zero, it is not zero. Many companies want to be legally bulletproof and replacing React when your entire web application is based on React is a huge problem.
The Consequences
Because this controversial clause propagate through WordPress to any company using it, the burden of this choice is multiplied by several orders of magnitudes. Every company using WordPress is accepting implicitly the React license as well. This is something WordPress cannot accept and, as a result, it decided to give up on React.
However, this is problematic. React was the framework of choice for the full interface rewriting of WordPress (Calypso) and it was starting to come into the core WordPress application through the new editor Gutenberg. As you can imagine this is huge slowdown for WordPress that now have to rewrite again everything in a different framework.
While this is a great problem for WordPress the consequences will probably wider. WordPress is the first big company to fall “victim” of the Facebook’s killer clause. This may amplify the resonance of the Facebook’s decision and push other companies to abandon React or, if they are new, to chose directly a different UI framework. Some months ago, Apache itself banned the Facebook-clause from all their current and future software (ant they are a lot).
It may be the beginning of some strange domino effect? Maybe. But Facebook does not seem to be worried by this and the clause will not be removed (at least in the near future).
What to do now? It is a problem for me?
If you are using React, you don’t probably need to worry. As I said, I do not see direct practical effect from this clause for now (unless you plan to sue Facebook for something). Just keep this in mind.
But if you are more cautious or if you just hate the ethical implications of this license change, you need to look to other places.
If you already have a React application, the logical and less painful solution is to fork React at a version before the clause and move on with that. Luckily, there are already some project in this direction like Preact. If you look for something compatible with React but Facebook-free. You can try that.
The alternative is to go in a complete different direction. The hyped framework of this time is Vue.js without any doubt. I cannot give you a detailed review because my front-end experience is very limited. I can just say that TypeScript support in Vue.js is insufficient. React works smoothly with TS. Vue.js and TS together are a much more painful experience. I really hope they can improve it in some next release.
A Lesson and an Opinion
These are the facts. Now come a couple of personal opinions. The first one is to never trust Facebook. This clause is a legendary dick move. React is probably one of the most successful UI framework of these years. Pushing a clause so controversial (and unacceptable, for me) when React already so deep in many applications and is just hard to switch to something else, is horrendous. Is legit, of course, but horrendous.
This is probably the Facebook version of Microsoft’s “Embrace, extend, and extinguish”. If they did that now and if nobody protests, who stop them from doing worse the next time? I can go over with my Facebook rant, but I’ll probably go too much out of topic.