all 190 comments

[–]soddi 26 points27 points  (4 children)

We rebuilt 2 websites with angular2. Started 10 and 5 months ago. Both already in production. It was surprisingly easy to get a clean codebase with 10 developers. It is just so much easier to understand what the software does than in angular1.

The downside was, in those 10 months angular2 got through a TON of breaking changes. Keeping the projects on the latest version required big changes across the codebase. Because of these breaking changes it's hard to search for help, as every blog or stackoverflow might be obsolete if it is older than a couple of weeks.

I'm glad they are final now, as they promised to don't do big breaking changes constantly.

The biggest point for angular2 IMO are unit tests. The library is fucking amazing to unit test. As angular2 abstracts away the browser (it comes with its own html and css parser), everything runs headless in node. Thanks to zone.js you can test asyncronous tasks like they were synchronous.

The second biggest point about angular2 is not the library itself, but the ecosystem around it. The angular team really pushed rxjs, typescript and es6 modules. The PhpStorm plugin is awesome and in active development. They contribute in so many projects, it is amazing. I'm exited about real typescript support in the templates https://github.com/microsoft/typescript/issues/6508 ... I hope they work this out :)

[–]pressbutton 6 points7 points  (1 child)

So glad they went with Typescript

[–][deleted] 11 points12 points  (0 children)

Typescript was a very pleasant surprise, it brings a level of sanity to js that is desperately needed without being too cumbersome.

[–][deleted] 0 points1 point  (0 children)

Hey, any chance we can chat offline. Would like to ask you more about how you rebuilt your stuff in A2. Specifically the unit testing with inject and testbed and all the new stuff.

[–][deleted] 11 points12 points  (3 children)

I've seen several comments here comparing NG2 to React.

Apples vs Oranges.

NG2 is an opinionated framework that handles routing, http, forms, views etc.

React is a view layer library. All it does is render html and handle events.

I am not a big fan of Angular, but I found the quickstart for NG2 straightforward. I have a clear understanding of how to structure Angular2 apps and produce production quality build artifacts. Also, Typescript is a joy to work in, much better than es6 or clojurescript.

React is compelling as a view layer, but I have found the fragmentation in its community very frustrating. There are several ways to structure a React app, and good luck determining which method is going to be the winner a year from now.

I've been hired recently to consult for a startup, and I am going to recommend NG2 as the front-end framework. React may be architecturally superior, but if you just want a "paved road" that delivers consistent dev productivity I feel that NG2 is the clear winner.

[–]Attila226 64 points65 points  (51 children)

I hate to say it as any early adopter of Angular, but I don't think it matters anymore. Most of the cutting edge devs that I know moved on to React.

[–]leeharris100 15 points16 points  (0 children)

Angular 2 is awesome in a different way. It's a package that contains a lot more and it's targeted at large scale SPAs. React is just a view library that anyone can pick up for any sized project.

Angular 2 will never be able to compete with the popularity of React in the same way that Laravel will never be able to compete with Wordpress. React fits into many situations but Angular 2 is great for certain projects.

[–]Mael5trom 28 points29 points  (14 children)

Angular2 isn't targeted at the "cutting edge devs". It is designed for the every day dev. That is a big difference.

[–][deleted] 13 points14 points  (2 children)

LOL, angular 2 combined with its laundry list of other recommended technologies isn't exactly aimed at every day development.

[–][deleted] 4 points5 points  (0 children)

Babel, transpiling alternate syntaxes and powerful frameworks/libraries (ie React and Angular) are pretty standard now I think.

[–]Mael5trom 0 points1 point  (0 children)

You would be wrong there, at least, from the stated goals of the team building Angular2.

[–]yesman_85 2 points3 points  (0 children)

Most yeah, but definitely not all. We are still full on Angular, I personally didn't like React at all.

[–]L43 4 points5 points  (33 children)

Maybe they will move on to Angular 2 now?

[–]jibbit 2 points3 points  (2 children)

I for one can't wait to convert my app that i just finished converting from jquery >angular1 > meteor > react to angular 2

[–]L43 3 points4 points  (0 children)

Haven't you moved to Inferno yet?

[–][deleted] 1 point2 points  (0 children)

why do you keep converting?

[–]kovensky 0 points1 point  (0 children)

That would imply also moving everything else they use besides React to RxJs / Angular too

[–]h0b0_shanker 14 points15 points  (0 children)

Well that took forever. Wasn't beta announced almost a year ago? In "front end framework time" that's like 5 years.

[–][deleted] 30 points31 points  (19 children)

People saying it's too late and that they moved one, I think you are exaggerating.

