6 ms·
I don't want to distract from the main thrust of the article, which was that we should be decent to each other even with our criticism, but I think both his exa
by fusiongyro 10y ago
I don't want to distract from the main thrust of the article, which was that we should be decent to each other even with our criticism, but I think both his examples (Babel 6 and Angular 2) had something in common that lead to a lot more anxiety: they changed the essence of the software in a way that a major version bump is not enough to communicate.
I'm speaking especially of Angular 2 here. It's essentially a completely different framework. You don't expect going from Postgres 8 to Postgres 9 that the underlying query language is going to be switched out for a different one. Regularly communicating with your users, as Angular and Babel did, only reaches the engaged part of the community. A lot of workaday programmers are not that deeply engaged. You're just moving their cheese, and it makes them mad.
A better approach is to spin off a new system and give it a new name. This is what happened with Express and Koa, and it gives you a way to gauge whether people actually want the change you're making or not. I predict Angular 1 is going to be the Windows XP of front end development: lingering on for much longer than anyone expects. Slow and principled change is not a common thing in Javascript-land but it is what legions of software engineers expect. A lot of front-end development, like it or not, is being done by full-stack engineers or other engineers who are not front-end developers exclusively. Asking your echo chamber if they like your ideas is not really a sufficient sounding process, especially if you're making a deep cut.
- thejameskyle 10y agoThe change in Babel 6 was this: $ npm install babel-cli $ babel src -d lib To this: $ npm install babel-cli babel-preset-es2015 $ echo '{ presets: ["es2015"] }' >> .babelrc $ babel src -d lib It really wasn't that big of a change. Also, we did give it a new name. It used to be 6to5, and we changed the name around the intention to make it more generic. Which Babel 6 was the culmination of. As for communicating with the community. Yeah, we can't address everyone at once or even reach them all. We could shove it in their face (and we do) and still a significant portion would still ignore us (and they do). There's not much we can do about that. But they shouldn't come to us and say that we never said anything about this, because yes we did. Also, the article I referenced about Angular 2 was not talking about the transition from Angular 1 to 2. It was talking about ng2 as its own thing, criticizing it's design more than anything (just in a really shitty way).
- davej 10y agoI think the main issue with the transition of Babel 5 -> Babel 6 was a cognitive one. A few CLI one-liners don't really address this. Babel was zero-config and now it's not. I now need to understand what presets and plugins do and how to order them to get desired results when transpiling. Ultimately, it was inevitable and I think it was a very good thing! I'm really happy that Babel 6 exists. But figuring out your Babel presets and plugins is undoubtedly another thing that we have to think about when we start a project. Similarly with JSLint/JSHint -> ESlint. Thank you for your great work, I use Babel daily and Flow sometimes (less often than I should).
- joshmanders 10y ago> But figuring out your Babel presets and plugins is undoubtedly another thing that we have to think about when we start a project. Similarly with JSLint/JSHint -> ESlint. There's ways around this. Tools people built to make this easier. I created a preset of my own for Babel, and now I use that for any new project, no figuring it out every time. I know what my preset has in it, and if I need anything new, I can put it in and all other projects have it now too. Same with ESLint, there's tools such as Standard (And the standard-engine if you don't want to use actually standard) where it IS drop in again.
- thejameskyle 10y agoAnything more than the two presets "es2015" and "react" (we never should have shipped "react" on by default, we just didn't have a pluggable parser before) required configuration in Babel 5. A regular complaint that we had was that the Babel <5 configuration was really annoying because it involved three separate whitelists/blacklists
- dham 10y agoJames, I reached out to Sebastian, on multiple occasions in January to apologize. Phabricator via the chat feature, Twitter(blocked), email, etc. I can't even remember all the mediums. So if you can pass it a long that would be cool. Sure, Sad state got a little personal, but I'm not too stubborn to admit when I'm wrong. I'm sorry it affected the team so much, obviously not my intention. Just tried to use hyperbole to bust the Javascript echo chamber. I used Babel since the beginning when it was 6to5, and seeing the Babel 6 change was rough to say the least, and I made it personal when I shouldn't have. It's just software in the end.
- ralusek 10y agoI went to the Angular 2 docs and was thinking "this is nothing like Angular 1, looks like a completely different framework." Then I read from them "this is nothing like Angular 1, this is a completely different framework." Should they have gone with a different name? Probably. But my guess is that they kept it for 2 reasons. The first is the name recognition. The second, more important one, is that they're letting us know that development on Angular 1 is winding down and this is the place where their new resources are moving to.
- joshuacc 10y agoThat and they also have an officially supported migration path from Angular 1 called ngUpgrade which allows Angular 1 & 2 components to communicate with each other so you don't have to do a big bang rewrite.
- tracker1 10y agoimho they should have bumped to 3 at release to avoid old articles referencing outdated apis as ng2 had a lot of breaking changes along the way..
- ajeet_dhaliwal 10y agoA better approach is to spin off a new system and give it a new name Great point. I think some developers or teams feel compelled to update the latest even if they are happy with what they have because using an older version number gives the appearance of being behind the standards and practices. In a case where changes take place to the extent that it makes the previous framework difficult to recognize or breaks compatibility in a big way, this pressure would ease if the new version just had a completely different product name, as in a way that's what it is anyway.
- Davertron 10y agoRich Hickey just did a great talk about this sort of thing at Clojure Conj: https://www.youtube.com/watch?v=oyLBGkS5ICk https://www.youtube.com/watch?v=oyLBGkS5ICk
- choward 10y agoI agree mainly for googleability. It's really annoying searching for Angular 1 stuff and getting Angular 2 results and vice-versa.
- algesten 10y agoRemember this behaviour is encouraged by the deprecation warning notices of npm. I want my project to compile cleanly, but without me changing anything, from one day to the next, I may face a bunch of warnings because some maintainer somewhere decided they have a fresher version (lodash, pug/jade, node-uuid etc I'm looking at you).
- joshmanders 10y agoChange your npm log info to just errors. Warnings don't mean your build broke, just that the version of a dep you installed is no longer supported and if you want bug fixes to upgrade.
- jdd 10y ago:clap:
- alistproducer2 10y agoI said the same thing when they first previewed Angular2: call it something else. everyone would still know it comes from the Angular team and it wouldn't have pissed so many people off.
- yesimahuman 10y agoI disagree that Angular 2 is a completely different framework. Rather, it's like Angular 1 re-imagined for the ES6+ world. Many of the concepts are the same, like data binding, "scope," and Dependency Injection. The big change is moving to new syntax and a new foundation on object-oriented concepts. The framework had to adapt and shed some of its custom solutions to what are now available standard in the language.
- deleted 10y ago[deleted]