Even if we paint all of their actions in the most favorable possible light, and even if the clause is a paper tiger as some have claimed, it doesn't matter. This is not how open source should work. We should not have to debate for years if a project's license is radioactive. Especially individual devs like myself who just want to use a great tool. We should be able to just use it, because it's open and that's what open means. This is so much worse than closed. It's closed masquerading as open.
It's under MIT license developed by a single person in addition to community's contribution.
This link is rather interesting https://vuejs.org/v2/guide/comparison.html#React
Preact is a fast 3kB alternative to React, with the same ES2015 API as that of React.
Preact is MIT licensed and does not have any additional conditions beyond that.
I also agree with the OP, even viewing FB in the best light possible, about the best case you can make is that they want to hedge any risks to themselves while profiting from OSS contributions and the OSS marketing. As it stands, there is virtually no case to be made for them wanting to contribute to the OSS community. IMHO if you're a dev and contributing to the facebook oss ecosystem, I would actively encourage you to stop.
Patents protect ideas and inventions. In most cases, patent assertion cases are not black or white — win or loose. Infringement evaluation is complex and costly. A lawsuit can cost hundreds of thousands or millions to file and pursue. You might have a 85% confidence that FB violated a patent of yours, but to even pursue it it’s going to cost you a lot of money.
If on top of that, you will need to invest to migrate away onto a different frontend framework first, and make sure that all your customers are using your new product version (what if you’re using React Native? your users may not upgrade the apps at once!), before you can even file the lawsuit, do you think that’s an honest, ethical usage of open source philosophy?
Bottom line: Open Source is not a “quid pro quo” trade. Open Source is about creating communities to build better software together. It should never be used as a marketplace to exchange people's rights.
It would be fitting for FB to change their motto (?) to "We're not evil either." Lol
Do you believe Google also has shown intents to be totalitarian or "be evil" ?
IMHO Google has handled their enormous power and popularity very well.
Fair Disclaimer: I must confess I'm a google user, not affiliated to them in any other way (that I know of) though :D
There is still a question on fair use. Google won the jury trial, but the appellate court is ruling in a few months, and that could change everything.
Oracle really has a way of being a big swinging legal turd, I do believe they would try anything they could. It just seems like they wouldn't wait a year to get it going.
Namely: "For the avoidance of doubt, it has to be made clear that only the expression of a computer program is protected and that ideas and principles which underlie any element of a program, including those which underlie its interfaces, are not protected by copyright under this Directive."
The actual permission notice says you have the right to use the software without restriction. To me, a layman, it would seem contradictory and unfair if they later claimed that they held previously unmentioned patents that restricted your use of the software.
As a bonus, it's a lot smaller, just 3kb minified
also check out nuxt.js, a small abstraction layer on top of vue that has some opinions about file structure and also makes SSR a breeze https://nuxtjs.org/
I'd venture to say that very few if any of the sites Facebook lists at https://github.com/facebook/react/wiki/sites-using-react are using "React the view library" by itself.
not sure, but I think that means users of weex are subject to BSD+PATENTS also
And Polymer isn't even really either of those things, it's a polyfill for a native browser feature.
This creates great looking results pretty fast and also enables you to easily give back to the community by open-sourcing your own components. Last time I checked already 1100 components were listed, of which the vast majority seemed really well build.
I hate toolchains and their clunky 10+ seconds compile step.
It's conspicuously missing from these discussions
Angular has other issues like the AOT compilation file sizes and the fact that certain standard language features are not supported with it. But even having to know the ins and odds of AOT vs JIT...these aren't even things you have to worry about in any of the ones I mentioned above.
I really wish the Angular team had learned the best lessons from React...but they didn't. It's definitely better than Angular 1...but it's not as good as these other alternatives.
I wonder if this is React's "Angular 2." What's worse, the misstep this time is due to ham-fisted corporate mal-
stewardship, not just miscommunicated technical good intentions. Vue is similarly positioned to be the "next thing" in the way React was three years ago. My how this space churns.
Compare that to the space ship Angular 2. They really made an outstanding effort to create a huge barrier of entry for anyone not having a degree in DevOps. I'm an old fart, I don't need your stinking CLI, Grunt, Gulp, NPM etc stuff.
Compare that to Vue.js really shines in this regard with the same level of entry as AngularJS. For me that is part of what I thinks makes it a succes.
When choosing a new framework I tend to not look for the future, but look in the past. I chose what was mainstream 2-3 years ago, which means right now still AngularJS for me. This means I'm a leecher on StackOverflow, but so be it. I have my own company and clients pay me for working applications, which means I have to choose my tools as efficient and effective as possible. By choosing last years model, it is less sexy but will get me from A to B with the same speed plus added reliability. At the same time I'm keeping a close look to Vue.js and if still going in the same direction next year as it is now, I will definitely switch to it.
It's not a copyright license. It's a patent grant/license which is completely independent. This matters for several reasons, including when just saying "license", this usually means a copyright license.
If this patent grant get's revoked, you are back to simply using the BSD license with no patent grant. I've read so many people say "you'd have to stop using react if you sued facebook", uh, no, you'd have a bsd license with no patent grant like you probably do with tons of other free software your company uses. Clearly, people should be complaining about that if they are complaining about this, but the misunderstanding and misinformation is really strong. If you believe software patents are universally bad, like many people including me, then it is clearly better using the MIT/BSD license alone, which gives you zero patent rights, you are simply infringing and waiting to be sued. I have no problem with it. https://www.gnu.org/philosophy/software-patents.en.html.
Also by "license" I meant the "BSD + Patents license" as the Facebook writeup put it.
Those others were wrong. Facebook have made this very clear in their FAQ :
> Does termination of the additional patent grant in the Facebook BSD+Patents license cause the copyright license to also terminate?
If BSD is a "license to use", then it is implicitly a copyright license _and_ a patent licence.
Assuming the above, the argument goes that the implicit patent license in plain BSD is overridden by the explicit patent license in BSD+Patents, and that the explicit one is much more restrictive than the (unwritten) implicit one.
The FAQ doesn't address that.
I meant to write "better than using." Also, I was not aware of the implied patent license argument.
I suppose there's not much I can do about it except to move my efforts elsewhere, even if it affects my earnings.
It's more like developers in large parts stopped caring for standards and looked after products and "big players" and "the next big thing" instead aka the consumerization of IT.
Happened to SQL, browsers, middleware, network protocols, app servers, containers, programming and markup languages, and more.
Nowadays, big things come onto the scene and into developer's minds via obscene venture capital budgets.
This is not a recent phenomenon. For example, developers using (mostly) Microsoft tools on Windows have been doing it for decades already.
Drives home the point of why I need to move on and be careful where I put effort.
Its not that great anyways when compared to angular 2/4. There are too many concepts to be mastered and it soon become overwhelming. I tried learning react but dropped it after spending a week when I still could not understand routing. Sense of cohesiveness between different concepts is missing. I believe some learning junkies may get the kick out of it but that's not me. My time is better spent elsewhere.
Angular on the other hand introduces everything one single tutorials to make one productive. Deep dive later can be done later on when required.
Edit: minor typo
It's just React components up and down.
When you haven't had "that much trouble", it sounds like you're calling them stupid or a liar, and it sounds like you didn't consider the possibility that you're working on a very different problem or have a different definition of "figure out routing".
I store all of my user state in the URL. This way users can copy URLs to each other containing their state, I can press reload to debug things, Other people can embed portions of my application into iframes, and other good benefits.
However I don't want to sprinkle url changes and parsers all over my code, so I'd like to hook into the router system and glue it into the property system. I've probably been through a few versions of this idea with react and certainly spent at least a week in total trying to get it working well with all the different browsers and widgets, only to have react-router 4 come out and break it.
I then probably spent at least a day or two looking for similar-shaped hooks and couldn't find them. Maybe I should have spent more, maybe I should've been smarter.
However I note that the author of React-router took four very different approaches towards figuring out routing and produced incompatible APIs, which is a strong sign that they weren't able to figure out how routing should work either.
If React Router is not suiting your needs, there are many other options out there. That's the beauty of the ecosystem:
I'm glad that even React Router was willing to iterate on its implementation.
It takes a couple of hours to do a bit of research and searching to find the solution that fits your needs best.
I feel like I'm missing something big with everyone not even talking about angular. Maybe I feel this because Angular was big and then soon it wasn't. Probably that's the disconnect
And for me, the opposite was true vis-a-vis Angular and React, though got as far as making contributions to the Angular 2 tools before I decided to jumping ship.
and that's the problem. React itself solves a tiny subset and delegates the other responsibilities to different tools which may not align with each other. Most of the is spent is wiring making different choices and wiring them together.
On a side note what made you move away from Angular 2 to React?
So modularity is a problem now?
It's like breaking a kitchen knife into two: the blade and the handle, in the name of modularity.
Concretely, this is what I mean: Routing, and a bunch of other things are used together, it would've been better if react had kept the view library separate but also maintained an official router among other things
There are zero known patents related to react.
See for example:
"Some free and open source software licences also explicitly grant the patent rights necessary for the purposes of using, adapting and distributing the code, for example the Apache License v2, the GNU General Public License v3 and the Eclipse Public License. In some jurisdictions, including the UK, it is highly probable that even those free and open source software licences that do not explicitly grant patent rights do in fact provide them implicitly. After all, giving permission to perform a specific act strongly implies permission to perform the steps needed to do so. Thus the permission to redistribute the software granted by all free and open source licences - it can be argued - implies the granting of the right to make use of any of the licensor’s patents which would be infringed by the distribution of the code."
In the specific cases of the BSD and MIT copyright licenses note that the licenses do not say that they are irrevocable. A license granted for no consideration is generally revocable unless it specifically says that it is not.
There are substitutes for consideration. It is an open question as far as I know whether or not those apply in the case of free software and make licenses like MIT and BSD irrevocable.
If you use BSD or MIT licensed patented software that does not come with an explicit patent grant, you'll have to deal with these arguments if the patent owner decides to go to court:
1. There is no implied patent license,
2. If there is an implied patent license it is revocable and they revoked yours,
3. The copyright license is revocable, they revoked yours, and that implicitly revokes the implied patent license (even if it is irrevocable normally).
It's so much safer to try to stick to licenses that say they are irrevocable and include an explicit patent grant.
Sadly, although Facebook includes an explicit patent grant, it does not claim to be irrevocable. They even list one specific case where it can be revoked.
Though I use Angular in my day-to-day, I would really love to be in React land for that reason alone. I've had too many interface bugs due to simple template typos
I've contributed to React before and will continue to do so. I haven't seen a single reason why not to. Just because React doesn't use your favorite license? Well this may shock you but I also use and help develop closed source software. In my view there is nothing morally wrong here. What's more, it's not even clear which morals you think I would be failing by continuing to contribute to React.
That's not really the problem here. The problem is that by using React, even in a closed source context, you are potentially setting yourself up to not successfully make an IP claim against facebook, even for unrelated technologies.
You give up your right to sue facebook with ALL your patents while facebook only gives up the right to sue you with their REACT patent. We don't even know if there is such a thing as a "react patent".
If you live in a jurisdiction where the concept of software patents are void, as the GP indicates, the patent clause in the license is meaningless because there cannot be any patents on React in that jurisdiction.
The way I understood this conversation was that BMW (continuing your example) cannot sue facebook if facebook infringes them on an of their car patents but it's not a right or a grant or even a license of any sort.
No, that's not the problem for many(most?) of us. The problem is that Facebook has decided to throw out innovative extra conditions to an old and established license. Innovation is typically not a good thing with open source licenses. It just throws a lot of uncertainty and confusion onto the situation, and for what gain? In fact, no one has any clue how this patent grant will work in practice.
If we believe the minimalist interpretation that some people are proposing here, Facebook has gained virtually nothing here. And that fact in itself makes people suspicious, because why would they dig in for almost no gain?
Why do you even care? It's a great framework and if you don't want to use it under the license then don't. But why ranting about they should change the license?
I can understand why FB is licensing the way they do. I also would be pissed off if I would get sued for some nonsense all the time and would take an opportunity to potentially reduce that.
I'm going for Preact (https://github.com/developit/preact) for React alternative.
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. :)
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.
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!)
Why? Why is the API relevant at all?
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 :/
The patent grant from FB grants you strictly more rights than BSD alone (though admittedly, you could lose those extra rights).
Not at all.
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).
Please stop spreading FUD.
>> Does the additional patent grant in the Facebook BSD+Patents license terminate if I sue Facebook for something other than patent infringement?
>> 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.
Of what? Patents are public; link me the patent you think they'd sue you for infringing. :)
If they really want to crush little ol' me, I'm sure their legal team can find something in their existing patent warchest that would apply to React.
Plus we don't know if they have applied for patents that would apply to React that are still under review.
Yes, but also to your non-React code, right?
Like...seriously, what patent do you think they might have that somehow only applies to React and not all the other modern frameworks that have been busily copying React?
In short, if you get into a patent dispute with them, your license to use React does not terminate.
So when someone says "if you sue you will lose your rights to use react" this is wrong. My rights to use React come from the BSD license, not from the patent grant.
It's not so much they're "digging in" in the face of criticism, as they simply haven't noticed the criticism, because it has no relevance to Facebook at the level where corporate policy is set. Or so I believe. :)
I disagree. There are clearly a lot of people who evangelize React and other open source projects. It helps a lot with recruitment and Facebook's public relations among devs. I just don't think the attorneys grasp how much this is affecting other parts of the company.
I don't want a non-standard license... It's just more complexity we don't need.
Make it LGPLv3 or something if you want a patent clause, don't invent your own.
The patent issue is really not a big deal with React; the real concern is philosophical.
They won on a fair use claim. And that win is still subject to an ongoing appeal.
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.
npm i -S preact preact-compat
If you're starting from scratch pretty easy though, sure. But that assumption is all too widespread in the JS ecosystem these days : (
- Yahoo Mail
- NY Times
If they're ok with the license, you probably shouldn't worry too much. Basically, if you don't own any patents or if your company is smaller than any of the above, you should be ok.
I assume they were.
This license is likely to protect facebook against patent litigation that a startup might claim facebook is in violation of.
It's not too hard to imagine a scenario where the next snapchat-like-startup is using react native. Facebook is then in a super leveraged position against them legally.
Snap stories are now facebook stories, instagram stories, and whatsapp stories. It's not such a big leap that it'll happen again.
Once your 'professional lawyer' agrees that the license is enforceable it's up to you to decide whether giving Facebook an effective grant of all your patents it worth it.
my understanding is that this isn't the case - react isn't itself covered by patent, and the bsd license remains in effect.
Anyway, it's not up to me, it's up to the legal team and they are saying "No".
Turns out that forking a somewhat recent version of React that uses Apache is possible while still retaining any relevant patents (esp pending vdom patents) and API compatibility.
Maybe we need groups who can push to lobby for legislation to remove software patents in more countries?
So, Facebook, lets assume, isn't being malicious and genuinely feels this is the right approach to deal with what they consider to be "meritless" lawsuits... but at the same time, if this response-- genuine as it may be-- gives them abusive power, don't abide it.
Similar principle for politicians-- never support Obama/Trump having a power you wouldn't want Trump/Obama wielding.
For any aspect of power, assume the most abusive historical figure has it-- should they have it? IF not then don't grant it to even people you like.
At most situations you might be assigning improbable risks to things. If you have a reason to believe someone is not going to abuse power, then giving them said power should be okay in real life
Edit: May I add that you're swinging from one extreme to the other. Things need not be black/white. It's a fallacy all on its own
Everyone in this whole thread is saying the same thing. For anyone not up to speed, I found the following explanation of the issue (analysis of the license) very good and short:
This lets you know why we have 300+ comments saying the same thing.
Oh, come off it!
If you went to some company and got a patent license, and then proceeded to sue that company for patent infringement on an unrelated patent, they would terminate your license. (That's what cross licensing prevents.) So FB is granting React users a patent license free. Why wouldn't they revoke the license if you were suing them? There's no difference from the normal state of affairs except the patent license is free. Now, if you are worried about FB infringing on your patents, it's wisest not to use React, but that's no different than licensing a patent from someone else.
I'm surprised at how many companies are willing to embrace frameworks that they believe come from Facebook and Google but are not truly backed by those companies. Aurelia has commercial backing and community contributors and a decent license.
You can. What's stopping you?