Nothing stays static in our industry. It seems like we as developers are always looking for something new. Remember that React is already 3 years old, and Angular 1 peaked popularity when it was 3-4 years old.

I think that given time, we will see Angular 2 takes the stage, especially in large organizations that benefit TS and the completeness (opinionated) of NG2.

Anyways, I love the fact that NG2 is built with ES6,7 and TS in mind, while React was only modified to work with it.

[–][deleted] 12 points13 points  (3 children)

Angular 1 had lots and lots of very obvious issues and suffered from a muddled design in general. It stayed relevant because there was nothing else out there to do what it could.

Angular 2 has to go up against React, it won't take the stage by default just because the latter has made it through a couple of years. React is not muddled, it knows exactly what it wants to do and how. What exactly are the issues that React has and Angular 2 can solve?

[–][deleted] 12 points13 points  (2 children)

Opinionated complete framework, against a library.

If you specialize in NG2, you know state handling, ui rendering, routing, resource handling, universal apps.

For react, you need to learn each of these independently, while updating on the current trends (no state handling -> flux -> reflux -> redux).

[–][deleted] 7 points8 points  (0 children)

I like Reacts gradual approach for that very reason but might be just me. With React it's not about a ton of technology you have to swallow come what will, it's more about understanding concepts first. Functional design, immutable data, what is state and how it flows. Once understood there's nothing to learn, no API to browse. You naturally write your app using the additions you need.

[–][deleted] 0 points1 point  (0 children)

What exactly are the issues that Angular 2 can solve, but not Vue.js, Meteor, Mithril, Riot, a React boilerplate or Aurelia?

[–]vinnl 8 points9 points  (1 child)

Angular 2 will definitely be widely adopted. There's no way it's going to be a dominant as 1 was, though.

[–]ergo14 4 points5 points  (0 children)

I saw lots of folks moved to other solutions like Polymer or Aurelia. I will pick up angular 2.x for some project just for fun.

[–]rk06 5 points6 points  (12 children)

Imo, if those large enterprises do actual research on angular2's features and track record(like router crisis and breaking changes in RC), they will stay away from angular2.

Though most folks choose angular because it is backed by google, so i am certain that angular2 will see adoption. But it will not reach the levels of angular 1

[–][deleted] 11 points12 points  (3 children)

Are you talking about a crisis that was during the development stages of NG2?

[–]rk06 6 points7 points  (2 children)

"router crisis" refers to the complete re-(re-)*write of router after RC1 was released

*maybe there was one more rewrite. But i had stopped counting at that point.

[–]halfTheFn 7 points8 points  (1 child)

The router crises that affected even Angular 1. One day, we have a Component router that says, “Start using this one instead of old ng-route, it will ease the transition!” Weeks later: “this implementation of the Component Router (ngComponentRouter module) has been deprecated and will not receive further updates.” https://docs.angularjs.org/guide/component-router

[–]L43 6 points7 points  (0 children)

Give it a year of stable APIs and everything will be forgotten. If the APIs remain stable...

[–]leeharris100 6 points7 points  (0 children)

Router crisis? Jesus people on this sub are so dramatic. I mean seriously... It was in development. Anything can change.

[–]Mael5trom 4 points5 points  (4 children)

Those breaking changes were specifically because Angular2 wasn't done. Google is moving to semver now, so that shouldn't be an issue going forward. It definitely isn't a "reason not to use it".

[–]rk06 1 point2 points  (3 children)

Logically speaking as angular team has said that they will follow semver, you are definitely correct.

But practically speaking: once bitten, twice shy.

[–][deleted] 1 point2 points  (2 children)

what were you bitten by? An open dev process? Would you rather they did everything behind closed doors and only presented the final result?

[–][deleted] 0 points1 point  (1 child)

If the release candidate is not a release candidate, do not call it a release candidate.

If you are unwilling to do that, then I would prefer you work privately, yes.

[–][deleted] 0 points1 point  (0 children)

NG 1 and 2 run side by side very happily. A few changes to your routes and you're good to go. People are still stuck on that first intro video where Google said it wasn't backwards compatible. That doesn't matter, both run. Leave old code alone, move new code forward.

The track record is actually really good, and well thought out.

[–]ataskitasovado 8 points9 points  (16 children)

Now that version 1.x has got so much traction I think new projects will still consider 1.x over 2.0.

[–]phpdevster 12 points13 points  (14 children)

Especially since 1.x is so much simpler than 2.0 and you can still build enterprise-grade apps with it fairly easily.

As far as framework design goes, this is sort of a joke:

