The State of AngularJS

I have had the privelege of being involved with AngularJS from close to day 1, especially as the first large project that used AngularJS for its UI. To say that it has come a long way from then would be a massive understatement, as would saying that it has reached the end of the line.

One thing that has always astounded me is the single-minded focus of the folks involved in the core AngularJS codebase to not rest on their laurels, but instead keep pushing bull headedly towards improving performance, usability and the general web, even at the expense of their existing code and infrastructure. I can't remember the number of times Misko rewrote the core AngularJS codebase before it reached 1.0, but it seemed like it was being rewritten every other week. That one thing has remained constant with AngularJS since its inception, and that culture remains to this day.

What is AngularJS?

AngularJS is a framework that is meant for writing Rapid, Iterative and Scalable Single Page Applications. It competes in this space with the Backbones and the Embers, but what it has going for it is a deceptively easy initial learning curve, an amazing glut of support libraries (for almost anything you might need to accomplish in your application), and the fact that you can accomplish so much more in so little code.

Where are we today?

AngularJS is amongst the top one or two SPA choices for developers currently. Almost every known UI library (From KendoUI to Bootstrap, etc) seem to have out of the box AngularJS support for all their UI components. There are enough generators (Yeoman for one) which allow you to generate the scaffolding, the boilerplate and the build tools you would require for a new AngularJS SPA framework. While I remember that when I wrote the first AngularJS book for O'Reilly, there was almost no material available online other than the official AngularJS docs. Now, there are atleast a dozen great books and multiple online sources for learning and becoming an expert on everything AngularJS.

All in all, it has never been easier than now to work on an AngularJS project. And for good reason, the advantages of AngularJS are many, including, but not limited to:

  • Great separation of concern between your UI rendering logic, your business logic and the data
  • Glut of third party components, and if you ever find something still lacking, ability to create your own reusable components
  • Write minimal code to get work done, with Data binding, Dependency injection and much more. Generators like Yeoman further reduce your work

What about the future?

The only concern why people are considering whether to get on to the AngularJS bandwagon currently can only be attributed to AngularJS 2.0. This elephant in the room has caused undue distress to a lot of people, especially with the concern that it seems to be a major revamp and does not seem backward compatible with AngularJS 1.0. If such is the case, then it seems that there is no sense in using AngularJS 1.0, with there being no future for it beyond a few months.

Part of this is based in truth. AngularJS 2.0 is a major revamp. There are a lot of changes. But these changes are essential to ensure that the performance and capabilities of the framework adapt to the newer age of web technologies. A lot of the decisions made in AngularJS were catering to a web development age which was completely different, and more focused on jQuery and the likes. But the web era today has Web Components (Polymer!), Shadow DOM and much more. It is a whole different paradigm.

So rather than fade away like the likes of ExtJS etc which never adapted, AngularJS is embracing the new web, which requires massive changes in its implementation, as well as adapting some naming choices which in hindsight weren't the very best (I'm looking at you, services & factories!).

That said, completely abandoning the AngularJS 1.0 segment is not something any of us would want, and this is where the power of the AngularJS community really shines. It is a collaborative environment and the core AngularJS team has sat together with the community and figured out a transition path from AngularJS 1.0 to AngularJS 2.0. It will never be as trivial a change as drop AngularJS 2.0 within AngularJS 1.0 and voila, you have a new App, but there are certain things you can do today in your AngularJS 1.0 codebase to make it easier for you to transition.

What are those things, and what are the major changes in AngularJS 2.0? Well, we do cover this in my workshop at JsFoo!, in addition to the basics of AngularJS 1.0, but you can check out the awesome migration guide as well as the new AngularJS 2.0 website for some info on what is coming.