A grouchy writeup on the Angular 2 situation

I decided to write this blog after reading an excellent comparison of AngularJS and Angular2. But today I’d like to talk about another aspect: how Angular 2 is being marketed and delivered to us.

When I started learning Angular 2 in Spring of 2015, it was clear to me that Angular 2 to AngularJS is as ham is to hamster (yes, I’m rephrasing a popular Java to JavaScript comparison). More than a year later, I still think that these are two different animals.

AngularJS 1.x was and still is the most popular JavaScript framework, and more than one million (!) developers are using it today. I guess someone at Google decided to capitalize on the popular brand and this is how the concept of the new version of AngularJS came about. Overall I think it was a smart marketing decision, which was supported by the fact that the creator of AngularJS and Angular 2 was the same rock star software engineer Misco Hevery. But rock star software engineers do create different products.

If Microsoft would use the same marketing strategy, they would not use the name TypeScript for the new language but would market it as C# 2. Both of these languages were created by Anders Hejlsberg, right? Then they’d publish a migration guide from C# to C# 2 similar to the migration path from AngularJS to Angular 2. I’m sure next year we’ll see more guides explaining how to migrate your app to Angular 2 from React, Ember, and ExtJS, and each of these migrations will be an effort similar to upgrading from AngularJS to Angular 2.

All right, let’s move from naming the framework to naming the releases. While writing the book we created multiple sample apps and had to change all of them each time when the new alpha release of Angular 2 was made available. This was expected and we survived a couple of dozen of such releases. Early this year the framework went to the beta phase, and in May of 2016 the Release Candidate 1 was announced.

If someone would ask me in January if it’s safe to start developing new apps in Angular 2, I’d say “Yes, it’s pretty stable now”. Boy, I was wrong! I always thought that alphas are for introducing new features and breaking APIs, betas are for fixing bugs, and release candidates are just for polishing things up. Who would expect that between RC.1 and RC.5 the router and forms API would be completely rewritten, and a new API (modules) would be introduced for packaging/loading apps?

If you’d ask me today (August 22, 2016) if it’s safe to start new development in Angular 2, I’d answer “If Angular 2.0 won’t be officially released in September of 2016, don’t bother.”

Go to StackOverflow and you’ll see that people are asking questions like “I’m having problems with so and so. I’m using Angular 2 RC.1”. If someone would suggest to upgrade to the latest RC.5, a typical answer would be, “Sorry, I have no time for this”.

Does it really have to be that time consuming to upgrade from one RC to another? Apparently it can be. There is even a guide titled “RC4 to RC5 migration“. It has an optimistic subtitle “Migrate your RC4 app to RC5 in minutes.” Yeah, right! This is exactly what I’m doing now. I’ve allocated a week to upgrade about 40 small apps from RC.4 to RC.5.

In the JavaScript community most of the software never reaches version 0.5. Announcing a Release Candidate of any JavaScript-related software sends the following message to enterprise developers: “This software is stable and it’s safe to start using it for the real-world projects”.

From a recent Adventures in Angular podcast I’ve learned that to decide if the next breaking change should be introduced in the next RC, the members of the Angular team ask themselves, “Would this make Angular better?” If the answer is Yes, they break the API.

A Popular Russian comedian Mikhail Zhvanetsky once said, “Who cares about the borscht if so much is going on in the kitchen!” Dear Angular team, I really like Angular 2 RC.5 as it is. Please concentrate on fixing bugs and stop cooking the borscht! Give us a stable release that won’t dramatically change for six months so we can release our apps too.

The happy ending

Angular 2 is a powerful platform for building complex suites of app. Being a Java developer for the most of my professional life, I can see that Angular 2 can make an effect in the JavaScript community similar to what Spring Framework made in the Java world, which was huge!

Keep in mind that there are about 15 million of Java and .Net devs, and most of them have not tried Angular 2 yet, but when they will, they’ll love it too!

I used AngularJS but never liked it. I knew it was the most popular JavaScript framework, but I never liked it anyway. As a matter of fact, I never liked neither JavaScript nor any other JavaScript framework. But I really like the Angular2/TypeScript duo!

Looking forward to hearing the following announcement at the AngularConnect 2016, “Ladies and Gentlemen, We’re happy to announce the release of Angular 2 1.0 today!”

10 thoughts on “A grouchy writeup on the Angular 2 situation

  1. You should really look at Aurelia by Rob Eisenberg. It’s modern, uses ES6 and beyond syntax, it’s the closest thing to writing native modern Javascript I’ve seen with little framework intrusion.

  2. I really like the positive attitude of this Reddit user!

    vlinking 2 points 4 hours ago
    Each Release Candidate forces you to relearn and rewrite code again, which keeps you from stagnating and developing Alzheimer’s.

  3. It’s been hell for those of us betting on Angular 2, following the blow-by-blow, month after month. But your main point is so correct, I don’t think you are stressing it enough. Web development (Javascript) is finally merging with the standards and ambitions of true application programming (Java, etc). Angular 2 is the bridge between the standards of Java programming and those of JavaScript (through the brilliant medium of TypeScript). Will a lot of current web developers fall away when they can’t meet evolving standards? You bet. The old website concept is dead (at least where all the money is), and Angular 2 is the world of unqualified network application programming, whether the client is a web browser, a native mobile app, hybrid mobile app, even a desktop app or an iot device. Java folks will get it right away, but old JS folks will be starting from scratch with real classes (not mere constructors), etc. etc. In fact, I believe that people with a strong Angular 1 background at a disadvantage to complete newbies with Angular 2 because they’re burdened with so many preconceptions that are now irrelevant or distracting. This is a whole new animal.

  4. I agree completely! We’ve been using Angular 2 since Beta, expecting bug fixes and minor API changes. Instead, we’ve had wholesale breaking API changes that require at least a week’s worth of dev effort for each RC upgrade. The Angular guys really have made a huge mess of this. Sure, make breaking changes in Alpha releases; I’d expect a little bit of effort on my part for Beta releases; but RCs should be stable requiring almost no effort on my part.

  5. Back in October of last year (2015) I built my first and last production web app in Angular1 (sort of late to the party, I know). But overall I come from a .Net background. Since the very first beta of Angular 2 (on December 12th I think), I have done all new projects on Angular2 (I even have one quasi-production app sitting out there in the Beta version; haven’t gotten around to upgrading).

    The most difficult hurtle with Angular2, in my opinion, is learning and configuring the build system; my gulp tasks started as severely convoluted spaghetti code. But the future of the build system looks good, however, with the advent of the angular-cli (which is still buggy but is getting better) and the evolution of the various build tools (JSPM, Webpack etc). And the future of Angular2 looks great too; the most recent upgrade from RC6 to RC7 was painless. I really am jazzed to be working with Ng2. Perhaps due to my .net background, it just makes intuitive sense to me.

    Would I have done anything differently had I known all these headaches in advance? For me, probably not. I made a choice to be “ahead of the curve” and suffered with the growing pains. Didn’t make any difference if angular2 was in Beta, RC, or CrackPipe version. Yes these growing pains can be annoying, but they will soon be all but forgotten in the rear view mirror.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s