> The guy that actually originally came up with idea for React, Jordan Walke, came from the ads team. He was like, "making a change on this product is terrifying, like potentially lose a day of revenue because you’ve missed a semicolon or something." He had felt the ads pain and then he convinced them after building this thing on nights and weekends to work on it full time for a little while. As he was working on this framework full time he built a type ahead component and had rolled that out I think in maybe a little News Feed unit but never a full application. Instagram was like the first full application...
Given how big of a part React plays in so many stacks and applications, React's origin sort of ironic considering one of the most famous criticisms of today's Silicon Valley -- "“The best minds of my generation are thinking about how to make people click ads" -- also comes from a former member of Facebook's Ads team, Jeff Hammerbacher.
I was just reflecting on this. If you agree that React is a net positive for software development (efficiency, creating complicated UIs faster), then you can make the case that Ads on Facebook have indirectly helped a lot of engineers and thus companies.
They had a problem, a piece of technology was created to solve it, and then released to the world, and now many others are able to solve problems using the same technology. Seems like this is exactly how open source should work (license issues aside).
The fact that this all comes back to Ads highlights the importance of Ads in the software development ecosystem IMO.
Worth noting that Google and Facebook have contributed a ton of open source to the world and they’re both built on ads. Amazon and Apple on the other hand do far less open sourcing and their businesses don’t rely on ads. Not saying there’s causation, but does make you wonder why that’s the case.
I mean, software companies will spin ads any way they can to get engineers interested. That’s their prerogative. It doesn’t mean any of it is true—the world is 100% worse off due to ads, and no amount of smooth scrolling animations is going to change that.
It's sort of like the Manhattan Project writ small. Back then we roasted a few hundred thousand Japanese people, and we may still extinguish life on our planet, but we ended up with some pretty sweet tech. Now we're cynically monitoring and manipulating billions of people, but we may end up with easier ways to create complicated web pages.
Why is this comment being downvoted? Can't anyone else see the poor taste in words? I'm not sure it deserves to be flagged but definitely worth calling out.
Yes, it is poor taste, unnecessarily insulting, and assumes 'we' == 'US'. "Worth calling out"? Nope. That puts unnecessary emphasis on it, and creates unnecessary discussion. Either the comment should be upvoted or downvoted. Readers are mature enough to decide that. I tend to downvote any complaints or discussion about moderation (including this one by myself if I could) because it is boring/offtopic read. YMMV.
Not gonna downvote you. I am from the US, and am deeply ambivalent about the nuclear bombing of Hiroshima and Nagasaki. It may have ended the war sooner; it definitely killed hundreds of thousands of Japanese people. Not many of the European Allies said much at the time. That's war.
In my day work we're using Angular 2 (Angular 4 technically), and while I prefer React it's not necessarily bad, just not as good in my opinion. That being said, backward compatibility is crazy non-existant. I had a library that required me to update to the latest version, would have been a minor bump. It wouldn't work with my current version, but then I upgraded and other libraries started breaking because they wouldn't work with anything higher than their current version. Turns out some services got changed between those two minor versions.
The main reason I've heard for using Angular 2 at my work is that it's made by Google, but it's not like they use it themselves. I don't see how that's a good reason. On the other hand React is being used in production right now by some of the biggest companies of the world.
The appeal to authority is a logical fallacy and isn't a real reason to use something. I use react because I like it and enjoy it, sure I have reasons behind my enjoyment, like modularity, cohesion, proactive rendering, expressive states, but mainly it feels good because there isn't as much mental translating: what the code looks like vs what the page will look like.
I don't think it necessarily is. I know you're saying this because a language or library from a big company is likely to be dropped, but occasionally one will last a long time like Sun's Java. Just because it originates from an individual like PHP did doesn't mean for sure that it will continue to exist a long time and you'll be able to hire people.
Their positions are not mutually exclusive because their contexts/problems they are solving are different. So they are not saying A and !A. They are saying A and B
Having used both, they both have their strengths and weaknesses - I know both Angular and React is being used by my employer, a top 5 tech BigCo that is not Google (although I have heard there is a little React in Google floating around currently).
I’m not sure why this myth about Google not using Angular keeps propagating - I have heard it powers over 70% of Google’s frontends straight from multiple members of the Angular team. The one time AngularJS had a broken release, Google halted to a standstill.
Pete Hunt did make a great point about React avoiding the Angular 2 fiasco, although for Angular, I feel they were caught between a rock and a hard place - it probably would not be nearly as strong now if it weren’t for that choice.
I have mostly enjoyed my time with Angular 2+, and I have mostly enjoyed my time with React. I think it’s worth avoiding being quick to judge on these things, especially when the differences aren’t currently extraordinarily meaningful for most cases. When my current team was evaluating choices, we settled on React for team developer ergonomics. For some teams, that may not be React. A couple years down the line, it may be something else.
Actually it seems that Google uses both Angular 1.x, 2.x and Polymer. However it seems their newer projects use Polymer, Youtube, Google Allo, Google Music. CodeLabs and others seem to go Polymer route.
Google abandons open source projects all the time, I don't see how that is a strong argument. Facebook actually uses React, IMO Angular 2+ was built for the sole purpose of consulting, thus more breaking changes and magic DSL.
> The main reason I've heard for using Angular 2 at my work is that it's made by Google, but it's not like they use it themselves.
A lot of Google’s bigger products like gmail and maps predate Angular, though there are some products like the Google Cloud Platform Console that use it (https://console.cloud.google.com).
More interestingly that is simply a maturity issue. React told people the official API and people still used hidden features as it was easy and clever. Thankfully Facebook did the right thing, kept the API sacred and refactored all the hidden APIs breaking the world.
People got bloody noses and red faced and the React ecosystem is a better place for it.
As an aside the “it’s just Angular” thing doesn’t work for me when I Google for things...results come up with a mix of AngularJS and Angular2+ results. Searching for “angular2” rather than “angular” seems to work a lot better.
That's true. Paired with "go", can we dwell on the irony that Google has come up with the worst names for programming projects when it comes to searching for them?
Google uses Angular 2 extensively, just a lot of it is internal apps. From what I heard, there was a big push to typescript and angular 1.6 before switching to Angular. But Google fully uses Angular internally.
Lots of large companies are using Angular in production. From my experience, lots of smaller startups and a couple big companies are using react, but lots of enterprise apps and many former anuglar 1.x apps are now Angular 2+. It's fully production battle tested, even though we don't see it as much here.
"and that’s why you don’t get an Angular 2 scenario with React because the people paying the price are the people actually making the breaking changes"
This is also the case with Ember, built by contributors from corporations actually using Ember in production.
It's not just Angular, many libraries seem to be written by people without a significant investment in their own library. It might be to promote their own education material, their personal brand, or just for fun. That's fine of course, but the projects will probably not be as stable.
React has made me a happier developer and affords me a lifestyle to take care of my family very well. So I'm very thankful for everything that's taken place to bring React to where it is.
I got the same feeling many many years ago when I made the switch from PHP > Rails.
Edit: Why is this being down voted? shrug Must be 2 sad Ember devs... Badum PSSH
Absolutely loved doing this! Thanks for being such a great sport. So many topics we could have spent hours talking about. The whole “what would Facebook have looked like, had it been built on the cloud” segment deserves its own episode :)
thank you for taking the time to share your experience! really important to get these perspectives especially for people who came into webdev at a later time like myself
This is a really long transcript but I found it very interesting. If you are just coming to the comments I encourage to read the whole thing to gain more insight as to why it's not just a great idea but also the people behind it that is necessary to make something become as popular as React.
To be clear, I didn't mean that I want React-the-library baked into every platform. I do think that React-the-mental-model is superior to, say, Cocoa-the-mental-model, and by baking this model into the underlying layers of the stack we'd stand to see a lot of performance gains.
Surely you're really just talking about component-oriented design, which basically every framework has now converged on - React, Angular, Ember, Vue, Riot, Polymer, etc.
I'm pretty sure it's this + 1-way data binding + data as the driver of everything + javascript as the _only_ language to describe the ui. Because those elements make for a simpler way to build UIs and I totally agree with this point of view
These are all DOM-based UI frameworks. Perhaps it's because that's where all the action is at but I wouldn't be surprised if it were driven, for a large part, by the underlying platform.
That's super interesting. I dont think React is the end state; it has a couple warts that are solved in research communities.
TLDR React is not efficient enough, the performance requirements of next-gen apps of 2020s is going to break React because rendering is not incremental. These warts are basically places where React departs from pure functional programming to achieve ease of use.
1) Fundamental performance problem in render-tree-pruning (it is not truly reactive, it does more work than necessary). This is not an issue today except in the most sophisticated apps, but in apps of the 2020s it's going to be a huge problem. My startup http://hyperfiddle.net/ spends a great deal of energy trying to make React faster, it all boils down to forceUpdate which breaks the "functional programming" philosophy and makes the programming model significantly worse.
2) The solution to (1) is a reactive, spreadsheet-like programming model that generalizes to more than just the View-as-a-function, but also to the rest of the functions. React's solution injects fat "Component" instances everywhere in the view; its not actually just functions, so it breaks for the other expensive computations in the app, which will also need to be optimized in the 2020s.
https://github.com/slamdata/purescript-halogen is the best shot i know of at solving all this; it may be 5 more years yet until this is simplified enough to become mainstream, but all-in-all the ever increasing complexity of apps means truly efficient rendering is inevitable, and React is not that.
What makes you think 2020 apps are going to be significantly different from 2018 apps? Main difference I can think of is VR and WebAssembly, but the former is not likely to completely change the majority of websites in two years, and the latter is not restrained by React anyway.
Why is that scary? React's paradigm has changed how UIs are built in many different platforms. And you don't have to use React directly to enjoy its paradigm since other libraries and technologies have appeared that follow the same approach.
Winapi and windows forms in .net. message loop for UI programming is a very very old pattern. It was just reinvented for web and JS. I don't know if people that created react actually ever used Windows message loop.
XAML is a template, it hooks into a controller via bindings. You could compare it to Angular maybe.
In React a view is a function of state:
const Header = ({ color, children }) => <h1 style={{ color }}>{children}</h1>
// Gets transpiled into:
const Header = ({ color, children }) => createElement('h1', { style: { color } }, children)
<Header color="red">hello</Header>
A large part of my career was about XAML/WPF/SL. I know it took me a year or more to really understand it deeply, being able to extend and do everything i wanted. I came to the same state 60 minutes into React. The pattern behind it does make many things easier. And that is an understatement. I believe that's also the main reason Microsoft itself is betting on React for cross platform and native apps as well as extension eco systems:
> The guy that actually originally came up with idea for React, Jordan Walke, came from the ads team. He was like, "making a change on this product is terrifying, like potentially lose a day of revenue because you’ve missed a semicolon or something." He had felt the ads pain and then he convinced them after building this thing on nights and weekends to work on it full time for a little while. As he was working on this framework full time he built a type ahead component and had rolled that out I think in maybe a little News Feed unit but never a full application. Instagram was like the first full application...
Given how big of a part React plays in so many stacks and applications, React's origin sort of ironic considering one of the most famous criticisms of today's Silicon Valley -- "“The best minds of my generation are thinking about how to make people click ads" -- also comes from a former member of Facebook's Ads team, Jeff Hammerbacher.
https://quoteinvestigator.com/2017/06/12/click/
I was just reflecting on this. If you agree that React is a net positive for software development (efficiency, creating complicated UIs faster), then you can make the case that Ads on Facebook have indirectly helped a lot of engineers and thus companies.
They had a problem, a piece of technology was created to solve it, and then released to the world, and now many others are able to solve problems using the same technology. Seems like this is exactly how open source should work (license issues aside).
The fact that this all comes back to Ads highlights the importance of Ads in the software development ecosystem IMO.
Worth noting that Google and Facebook have contributed a ton of open source to the world and they’re both built on ads. Amazon and Apple on the other hand do far less open sourcing and their businesses don’t rely on ads. Not saying there’s causation, but does make you wonder why that’s the case.
I mean, software companies will spin ads any way they can to get engineers interested. That’s their prerogative. It doesn’t mean any of it is true—the world is 100% worse off due to ads, and no amount of smooth scrolling animations is going to change that.
> the world is 100% worse off due to ads
Do you have the source for that? Personally, most of the modern targeted ads I notice are a net gain for my life. Do you have a different experience?
It's sort of like the Manhattan Project writ small. Back then we roasted a few hundred thousand Japanese people, and we may still extinguish life on our planet, but we ended up with some pretty sweet tech. Now we're cynically monitoring and manipulating billions of people, but we may end up with easier ways to create complicated web pages.
> Back then we roasted a few hundred thousand Japanese people
Unbelievable. Flagged.
Why is this comment being downvoted? Can't anyone else see the poor taste in words? I'm not sure it deserves to be flagged but definitely worth calling out.
Yes, it is poor taste, unnecessarily insulting, and assumes 'we' == 'US'. "Worth calling out"? Nope. That puts unnecessary emphasis on it, and creates unnecessary discussion. Either the comment should be upvoted or downvoted. Readers are mature enough to decide that. I tend to downvote any complaints or discussion about moderation (including this one by myself if I could) because it is boring/offtopic read. YMMV.
Not gonna downvote you. I am from the US, and am deeply ambivalent about the nuclear bombing of Hiroshima and Nagasaki. It may have ended the war sooner; it definitely killed hundreds of thousands of Japanese people. Not many of the European Allies said much at the time. That's war.
In my day work we're using Angular 2 (Angular 4 technically), and while I prefer React it's not necessarily bad, just not as good in my opinion. That being said, backward compatibility is crazy non-existant. I had a library that required me to update to the latest version, would have been a minor bump. It wouldn't work with my current version, but then I upgraded and other libraries started breaking because they wouldn't work with anything higher than their current version. Turns out some services got changed between those two minor versions.
The main reason I've heard for using Angular 2 at my work is that it's made by Google, but it's not like they use it themselves. I don't see how that's a good reason. On the other hand React is being used in production right now by some of the biggest companies of the world.
"The main reason I've heard for using Angular 2 at my work is that it's made by Google"
I say I used React, because it's made by Facebook.
They say they use Angular, because it's made by Google.
Others say, they use Ember or Vue, because it ISN'T made by a single big corp.
In the end these reasons are often meaningless and don't have any effect on the users in their whole lifetime.
The appeal to authority is a logical fallacy and isn't a real reason to use something. I use react because I like it and enjoy it, sure I have reasons behind my enjoyment, like modularity, cohesion, proactive rendering, expressive states, but mainly it feels good because there isn't as much mental translating: what the code looks like vs what the page will look like.
It is a proxy for how likely the library will continue to exist, and how likely you can hire folks that know these libraries, in several years
I don't think it necessarily is. I know you're saying this because a language or library from a big company is likely to be dropped, but occasionally one will last a long time like Sun's Java. Just because it originates from an individual like PHP did doesn't mean for sure that it will continue to exist a long time and you'll be able to hire people.
I think you completely misinterpreted my comment
Except Google pulled a fast one with the Angular 1/2 transition. This is exactly why I'm not using Angular anymore.
Point is, people want the same (what you said) but have entirely different reasons why they would get it from their framework of choice.
Because their reasons are different, they are meaningless?
If one says A and someone else says !A they can't both be right.
Their positions are not mutually exclusive because their contexts/problems they are solving are different. So they are not saying A and !A. They are saying A and B
They can be, if both A and !A are valid choices under different scenarios or values.
Having used both, they both have their strengths and weaknesses - I know both Angular and React is being used by my employer, a top 5 tech BigCo that is not Google (although I have heard there is a little React in Google floating around currently).
I’m not sure why this myth about Google not using Angular keeps propagating - I have heard it powers over 70% of Google’s frontends straight from multiple members of the Angular team. The one time AngularJS had a broken release, Google halted to a standstill.
Pete Hunt did make a great point about React avoiding the Angular 2 fiasco, although for Angular, I feel they were caught between a rock and a hard place - it probably would not be nearly as strong now if it weren’t for that choice.
I have mostly enjoyed my time with Angular 2+, and I have mostly enjoyed my time with React. I think it’s worth avoiding being quick to judge on these things, especially when the differences aren’t currently extraordinarily meaningful for most cases. When my current team was evaluating choices, we settled on React for team developer ergonomics. For some teams, that may not be React. A couple years down the line, it may be something else.
Actually it seems that Google uses both Angular 1.x, 2.x and Polymer. However it seems their newer projects use Polymer, Youtube, Google Allo, Google Music. CodeLabs and others seem to go Polymer route.
Google abandons open source projects all the time, I don't see how that is a strong argument. Facebook actually uses React, IMO Angular 2+ was built for the sole purpose of consulting, thus more breaking changes and magic DSL.
> it's made by Google, but it's not like they use it themselves.
I work at Google (Cloud) but not on front end. All the front end SWEs I've talked to use Angular for their projects so we definitely do use it!
> The main reason I've heard for using Angular 2 at my work is that it's made by Google, but it's not like they use it themselves.
A lot of Google’s bigger products like gmail and maps predate Angular, though there are some products like the Google Cloud Platform Console that use it (https://console.cloud.google.com).
More interestingly that is simply a maturity issue. React told people the official API and people still used hidden features as it was easy and clever. Thankfully Facebook did the right thing, kept the API sacred and refactored all the hidden APIs breaking the world.
People got bloody noses and red faced and the React ecosystem is a better place for it.
> In my day work we're using Angular 2 (Angular 4 technically)
Angular 2+ is "Angular"; Angular 1.x is "AngularJS"
As an aside the “it’s just Angular” thing doesn’t work for me when I Google for things...results come up with a mix of AngularJS and Angular2+ results. Searching for “angular2” rather than “angular” seems to work a lot better.
That's true. Paired with "go", can we dwell on the irony that Google has come up with the worst names for programming projects when it comes to searching for them?
Google uses Angular 2 extensively, just a lot of it is internal apps. From what I heard, there was a big push to typescript and angular 1.6 before switching to Angular. But Google fully uses Angular internally.
Lots of large companies are using Angular in production. From my experience, lots of smaller startups and a couple big companies are using react, but lots of enterprise apps and many former anuglar 1.x apps are now Angular 2+. It's fully production battle tested, even though we don't see it as much here.
Angular 2 is no more or less battle tested than React.
"and that’s why you don’t get an Angular 2 scenario with React because the people paying the price are the people actually making the breaking changes"
Amen
This is also the case with Ember, built by contributors from corporations actually using Ember in production.
It's not just Angular, many libraries seem to be written by people without a significant investment in their own library. It might be to promote their own education material, their personal brand, or just for fun. That's fine of course, but the projects will probably not be as stable.
Angular is actually part of the Ads team at Google which is also it's biggest user, since AdsWords is written in Angular.
This is why you should eat your own dogfood, right?
This is why you should give a preference to projects where they eat their own dogfood.
That’s actually true of angular 2 as well, so the quote is just false. Angular 2’s dysfunction has little to do with dogfooding.
React has made me a happier developer and affords me a lifestyle to take care of my family very well. So I'm very thankful for everything that's taken place to bring React to where it is.
I got the same feeling many many years ago when I made the switch from PHP > Rails.
Edit: Why is this being down voted? shrug Must be 2 sad Ember devs... Badum PSSH
I think it's being down-voted because it sounds like a incontinence commercial.
lol, after a reread I concur.
Name checks out
FYI, "fart cannon" is a kind of automotive muffler.
https://www.youtube.com/watch?v=5gLX-P5oQUM
How did React do those things for you?
Hes implying that the market forces propped up a higher salary
This was a fun interview :)
Absolutely loved doing this! Thanks for being such a great sport. So many topics we could have spent hours talking about. The whole “what would Facebook have looked like, had it been built on the cloud” segment deserves its own episode :)
This was a great podcast! I would love a follow up episode where you get into more details on that and the other topics there weren't time for.
thank you for taking the time to share your experience! really important to get these perspectives especially for people who came into webdev at a later time like myself
This is a really long transcript but I found it very interesting. If you are just coming to the comments I encourage to read the whole thing to gain more insight as to why it's not just a great idea but also the people behind it that is necessary to make something become as popular as React.
Also, there is alot if interesting info regarding the 2 companies tech. stacks, deployment processes, and cultures.
It was super interesting to hear how React was moving from team to team internally before it was finally open sourced.
React is great but this:
"I’m waiting for the day when the only way that you build UI, the only way you can build UI is with the React paradigm."
is scary.
To be clear, I didn't mean that I want React-the-library baked into every platform. I do think that React-the-mental-model is superior to, say, Cocoa-the-mental-model, and by baking this model into the underlying layers of the stack we'd stand to see a lot of performance gains.
Just my 2 cents though.
Surely you're really just talking about component-oriented design, which basically every framework has now converged on - React, Angular, Ember, Vue, Riot, Polymer, etc.
I'm pretty sure it's this + 1-way data binding + data as the driver of everything + javascript as the _only_ language to describe the ui. Because those elements make for a simpler way to build UIs and I totally agree with this point of view
These are all DOM-based UI frameworks. Perhaps it's because that's where all the action is at but I wouldn't be surprised if it were driven, for a large part, by the underlying platform.
Most of those keep the html separate even many are tightly coupled.
True. fwiw, Google's new mobile UI framework Flutter uses the React paradigm.
That's super interesting. I dont think React is the end state; it has a couple warts that are solved in research communities.
TLDR React is not efficient enough, the performance requirements of next-gen apps of 2020s is going to break React because rendering is not incremental. These warts are basically places where React departs from pure functional programming to achieve ease of use.
1) Fundamental performance problem in render-tree-pruning (it is not truly reactive, it does more work than necessary). This is not an issue today except in the most sophisticated apps, but in apps of the 2020s it's going to be a huge problem. My startup http://hyperfiddle.net/ spends a great deal of energy trying to make React faster, it all boils down to forceUpdate which breaks the "functional programming" philosophy and makes the programming model significantly worse.
2) The solution to (1) is a reactive, spreadsheet-like programming model that generalizes to more than just the View-as-a-function, but also to the rest of the functions. React's solution injects fat "Component" instances everywhere in the view; its not actually just functions, so it breaks for the other expensive computations in the app, which will also need to be optimized in the 2020s.
https://github.com/slamdata/purescript-halogen is the best shot i know of at solving all this; it may be 5 more years yet until this is simplified enough to become mainstream, but all-in-all the ever increasing complexity of apps means truly efficient rendering is inevitable, and React is not that.
What makes you think 2020 apps are going to be significantly different from 2018 apps? Main difference I can think of is VR and WebAssembly, but the former is not likely to completely change the majority of websites in two years, and the latter is not restrained by React anyway.
"2020s" e.g. 2028
Apps are like moores law; every 1.5 years the sophistication doubles.
Does React with Mobx count as incremental? It only re-renders components when the data accessed by that component has changed.
That's "reactive"
Why is that scary? React's paradigm has changed how UIs are built in many different platforms. And you don't have to use React directly to enjoy its paradigm since other libraries and technologies have appeared that follow the same approach.
You haven't seen how paradigms change yet, have you
Your comment is unclear.
I would actually like to see React paradigm used more in native development.
Winapi and windows forms in .net. message loop for UI programming is a very very old pattern. It was just reinvented for web and JS. I don't know if people that created react actually ever used Windows message loop.
Not the loop. JSX way of declaring UI structure.
Do you mean like XAML and WPF ? https://msdn.microsoft.com/pl-pl/library/ms752059(v=vs.110)....
XAML is a template, it hooks into a controller via bindings. You could compare it to Angular maybe.
In React a view is a function of state:
A large part of my career was about XAML/WPF/SL. I know it took me a year or more to really understand it deeply, being able to extend and do everything i wanted. I came to the same state 60 minutes into React. The pattern behind it does make many things easier. And that is an understatement. I believe that's also the main reason Microsoft itself is betting on React for cross platform and native apps as well as extension eco systems:https://github.com/Microsoft/react-native-windows
https://github.com/Microsoft/reactxp
https://developer.microsoft.com/en-us/fabric
I suppose so. But i do like reactjs declarative style rather code behind. Something which Flutter does as well.
are you referring to his comment about Electron? because React Native is a thing
More naive to assume that React is the end game for UI design.
ReactJS is the devil.
Why news so much about react ? This is so unnecessary, there is multiple ui libraries with better licensing.
better licensing than MIT?