First and foremost, Angular 2 is "designed for the future." This means using ECMAScript 6+ as the language to develop the framework, although it's transpiled to ECMAScript 5 since no browser supports EC6 yet. EC6 is not supposed to have been formally codified until the end of 2014, but the Angular developers want to get ahead of the game and are using the Traceur compiler (another Google creation) to generate compact, backward-compatible code.
A second goal is to make Angular work on what its developers call "evergreen" browsers that are kept current to match evolving Web standards: Chrome, FireFox, Opera, Safari, and IE11. One possible pain point as a result of this, for both developers and users, is that earlier versions of the Android browser might not be supported, in big part because the stock Android browser -- as opposed to Chrome for Android -- is revved so slowly.
Leaving out earlier versions of Android would not be a trivial decision, since according to AppBrain, as of March 15, 24 percent of Android devices are running versions of Android earlier than 4.0, and Google Chrome for Android doesn't run on any version of Android earlier than 4.0. No hard decision has been made on this yet, though.
The nuts-and-bolts changes to Angular are in line with most 2.0 revisions of a product: to make it faster and simpler, and to add more features that developers want. Some improvements in speed will be leveraged by using the new
To simplify Angular, one of the ideas on the table is to modularize it. "Every piece of Angular should be optional, replaceable, and even used in other non-Angular frameworks," the Angular blog says. In Google's view, developers should swap out or upgrade pieces by hand if need be. The company claims some of this is already happening -- such as when it split the
$route function into a separate library, "several innovative replacements popped up."
Angular's dependency injection system, one of the features Angular co-creator Misko Hevery cited as a key differentiator for Angular over other frameworks, is slated for major improvement as well. The plan is to make the dependency injection system less complicated to set up, less cumbersome in its syntax, and more a part of how Angular itself works -- for example, by allowing Angular's own code to be lazily loaded via injectors.