The AngularJS team has given a view of the future of the framework and many programmers are finding it unacceptable. An almost complete break with the past means that many are working on projects that use an about to be obsolete framework with no upgrade path.
Google's AngularJS is one of the most popular UI frameworks and hence in use in many projects. So the news that the next version is going to make radical non-backward compatible changes is not something that many will welcome - "Is this a joke?" is a typical comment.
At the initial presentation it was even stated that there will be no migration path from Angular 1.X to 2.0, but due to the angry response from programmers fearing that their apps are about to be deprecated, the Angular team has issued a blog post that softens this and its entire position on the new version:
"Our goal with Angular 2 is to make the best possible set of tools for building web apps not constrained by maintaining backwards compatibility with existing APIs. Once we have an initial version of Angular 2, we'll start to work on a migration path for Angular 1 apps."
Even more radical is that Angular 2 will introduce AtScript an extension of the TypeScript optional typing. In this case you don't have to use it because it definitely has to be compiled to ES6/5.
The other big change is that the framework will only target the "evergreen" browsers, i.e. the ones that keep up with Web standards - Chrome, Firefox, Opera, Safari and IE - but only the latest versions. This would mean that old IE versions and the Android stock browser might not work.
AngularJS 2 will also support and make use of web components - a technology that wasn't ready for use when Angular was first designed.
If this wasn't enough to worry you, the basic structure of the framework is also changing. A unified component model will get rid of controller and templates and provide a simpler, but different, way of working. Syntax is changing to make things more consistent - parentheses to invoke functions, square brackets for attributes, to give just two examples.
To provide some details, the Angular team give an example of a 1.3 template:
You can see that the syntax changes are going to need more than a search and replace.
The objective of the changes is to make Angular faster and more logical. For example, the use of jqLite has been dropped in favor of direct interaction with the DOM, which is now thought to be standard enough not to need performance sapping wrappers. In addition the entire framework will be modular, making it possible to only load what you want to make use of.
You can see the presentation at ng-europe 2014 that started all the fuss in the following video:
There seems to be a lot to learn to come to terms with the new Angular. Most of the changes seem like good ideas. If you were to start again then they way that you would do it would be closer to Angular 2 than the original framework - but this is what critics are complaining about. They say that this is a new framework that has simple stolen Angular's name!
There is also the well known effect of killing the current version prematurely by announcing a new version to early. AngularJS 2.0 isn't likely to see use until the end of next year - yet would you start a new AngularJS project until it is available? Even here at I Programmer the effect has been to cancel a set of Angular tutorials because what is the point if you have re-write and more important reorganize to take account of something so different.
The key point is that no matter how much better AngularJS 2.0 may be, its impact is to leave AngularJS 1.3 dead in the water.
It is difficult to remember how radical Firefox was when first introduced, but now it is being remade using a slightly boring, but potentially more efficient architecture. The problem is that this mak [ ... ]