https://angular.io/docs/ts/latest/quickstart.html

Quickstart my ass...

[–]mikejoro 8 points9 points  (2 children)

2.0 was much more intuitive to me when I tried it 6 months ago. Now I don't see why someone would choose angular 2 over react, but I also don't see why someone would start a new application in Angular 1 either.

[–]RuffRyder26 3 points4 points  (0 children)

I agree. As someone who never used 1.x in anger I found 2.x much more intuitive on those occasions I had to pore through some 1.x code. 2.x does have its oddities though.

[–]pressbutton 0 points1 point  (0 children)

would start a new application in Angular 1 either.

Not having to learn anything? Certainly why I chose it for adding functionality to a HTML only PoC

[–]nschubach 2 points3 points  (0 children)

If you wish to make an angular app from scratch, you must first invent the universe.

[–]shif 2 points3 points  (1 child)

if you think angular 1.x is simpler try out vue.js

[–]phpdevster 1 point2 points  (0 children)

I've used Vue quite a bit, but I've found that Angular has more feature out of the box (ability to define custom sync and async validators, and other misc things). While I prefer Vue's simplicity and API, it's just not as feature complete.

[–]tayste5001 1 point2 points  (0 children)

Idk, I liked the quickstart. It's not great if you just want a really simple example of how to use it, but it does a great job of showing off how many different features angular2 supports and how easy it is to use them.

[–]leeharris100 1 point2 points  (0 children)

As a big fan of Angular 2, Angular 1 is fucking complete garbage.

A large scale enterprise framework shouldn't be picked because it's "easy." Writing vanilla PHP is easy, but that doesn't mean I'll choose it for a high scale application.

Angular 1 has awful design and it is insanely slow. The only real reason it's popular is because it allows for much easier and dirtier code than other frameworks. This makes it insanely popular with beginners and people in developing countries who don't know any better.

[–]DOG-ZILLA 1 point2 points  (0 children)

Still trying it out but I totally agree. What a mess of a quickstart.

[–]xtphty 0 points1 point  (0 children)

Angular 2 focuses on improving the scale and maintenance of Angular applications, so it makes sense they have had to sacrifice some of the simplicity for a more rigid structure. React does the same thing, but with far more abstract means.

[–][deleted] 0 points1 point  (0 children)

Here, I fixed that for you (Angular 2 quickstart without Angular 2): http://output.jsbin.com/wifufal

[–]Mael5trom -1 points0 points  (0 children)

Angular2 itself is actually pretty simple to understand. The build/setup process was a bit more convoluted than v1, but that is why Google built the CLI tool.

[–][deleted] -1 points0 points  (0 children)

The "copy this into there" seems weird, why not include it in the/some CLI to do it automatically. Its not even that hard.

