16 ms·
Yahoo Mail moving to React
- jameswragg 12y agoHere's the associated Yahoo Engineering blog post that goes with the slides. http://yahooeng.tumblr.com/post/101682875656/evolving-yahoo-mail http://yahooeng.tumblr.com/post/101682875656/evolving-yahoo-...
- adamors 12y agoConsidering how awful Yahoo Mail has become, I guess they're just throwing things at the wall and seeing what sticks.
- bitL 12y agoI find it funny as Yahoo has Netty which is far better performing and more capable than node.js...
- deleted 12y ago[deleted]
- ownedthx 12y agoMoving to node can be in part a decision to attract fresh talent, as well as keep the current team interested and motivated.
- glifchits 12y agoYahoo's React/Flux projects mentioned at the end are intriguing. I have tried implementing Flux architecture in an app and found it really tedious and boilerplatey. I'm still looking out for well-implemented Flux dispatcher libraries. https://github.com/yahoo/dispatchr https://github.com/yahoo/dispatchr https://github.com/yahoo/routr https://github.com/yahoo/routr https://github.com/yahoo/flux-router-component https://github.com/yahoo/flux-router-component
- ericclemmons 12y agoMe too. Reflux solved it for me and simplified things considerably! https://github.com/spoike/refluxjs https://github.com/spoike/refluxjs
- andyl 12y agoCheck out Reflux - https://github.com/spoike/refluxjs https://github.com/spoike/refluxjs - a slimmed down Flux implementation. Reflux is a great solution when you need to coordinate between multiple components.
- redonkulus 12y agoAlso, don't forget https://github.com/yahoo/flux-examples https://github.com/yahoo/flux-examples which ties all of these together.
- hoffer 12y agoI'd also like to throw in a vote for Reflux. https://github.com/spoike/refluxjs https://github.com/spoike/refluxjs
- untilHellbanned 12y agoI can't make arguments about Node's technical abilities, but I like that big companies are throwing more of their weight behind Javascript. I think Javascript is fun and easy to use. That's good enough for me. That it helps preserve balance with iOS and Android in the "software eating the world" conversation, is a bonus.
- dingdingdang 12y agoNode is a weird choice for Yahoo and Netflix: at least it might see the base Node package being improved significantly which is always nice :)
- fideloper 12y agoThe exciting part of this for me would be around improvements in Yahoo - removing old cruft code. There's lot of strangeness and/or flat out errors I run into on Yahoo regularly. Any improvement in that regard could be a big benefit. On the topic of JavaScript - I love Node as a glue. For larger applications - I just don't know how to structure (architect) a large application on a language like JS. Maybe that's just my ignorance.
- woah 12y agoWrite modules.
- edwinnathaniel 12y agoThat's like saying write classes and methods. Not enough.
- woah 12y agoYea, I'm not saying it's a miracle cure, but in general I have found the following to be useful: 1) Break any functionality possible into a separate npm module - not just a separate file with module.exports. Keep the npm module small and break it up further if it gets too big. 2) This module will be small enough that it is trivial to debug, refactor, test, and document. If it gets to a size where these tasks are hard for any reason and you wish for strong typing or something, the module is too big. 3) Please make sure that you do test and document the module. This will make your team way faster in the future.
- spion 12y agoI don't know, I kinda wish for strong typing even in smaller modules. https://github.com/doxout/promise-observer https://github.com/doxout/promise-observer and its statically verified documentation as well (therefore never goes out of date)
- wildpeaks 12y agoYahoo also had slides about Isomorphic Flux / Dispatchr two weeks ago if you want more infos on how they're using React: https://speakerdeck.com/mridgway/isomorphic-flux https://speakerdeck.com/mridgway/isomorphic-flux
- bsimpson 12y agoI was hoping to see a conversation around the points addressed in the slides (e.g. how to handle async data in Flux). Instead, it's a bunch of neckbeards whining about people using Node.
- aikah 12y agothe slides barely speak about Nodejs.It's much more about React than Nodejs.
- skeletonjelly 12y agoWhat's with the neckbeard shaming?! But seriously you're on HN and you're upset about people arguing/discussing a web technology? I don't even see one mention of "m'lady"
- cageface 12y agoI've been a Javascript and Node skeptic for years now but I think the tide is finally turning. So much time and energy has been poured into making JS better that it's finally starting to pay off. Javascript with all the ES6 enhancements is really not a bad language. The runtime performance is already very good and continually getting better. Tools like Typescript and Flow make dealing with larger code bases much easier. I don't think the other "scripting" languages like Ruby, Python, and PHP stand much of a chance against it in the longer term. They just don't have the resources to compete.
- empthought 12y agoI don't see why Ruby, Python or PHP can't compete, if Dart, TypeScript, Coffeescript, JSX, Elm, purescript, ClojureScript, etc. can all still be things.
- remon 12y agoI think in this instance JavaScript has to compete with Java, C#, go, erlang, etc. rather than the other "scripting" languages. I don't think many would argue JavaScript isn't comfortably #1 within that domain.
- arms 12y agoI'm genuinely curious why you think JavaScript is comfortably #1 within the domain of Python, Ruby and PHP. I've been writing (client side) JavaScript for a very long time, and I generally enjoy it, but I don't see myself abandoning Python on the server side for JavaScript anytime soon. (edited for clarification)
- jbergens 12y agoBut is that because you like Python, have a large code base that takes time to convert, is missing some tools, don't think javascript is mature enough or something else? I use C# myself and would not like to convert our whole app to js but I could be ok with Dart or TypeScript instead (or Go but that is not a scripting language).
- 12y ago
- callahad 12y agoSlide 11: Even Yahoo's Engineering Manager for Mail crops the ads out their own product screenshots. :(
- talmand 12y agoYou crop them out because, why give them free advertising?
- imanolov 12y agoYahoo Mail Plus doesn't have ads. All Yahoo employees use Yahoo Mail Plus.
- redonkulus 12y agoThat's not true. We get the ads too :)
- indeyets 12y agowell… the advertisers didn't pay to be included in presentation ;)
- dyeje 12y agoIt's funny that this showed up on the front page, because yesterday I logged into an old Yahoo email account for the first time in a few years and was absolutely astounded at how awful the UI was.
- debacle 12y agoYou can create an awful UI with any technology.
- owenversteeg 12y agoThe UI has almost literally nothing to do with the backend technologies.
- remon 12y agoWhat an odd trend. First Netflix moves part of their infrastructure to Node (https://news.ycombinator.com/item?id=8631022 https://news.ycombinator.com/item?id=8631022) and now Yahoo is doing something similar. Node.js is great but I don't think huge enterprise systems for some of the largest brands in the world are necessarily the best fit. I wish they'd provide some insights on why they're making that particular move.
- loxs 12y agoYep, node.js is the new PHP. Not by how it works, but by "shit everyone uses". Now, I won't try to convince anyone that it's crap (while I do believe it is), but it's the modern crap technology. Welcome to 1998, we are all "modern".
- twerquie 12y agoCare to back up any of your assertions? If your main complaint is popularity, your argument comes off as elitist.
- general_failure 12y agoWhat framework would you suggest server side?
- remon 12y agoI would argue the discussion is less about which framework and more about the suitability of the language. It's a debate worth having but I struggle to think of good arguments to move infrastructure of this sort of scope to JavaScript over the more "typical" options (Java/Scala, .NET, Python, go, erlang, etc.). JavaScript obviously has a place in web application development, I'm just not convinced that place is on servers in the vast majority of cases.
- mhd 12y agoBut it's still going to be fake desktop app, right? It seems Google is the only one to buck this trend.
- vamur 12y agoI wonder if the move is the reason Yahoo Mail has become even slower than before.
- scholia 12y agoEvery time I use Yahoo email in a browser, which isn't often, it's gotten worse. I suspect there's more to it than that...
- __mrwhite__ 12y agoWould be interesting to see some performance benchmarks in comparison to previous iterations.
- colinramsay 12y agoYahoo seems to be championing React more than Facebook! With the flux-router-component they are trying to solve something that FB hasn't really addressed and it shows that they're actively trying to share the solutions to practical problems people come across when working with Flux.
- mygreetings 12y agoLittle bit off topic but is there anyone like me in community having a problem with liking javascript? I have worked with javascript for years but it was always for DOM manipulation. When it comes to building an app with javascript, i feel like it is too fragile to depend on. Anyone can help me to get rid of this feeling?
- __mrwhite__ 12y agoAny particular reason why you feel like server-side JavaScript feels fragile? Also if by DOM manipulation you mean libraries like jQuery, have you tried more declarative approaches found in frameworks like Angular and React?
- loxs 12y agoFew reasons: 1. Cooperative multitasking. Really? In 2014? Hello? 2. Weakest of weak typing. undefined is not a function? Anyone? 3. Everyone can override everything. 4. Conventions, that's the only way you can build software in JS. Anyone know of a person who doesn't break conventions? Having programmed in something like Erlang, which IMHO is the sanest technology available today for doing web, JS feels horrible.
- throwawayaway 12y agoI struggled to find anything I liked about javascript. Other than ease of deployment.
- mhd 12y agoFor enterprise companies the ability to move programmers around from frontend to backend (or demand that they're doing both at the same time) is probably a benefit. Not a good idea, but that's rarely a hindrance for both enterprisey and startup "human resources" management. Reminds me a bit of how we treated torchbearers and henchmen in D&D...
- kyllo 12y ago
- peterwwillis 12y agoWelp, time to find a more stable/sane mail host.
- dschiptsov 12y agoWhy on Earth people who aren't merely enthusiasts of "cool async JavaScript with V8" or those who began as a webdevs and knows nothing better than JS and PHP, could choose a single-threaded solution, which blocks the whole app if a single function blocks, and forces programmers to write spaghetti wrappers around asynchronous call-back hells in a non-functional but GC'ed language? I am really too stupid to get it. "Single language for a whole stack" is a pretty stupid Java-sque argument, a naive assumption that one single language is good for all kinds of tasks.
- cmicali 12y agoOne argument for one language everywhere is the benefits you get from an "isomorphic" app (http://nerds.airbnb.com/isomorphic-javascript-future-web-apps/ http://nerds.airbnb.com/isomorphic-javascript-future-web-app...) Sharing code between client and server lets reduce duplication and use the same templating/rendering on both sides. Fits very well with complex single-page apps. That said, I'm not sure there are that many apps that really need this vs. the tradeoffs you have to make going all-in on JS and the complexity this can bring.
- JetSpiegel 12y agoCorrect use of the scare quotes there.
- nwienert 12y agoWhat complexity does it bring? I'm writing apps from the ground up using React and I've found the isomorphic bits take <10 lines of code as long as you design for it from the start.
- codygman 12y agoThanks for putting isomorphic in quotes.
- magicalist 12y agoI don't know why it bothers me so much, but it really does. What happened to just saying that the same code is run on the client and server? Avoids the jargon, doesn't make math nerds mad, isn't that much longer, and says exactly what you mean.
- serve_yay 12y ago"The age of large platform libraries is over." Boy oh boy do I wish that were the case.
- mncolinlee 12y agoI see a ton of discussion about the NodeJS decision and almost nothing about the more interesting industry paradigm shift to reactive programming and using functional-style programming in an imperative language. They're joining the likes of Facebook, Netflix, Square, Microsoft, Instagram, Khan Academy, SoundCloud, Trello, New York Times, and others in adopting reactive extensions.
- klochner 12y agoYahoo is moving to the React javascript library. The "react" in React js does not refer to reactive programming in the "Reactive Manifesto"[1] sense. [1] http://www.reactivemanifesto.org/
- delluminatus 12y agoThey are also moving to a Flux-inspired application structure which is supposedly very similar to functional reactive programming, which is what the OP was referencing.
- mncolinlee 12y agoGood call. It seems a lot of the reactive examples I saw with React involved either RxJS or BaconJS. It's confusing naming for sure!
- ChrisAntaki 12y agoYour comment reminded me of this blog from Netflix: http://techblog.netflix.com/2013/01/reactive-programming-at-netflix.html http://techblog.netflix.com/2013/01/reactive-programming-at-...
- findjashua 12y ago"paradigm shift to reactive programming" What exactly do you mean by reactive here? As one of the other posters said, react's 're-render the virtual dom' concept doesn't have any direct relationship with the reactive manifesto, though flux might be a better candidate.
- tunesmith 12y agoJust curious, what are the reasons for 'isomorphic' apps these days? SEO used to be the big reason, but since google and bing can now render most javascript, and since you can use pushState for SEO, that's not really a sufficient reason anymore.
- woah 12y agoSpeed on first load I'm guessing? Compatability with screen readers and readability type things? There are many reasons, and it is simply conceptually better.
- svs 12y agoSince when has what Yahoo Mail does become relevant again?
- z3t4 12y agoWith the Opera browser it takes over a second to load the GUI whenever I click something, and the overall design looks like it has been made by someone making his/her first homepage. No wonder they decided to use something that encourage in-line HTML where code and design get entangled like a pile of spaghetti - making it almost impossible to maintain. In the last years JavaScript has exploded with new frameworks and "compile to JS languages". But I have yet seen anything close to usable. Maybe it's because I've become "speed blind" after coding JS for over 15 years. I do not see all the problems ppl see in JavaScript, until I look at code written by beginners that seem to use every framework out there, and over-complicate the code, and naming everything with one letter variables and the name of their favorite pizzas.
- ComNik 12y agoIs finding Clojure people that hard (honest question)? The Clojure + ClojureScript approach has many more batteries included. You get all the benefits of reusing the codebase on both sides of the fence while the language is solving the "Transactional Store", efficient dirty checks, nice server-side concurrency primitives and many unrelated problems for you.
- arms 12y agoAs someone that's recently started working with Clojure (and soon ClojureScript), I wonder the same thing. My first guess is that people are unfortunately and unjustly turned off by its Lisp pedigree. I've been using and enjoying React and am excited to learn more about Reagent. It seems like Clojure + Reagent will make development quicker and more enjoyable.
- notastartup 12y agoDo you guys think that we are now moving into a new trend on the client side now? React + Flux vs. Angularjs, Backbone.js? It seems that every job, even backend positions, require Angularjs or Backbone.js knowledge. Having largely ignored the two and hoping they would die, I am ready to learn React + Flux to accelerate to this cause.
- DigitalSea 12y agoI am surprised at all of the hate that Yahoo! is receiving for this, in the comments section of Hacker News (not surprisingly). This is great in my opinion, I think React.js is definitely the future of SPA's especially when combined with the Flux architecture. As someone who has been using React on a daily basis for the last few months, I have a severe man-crush on it. It just makes so much sense, combined with something like Browserify and working with a isomorphic workflow (shared codebase front and back-end). And those who say Yahoo! are just jumping onboard the React hype train or Node.js hype train, you have it all wrong. Yahoo! have been using Node.js for the last few years, in-fact early 2010 is around the time Yahoo! engineers started playing with Node.js, long before it was considered mainstream cool or being used really in any high-profile scale environment. It is rare that a company the size of Yahoo! truly ever embraces moving at this kind of pace and embracing new open source technologies, languages, frameworks and libraries. Now that Yahoo! have openly declared their use of React on such a large scale, expect it to explode even more so in 2015. For an open source project that is a little over a year old, React is getting the kind of user-base and adoption that most open source projects can only dream of having. This news excites me. I honestly cannot wait to see how it all turns out. PS. I have noticed a few people in the comments section getting confused. Yahoo! Mail is NOT using React just yet. The current mail product is still using YUI and plain HTML/Javascript. If you read through, it mentions 2015...
- Sawbones 12y agoI really need someone to explain to me what they love so much about React.js. I tried it out and I absolutely hated the way components didn't understand their relation with other components. I had to chain a callback all the way down to my ListItem Component just so it could set which item was selected in the component and let other components know that. If you ever end up adding another parent component you have to rewrite all those top level components to pass that information down.
- rakoo 12y agoThat's because you used React alone, which works as a top-down view engine. If you want to modify something in the view, you have to go back to the top and modify the model. Instead of doing it manually, Facebook has created the Flux architecture to help you scale this process efficiently.
- somefoobar 12y agoAnyone have more insight on why TJ Holowaychuk left Node? https://medium.com/code-adventures/farewell-node-js-4ba9e7f3e52b https://medium.com/code-adventures/farewell-node-js-4ba9e7f3... Anyone experience the same?
- spion 12y agoI think that his main issue is/was that node isn't robust enough. I agree, but personally think that promises largely solve that issue. Streams are still a bit icky though. He also says that node isn't moving fast anymore, which is unfortunately true. The node core team was stuck trying to release 0.12 for quite a while because of some significant changes to internals (V8, AsyncListener). Once 0.12 is out, things should be much easier. On the plus side, the ecosystem is still moving at the same speed which is pretty great, and JS gets new advanced tooling every day: typescript, flow, 5 (!) es6 compilers...
- matobago 12y agoReact is not even stable yet...