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.
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.
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
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!
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”
Did you know that Angular 1 went through the same release cycle as Angular 2?
Then it’s called recidivism:)
“Angular 2 to AngularJS is as ham is to hamster”
So is there a date set for the 1.0 release?
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.
Well said! Totally agree.
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.
So, it’s good that I was busy at work and didn’t have time to go further through your book. Less things to re-learn.
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.