If React really is covered by patents Facebook has then Preact is likely infringing on them since it does the same things in similar ways. And Preact doesn't come with a patent grant from Facebook at all.
The risk behind Preact isn't the API. Remember, this is a discussion about patents, so what matters is fundamental concepts and algorithms.
The most likely thing for Facebook to patent is the concept of a virtual DOM that's diffed to apply updates to the real DOM. IF they have such a patent (and apparently they don't), then any library that has a vdom implementation infringes, including Preact.
Of course, if they DON'T have such a patent (which seems to be the case), then Preact is safe, but so is React. :)
They would have to sue on the basis that Preact and by extension all React-compatible APIs are in violation of their patent.
This would cause mass alienation in the community for little gain, and force many previously neutral parties to align against them for attacking a completely separate project.
And for little damage as well....
If we rewrote our sites to use React coming from Backbone, JQuery and Angular... it won't be too much of a hardship to rewrite our sites to no longer use React in the future. Heck considering the 5-year churn of JS frameworks, I'm already penciling in the rise of a new framework in 2022.
They would simply sue a particular company for employing infringing technology. They wouldn't have to nor want to make any broader claim than necessary to achieve their goals in the case at hand.
It would likely be a company suing FB for infringing a patent who happens to also use Preact in a site. FB presumably wouldn't have access to the site source code (pre-suit), but would be looking at the compiled, minified public site. I don't know how Preact and React look when compiled compared to each other, but given their similar structures it might be hard to tell them apart. FB would identify the offending bits of code or code structure. They wouldn't need to even use the word "Preact" (or "React") in the suit.
If the underlying suit was a patent troll suing FB, FB's use of React patent clause might actually be celebrated in a enemy-of-my-enemy kind of way by the broader developer community.
It would require FB to finally disclose the patent numbers applicable to React. I've spent a few hours attempted to review FB's patents to find anything related to React technology, but it's a needle in a haystack challenge and I failed. There are tens of thousands of patents and impossible to know what keywords to search for. (If someone else has done this work, would be great!)
I believe you are mistaken, the problem with the license, if I recall the discussion correctly was that if your company used React then they can't go on a patent lawsuit with Facebook even if the patents have zilch to do with React.
The implication is if you use react now you give away rights.
The same is not true for angular, vue or mithril. Some argue if you use vdom there might be issue. But at least with those you/your dev is not giving away rights willingly...
But come to think of it; That is the way fb started :/
That may be what was said in a discussion, but it is incorrect. If your company sues Facebook for a patent, then you lose the extra patent grant, which means you would have only the original BSD license. Which is what ASF seems to want the software license under anyway.
The patent grant from FB grants you strictly more rights than BSD alone (though admittedly, you could lose those extra rights).
> if I recall the discussion correctly was that if your company used React then they can't go on a patent lawsuit with Facebook even if the patents have zilch to do with React.
That's simply false. It cannot happen. How many times does this need to be explained?
It's been discussed a ton, the plain language of the license makes that clear, Facebook even covered this in their official React license FAQ (https://code.facebook.com/pages/850928938376556).
>> Does the additional patent grant in the Facebook BSD+Patents license terminate if I sue Facebook for something other than patent infringement?
> No.
>> Does the additional patent grant in the Facebook BSD+Patents license terminate if Facebook sues me for patent infringement first, and then I respond with a patent counterclaim against Facebook?
> No, unless your patent counterclaim is related to Facebook's software licensed under the Facebook BSD+Patents license.
My interpretation of that is if I use React I can't sue Facebook for any patent violations lest they pull their React patent licenses and immediately sue me for infringement.
I think we read a different FAQ, or I'm misreading your link. The FAQ says that if Facebook sues _you_ for patent infringement and you counter sue for patent infringement that they won't revoke your license, but I don't see anything that answers the parent comment's concern.
I'm pretty sure that the concept (or implementation) of virtual dom wasn't invented as a part of React. IANAL but I don't think they could patent it. Ignoring specific optimizations, a virtual dom algorithm is fairly simple.
Correct, there is known prior art relating to vdoms, so any such patent would be fairly easy to defeat, IF it exists...and patents are public, and people have looked, and no such patent seems to exist.
The patent issue is really not a big deal with React; the real concern is philosophical.
> We learned from Java and Google that you can't patent and API
did we? I think the jury is still out on this, i.e. we had one verdict for google, one for oracle, one for google again, and now there's another appeal.
API is a matter of copyright, patents can cover the methods and techniques underneath the API, and so in a way is more general, and it's possible that Facebook patents concern Vue as well.
The tricky part is probably testing. I don't think e.g. jest (or maybe it was enzyme?) supports alternative implementations quite yet, though they were working on it...that was true months ago though.
If you're starting from scratch pretty easy though, sure. But that assumption is all too widespread in the JS ecosystem these days : (