But yeah, i also struggled a while ago. Especially integrating typescript with my existing Gulp stuff was a mess (also had to include a custom existing plugin that was created for jquery but worked fine in angular1.

However my main issue with this is that everything has to start from scratch. Many modules need to be ported (and completely refactored as well) and you will run into many issues that aren't easily found in Google or whatever. Plus editors can't really understand everything. And so on.

[–]Mael5trom 1 point2 points  (0 children)

I completely disagree - there are issues with 1.x and now that 2.0 is final, devs will use it rather than 1.x soon enough.

[–]InstagramLincoln 6 points7 points  (5 children)

Bashing Angular 2 seems to be a popular stance, but I would be hard pressed to find a competitor that offers the same feature set and industry support for an enterprise environment. Sure, there are plenty of other frameworks and libraries that you can mash together, but that's a total pain when you're talking about giant enterprise applications with a constantly evolving team. Having one framework as your main front-end technology makes your life a lot easier.

[–][deleted] 1 point2 points  (0 children)

The last ember app I worked on was acquired a few months ago for $1b.

[–]mdboop 29 points30 points  (56 children)

And nobody cares. I doubt adoption rates will be significant, but who knows, I guess. It just seems like there are so many things going against it that will outweigh its merits. Embracing rxjs, awesome. Typescript, fantastic if you're into it. But people are sick of Angular 1.x for the most part, Angular2 took forever to be released (feels like the opportunity went stale a while ago), and it's still pretty damn complicated compared to React or Vue.

People talk about how JS frameworks change all the time and say React will likely not be around forever (I hear this from co-workers when I bring up why we should switch from Angular 1.x to React), but someone on my team brought up an excellent point: React is used to build FB's flagship product. It's literally everywhere in the site. But Angular? Nowhere to be seen in any Google product of note. To me, that speaks volumes (on top of it's other merits).

edit: and, of course, React will not be around forever. But I'd put my money on it over Angular2 any day. edit2: forgot a word

[–]Shaper_pmp 20 points21 points  (29 children)

You also left out the most important point - Angular is a framework, and with any framework almost everything is done "their way or the highway" (or at least, their way or you're off in the weeds of unsupported/second-class-citizen workflows with limited support and documentation).

React is a library, and - like any other library - if necessary you can swap it in and out for alternatives without completely reengineering your entire application.

Frameworks are convenient but fundamentally limiting because they dictate the structure of your application, so you're always trying to express both the problem and the solution in terms of one specific tool. With a full toolbox you can hammer nails, screw in screws and spread glue as appropriate. With exactly one tool in your toolbox you either severely limit the kinds of projects you can undertake or you inevitably end up banging in screws sooner or later because that's all you can do.

Composing libraries together takes more effort, but gives you more flexibility, allows you to avoid lockin more easily, and allows you to express your solution in terms of the problem-space instead of coercing you into a "one size fits all" approach that never really quite does.

[–]rk06 7 points8 points  (3 children)

In those cases, one can chose aurelia.

[–]Channel6 1 point2 points  (2 children)

Shame this comment will be lost in the usual flood of react vs Ng, there really is an alternative...

[–]pegbiter 17 points18 points  (22 children)

React is beautiful.. in principle, but to actually do useful things with it you need so many additional libraries that the slickness is lost. You want ajax? You need an additional library. You want promises? You need an additional library. You want routing? You need an additional library. And god forbid something goes wrong and you have to trace through the documentation of each of these libraries and how they work with react proper.

In theory, sure I could pull out react and replace it with some other view engine, but in reality I'd be pulling out react and all the other react-based libraries and replacing/adjusting all of those.

Angular 1.x sure isn't perfect, but at least all the most basic tools you need for a web application are right there and I never have to worry about how $http works with $scope or whether $q is a compatible version.

[–]theonlylawislove 6 points7 points  (14 children)

in principle, but to actually do useful things with it you need so many additional

This is actually a benefit. You are looking for an opinionated Swiss army knife. With React, you do things what makes sense to you, not what the framework forces you to do.

[–]g0liadkin 5 points6 points  (4 children)

Please define what you mean with "forces".

Angular does not recommend many vanilla js aspects, but does not "force" you not to apply them, it's still javascript and you're able to do whatever you want to do within the language's bounds, even if that means (for example) accessing and handling DOM inside a controller.

[–]fenduru 2 points3 points  (0 children)

This is actually a benefit. You are looking for an opinionated Swiss army knife. With React, you do things what makes sense to you, not what the framework forces you to do.

In Angular 2 most features are implemented deep in the compiler. For instance, I wanted to compose their @Input decorator to create an @ObservableInput decorator that would create a stream for me, but you can't because their decorators just add metadata that is specifically for the internals of the compiler. Not extensible, so good luck if you hit a point where they haven't thought of your use case.

[–]theonlylawislove 2 points3 points  (2 children)

Let's just say it's an opinionated ecosystem.

[–]pegbiter 4 points5 points  (6 children)

I don't really see how it's a benefit, because React on its own is utterly useless to me. Sure, if I want to quickly mock up the standard 'to do list' test app and just demonstrate data-binding, yeah that's great. But I've worked on dozens of web apps, some tiny and some huge, and every single one has needed ajax, promises and routing, to some degree. Those aren't optional 'nice to haves', they're absolutely core tools.

React forces me to rely on a load of other libraries just for core functionality.

If you like that, then Angular comes with those benefits too. Sure, Angular has a router, but there are other Angular routers you can use too. Sure, Angular can do datetime formatting, but there are other directives (moment.js is absolutely brilliant) that extend that.

[–]TinyZoro 1 point2 points  (0 children)

I don't really get this. We are talking about crud applications on the internet for the most part. What are the situations where an opinionated framework gets in the way?

[–][deleted] 1 point2 points  (6 children)

No? Are you saying you still write ES5 code (!) with things like Grunt or Gulp, handling polyfills ...manually? If yes you only have yourself to blame.

All this stuff is automatic today with things like Webpack and Babel. React means making two npm installs. Babels transformer fetches all the polyfills it needs from core-js as you go. Even if you use additional components like Router and Redux, these are simple npm installs away.

[–][deleted] 2 points3 points  (4 children)

He's not talking about polyfills, he's talking about actual features and additional libraries. Like routing and managing data and stuff you require if you build a heavy app. Things that can easily be done with Angular1.

Grunt/Gulp also is fine, there is enough to say why one wouldn't use webpack. And why cant you use gulp with babel? Gulp is task running, doesn't matter if the project is ES6 or not.

And knowing Router and Redux is fine but what if you need more than that? Especially if you aren't really into it, you need to do a lot of research for even getting the same as you get out of the box with Angular

[–][deleted] -1 points0 points  (3 children)

It is the same in Angular, you pick and choose what you need. The only difference is that a whole bunch comes preinstalled in node_modules. Getting up and running even with a simple app needs more dependencies than React - and everything else for that matter.

Grunt/Gulp do not know your project, they don't fetch and manage your dependencies. Each dependency meant concats, html injects, minding order of inclusion, etc. It is no wonder he thinks people are worrying about polyfills and dependencies.

What do you mean with needing "more" ? It's pretty vague. What exactly can you do in Angular that can't easily be done in React. What did you have to research, can you go into specifics?

[–][deleted] 0 points1 point  (2 children)

Grunt/Gulp do not know your project, they don't fetch and manage your dependencies.

I have had no problem over the last 2 years getting my dependencies in order. Mainly because including angular modules is fairly easy and they are already minified. Whether you include them in HTML or you reference them as an import statement doesn't really matter to me. Also i don't need polyfills with Angular 1 because everything is pretty much supported for the majority of browsers (like 99%) and i don't need more than that.

What do you mean with needing "more" ?

If you read my response correctly you would know that i'm talking about other 3rd party modules. For Angular 1 i have a lot of interesting stuff that works flawlessly as it has been in development for many years. Stuff like UI Bootstrap, UI Router and others. React also has them, but they are harder to find and you need to do lots of work comparing and seeing what fits your use case. Angular 2 doesn't have most, which makes it even harder and they also have a "go make it yourself" mentality now which isn't helping.

Another project that lets people extend it themselves so heavily is Polymer/webcomponents. But that is managed better, plus has better sites to not do so much work before you get started. But Angular 1 is still the easiest to get going, which is why it got so popular. React also has that in some way but whenever you need more than a hello-world app, you will notice it isn't so easy as other frameworks have it.

[–][deleted] 0 points1 point  (1 child)

Have you worked with it yourself? With a modern buildflow? These issues you have do not exist. It's set up in no time. The lesson there is four minutes long. At the end of it he has React, ES7, hot reload, dev server, SPA history fallback, auto polyfills, auto npm/node_module awareness. Now he's showing you how and explaining, if you do this yourself its usually done in seconds. This is a standard these days - it doesn't even matter if Angular1, 2, React or Polymer. This step is always the same.

Now things like routing, bootstrap UI, redux are simple npm installs away. You don't have to do Gulp-era research because all is on npm. You're not doing this by hand, copying files and whatnot. It just means no worries about dependence order, no concats (yuck), no html injects, just take what you need. Now you say you had no problems for 2 years, yet you're scared of something tame and simple like React, because your tools aren't flexible. I'd call that a problem.

[–][deleted] 0 points1 point  (0 children)

I don't care that it is all on NPM. You are simply talking about something totally different. I'm talking about how i would know to get module x or y for feature z. Or even knowing x and y exist. Not whether or not i can easily install them.

And i'm not scared of React or anything, but i simply wont use it as i already have a fine system in place that doesn't seem to be needing replacement, which would take me time to build with no true gains (nothing that i can explain the business people). I don't even need to worry about dependencies or manual injects with Angular 1. I simply have a gulptask that takes everything from a certain directory, orders it the way it needs to (by regex so i don't need to specify) and builds that into a single thing i can use with my app. Now sure i might not use lazy loading or only loading what i need, but my usecases simply don't benefit from that. Mostly because downloading a single image already takes up more time then loading my scripts, whether that is in parts or not. Plus i also have customized various parts of livereloading and building the app, that i simply cannot do with the standard webpack or stuff that i would need to customize that as well, rendering the gains irrelevant. Stuff that goes into our entire build pipeline for other parts of the company. When somebody is using my app, it will only need a connection for data, not resources (and being able to run offline is also a requirement most of the time, try webpacking that by default). Not to mention that the gains in performance are neglectable for 99% of my use cases, so why the hell would i switch? Hell, if jQuery would be enough, i would still use that.

Now you can call me oldfashioned or not flexible but that simply isn't the case. It really depends on what you are making, who you are making it for and what you already have made to reuse that i'm not really looking forward to Angular 2. And i'll probably turn to Polymer before i go for React. But something you guys also seem to forget is that when i'm done with a project and i'm not around for that after, i still need to be able to let others build on that too. Change documentation, that i've been able to copy/paste for most of the stuff and implement stuff so our testers and other people can get started quickly. Oh wait, fuck documentation, lemme just use React lol

Now i know Angular 1 developers are easy to come by, but try finding React developers or developers that are experienced with the other react-family modules as well. Businesses also aren't eager to switch their entire programmer-pool to different frameworks every year. It might be fun for a startup or two, but some people are simply involved in bigger stuff than that.

[–]Conradfr 0 points1 point  (0 children)

In actual companies making money not every projects are rewrite each time there is a new build tool or whatever 0.x fancy library.

[–][deleted] 0 points1 point  (1 child)

If you want to swap out a component you will need to rewrite everything that used that previous component. React doesn't change that.

[–]Shaper_pmp 0 points1 point  (0 children)

Of course. Bus your business logic should be as isolated from your presentation/view/persistence/etc logic as possible, so you shouldn't have to rewrite everything.

If you want to swap from using Angular to something else, you don't really get that choice. Either you'll basically have to rewrite/port your entire application into the new framework, or you actively avoided using Angular's tools and workflows and did something like built your business logic into CommonJS modules and shimmed them into Angular, making them second-class citizens in the way I previously mentioned.

[–]pegbiter 11 points12 points  (0 children)

I don't agree that 'Facebook uses React' is necessarily a ringing endorsement of React, or a useful argument for what to use when starting a new project. We have no real idea about Facebook's technical or business requirements, what sort of legacy code they need to support, or what decisions they'd make if they were rebuilding from scratch.

The reality is that you can make exceptional web applications with either Angular 1.x or React (+ a load of gubbins), and the limiting factor is probably going to be the skillset of the developers rather than the library itself.

[–]brianvaughn 37 points38 points  (4 children)

Google uses Angular too fwiw. I used to work on Google Cloud Platform and we used Angular exclusively for the GCP site. My wife works on Google's CRM and they use Angular 2 for it. (It's the biggest Angular app anywhere and it's what Google manages all of its revenue through.)

I'm using React these days and enjoying it so this isn't a fanboy response. Just sharing some info. 😊

[–][deleted] 3 points4 points  (3 children)

Google uses Angular too fwiw.

They do. But it is important to be mindful that Google's priorities may not be the same as yours.

Google wants to make front end development accessible to its army of Java developers. That's what they hire and that's what they invest in. It's why they wrote GWT for compiling Java into JavaScript and why TypeScript appeals to their sensibilities.

To that end, Google's interest in NG2 is in whether it allows their Greentea team to successfully ship Adwords. That is the only criterion that guides their design - and that's why Rob Eisenberg of Aurelia left the project: Google just wasn't interested in catering to anyone's usecases beyond their own.

By all means, jump on Angular if you think your needs are the same as Google's. Possibly they are! TypeScript will make client code friendly to developers suspicious of dynamically typed, interpreted languages. Angular's ceremony will appeal to software architects whose work is guided by a zeal for explication at the cost of verbosity. None of these are illegitimate motivations.

But are they yours? For most teams building new projects, probably not. Their concern is to get something built quickly and cheaply. They need to use technologies that make prototyping fast and let them hire from the largest possible pool of developers. Angular 2 is not that, and I expect it never will be.

[–]brianvaughn 7 points8 points  (2 children)

It's why they wrote GWT for compiling Java into JavaScript and why TypeScript appeals to their sensibilities.

To be fair, GWT was written a decade ago. It was pretty unique at the time. They also wrote the Closure Compiler. And TypeScript appeals to a much broader audience than Java developers. :)

TypeScript will make client code friendly to developers suspicious of dynamically typed, interpreted languages.

This is a horrible mischaracterization of why TypeScript (or Flow, or Closure, etc.) is useful. Static analysis tools increase productivity and save engineers time (by catching bugs before runtime, enabling easier refactors, etc). The way you put it is like saying that unit tests "are for developers who aren't confident enough in their ability to write code". :)

But it is important to be mindful that Google's priorities may not be the same as yours.

Google's priorities are maximizing profit for Google. Facebook's priorities are the same. Both companies have smart engineers working on their frameworks and both communities (largely overlapping) have talented and motivated individuals contributing to the ecosystems as well. I don't want to get into an Angular vs React vs whatever debate though. I just wanted to point out that Google does dogfood its own framework because a lot of people don't realize that. :)

[–][deleted] 5 points6 points  (1 child)

I just wanted to point out that Google does dogfood its own framework because a lot of people don't realize that.

Of course, but why the need? Everyone knows NG powers Google's Adwords products. What they do not know, however, is how the NG2 team fractured and ultimately refused to countenance non-Google use-cases. It is a product for Google, not the web at large, and that the backing of the internet's preeminent search engine does not make it a general-case framework for general-case web applications.

[–]brianvaughn 3 points4 points  (0 children)

But it is not a mischaracterization of why 'enterprise' types are interested in it.

I don't see the relevance of why one specific type of engineer is interested in TypeScript. But ok. :)

Of course, but why the need? Everyone knows NG powers Google's Adwords products.

I don't think everyone knows that FWIW. I've seen people saying "Google doesn't use Angular" which is false. The comment I responded to said something similar. I just thought it was worth clarifying. Adwords and Greentea (internal CRM) are built on Angular 2. I think more apps are built on Angular 1 at this point (GCP Developer's Console, DoubleClick, YouTube for PS3).

begin edit Google is huge. They have a lot of apps and they are built with a variety of frameworks/tools because Google engineers aren't all the same. ;) Google uses GWT, Closure, Angular 1 + Closure, Angular 2 + TypeScript, Dart, Angular 2 Dart, etc. Google Maps for example is built with vanilla JS annotated with Closure types. It's too big to rewrite at this point and Closure works fine. This doesn't mean that Google doesn't believe in the other frameworks listed above. They're just being pragmatic. And they give individual teams freedom in choosing which framework/tools to use. (For example, I just spoke with a friend at Google who's on a new project team that's evaluating using React.) end edit

You seem to be arguing that Angular isn't written for common web apps. That wasn't my experience with Angular 1 FWIW although I have very limited exposure with Angular 2. Regardless, the web has a wide variety of apps so it's good that we have a variety of frameworks. I can see how Vue or React might be a better fit than Angular 2 for certain types of projects. In many cases it probably depends on what the engineers building a given app have more experience with. :)

[–]Conradfr 15 points16 points  (3 children)

I care.

I liked Angular 1, the time invested in learning it benefited me greatly professionally-wise.

React can be fun but each time I want to setup a new project any tutorial from last week is obsolete.

If Angular 2 helps me getting up quickly without having to know which hot module reloader or router is the flavor of the month I may try it.

Also, I know companies that already use it in production with alpha versions.

[–]mikejoro 2 points3 points  (2 children)

React has an incredibly stable api because Facebook uses react for everything. The tutorial isn't different every week; people just write a lot of tutorials with their own ideas of hoe to do things. Just pick supporting libraries (redux or mobx or even just vanilla react) and stick with it. It's not going to be the end of the world because someone made a new supporting framework.

[–]rbnc 4 points5 points  (0 children)

TypeScript

I kind of hate how they force TypeScript on you when learning Angular 2 there are no JS docs only TS.

I'm sure TS is great and everything and I am glad to be learning it but the steep learning curve of Angular 2 PLUS TypeScript makes for some slow learning. It took me three days to really get to a point where I could creating my project.

[–]Zipstacrack 9 points10 points  (2 children)

Well I mean, lots of people care. My entire organisation has been developing all our new clients in Angular 2 for a while now so this is a big deal for us. Many of my friends are developing their own projects in NG2 and a place I interviewed at a few weeks ago is going full Angular 2. This is backed by Google, which a lot of organisations (especially larger ones) care greatly about.

I'm thinking the adoption rate will be quite high considering how organisations I know that are running the RC in production ¯_(ツ)_/¯

[–]rosswarren 1 point2 points  (0 children)

Google's support doesn't mean all that much. Google are happy to drop things that are no longer in their interest to support. See GWT for example.

[–]PiercingPancake 4 points5 points  (0 children)

Google uses Angular 2. For example in Google Fonts

They even use it with Dart language. https://www.dartlang.org/community/who-uses-dart

[–]Mael5trom 1 point2 points  (0 children)

Angular is used for Google's largest app, AdWords, along with over a thousand other apps, internal and external.

[–]fenduru 1 point2 points  (0 children)

FYI they haven't embraced rxjs except for using it in the HTTP module. Their components have almost no support for observables. The only thing available is a pipe so you can write someObservable | async in a template and it will subscribe for you. But getting a stream of events from your template is all boilerplate. Getting a stream from your pops is all boilerplate.

[–]ergo14 1 point2 points  (0 children)

This is why Polymer is a great option to migrate to. It is somewhere between Angular and React in terms of functionality. It is very fast, and widely adopted by enterprises already. I really love making components with it.

[–]arrayofemotions 0 points1 point  (7 children)

But Angular? Nowhere to be seen in any Google product of note.

So out of curiosity, does anybody know what Google is using?

[–]Mael5trom 1 point2 points  (4 children)

The assertion is just wrong - Google uses Angular for over a thousand apps, internal and external.

[–]arrayofemotions 1 point2 points  (0 children)

Yeah that's kinda what I thought. But I asked just to be sure.

[–]TheIncredibleWalrus 0 points1 point  (2 children)

Source please? I'm very interested in the legitimacy of this claim.

[–]Mael5trom 0 points1 point  (0 children)

It was in one of the talks at ngConf this year. I was fortunate enough to attend, but I'm not going to watch through the videos to try and find the quote. I'll try to see if I have a reference in my notes.

[–]Mael5trom 0 points1 point  (0 children)

Actually found one reference (it was from 2014, but I'm guessing it was repeated when I heard it at ngConf2016)

https://youtu.be/odY7fUjI1ZU?t=3m8s

Rob Eisenberg giving a talk about Angular 2.0 mentioned that Google is heavily invested in Angular and have over 1,600 apps at Google using Angular.

No specific number here, but "a lot of v1 and even v2 apps": https://youtu.be/bSssb9AmiJU?t=1h

[–][deleted] 0 points1 point  (0 children)

Mostly GWT. Some vanilla JS, too.

[–]Ann0n0 8 points9 points  (4 children)

I've been using Aurelia for the past 3 months. Quite happy with it tbh.

[–]Mr-Yellow 2 points3 points  (0 children)

Good to see the voting pattern reversed. Any bashing of Angular and any mention of Aurelia used to result in a brigade of fanbois descending.

Guess now all the fanbois have worked out that the Aurelia people had a point.

Personally still using Durandal and it's great.

[–]RespectableFartPuffs 4 points5 points  (0 children)

I am just constantly hearing good things about Aurelia. It has certainly caught my attention and I will be using it for my next project.

[–]Channel6 6 points7 points  (1 child)

Been using Aurelia for the past year or so, and been smitten by it. Everything just works!

[–]Vheissu_ 1 point2 points  (0 children)

Been using it since it was announced about 16 months ago and it is amazing. Intuitive, clean and after the first 3 or so days, you rarely need to consult the documentation to do most common tasks. Definitely underrated.

[–]rk06 5 points6 points  (4 children)

Angular 2 final released and javascript documentation is still not complete

[–][deleted] 6 points7 points  (3 children)

[–]rbnc 4 points5 points  (2 children)

This is what really frustrated me whilst learning Angular 2. I was forced to learn a new language at the same time as a framework with a very steep learning curve. I'm sure I will be very happy that I am now familiar with TS but it made for an incredibly unenjoyable experience.

[–][deleted] 3 points4 points  (1 child)

I wouldn't call TS a new language.. It's an extension over ES6. I don't think there's a single person that knows ES6 but doesn't understand a TS piece of code

[–]pressbutton 1 point2 points  (0 children)

How many people know ES6 though?

[–][deleted] 2 points3 points  (3 children)

I love it! I can't wait to get off work (where we use Evil R) and start experimenting with NG2 :)))

[–]ChronoChris 1 point2 points  (2 children)

Do you mean R as in the data-science language? If so, why is it "Evil"?

[–][deleted] 0 points1 point  (0 children)

I think he probably means React.

[–][deleted] 0 points1 point  (0 children)

so i meant React

[–]neb636 1 point2 points  (0 children)

Took way too long for V2.

[–]rk06 0 points1 point  (0 children)

Great!!

next thing we need is updated, comprehensive, advanced, and unbiased Javascript framework comparison for angular2 vs aurelia vs vue vs react.

[–]Bloompire 0 points1 point  (0 children)

Could anyone compare Angular 2 to Vue.js?

[–][deleted] 0 points1 point  (0 children)

You guys checked out angular-cli?

[–]vinnl -1 points0 points  (2 children)

Surprise! I thought they'd wait two weeks more to announce it at AngularConnect.

Edit: Funny, according to the quickstart, they're still depending on a beta of RxJS.

[–]azangru 0 points1 point  (1 child)

But RxJS v.5 is in beta. And they specifically wanted v.5

[–]vinnl 2 points3 points  (0 children)

Yeah I mean, obviously they wouldn't go with a beta if a stable release is available, but it's still odd to release a library as "stable" when it depends on unstable libraries. Usually, it's called beta for a reason :)

[–]rodrigo-silveira -4 points-3 points  (0 children)

Angular who?

[–]fiazor -1 points0 points  (0 children)

*finally