Thursday, July 26, 2012

AngularJS 1.0 -> 1.2 Roadmap

After the 1.0 launch a few weeks ago and bit of PR work AngularJS has been gaining more adoption than what we expected. Thank you everybody who took a look and recognized that we are onto something awesome. Many of you have asked about our plans post 1.0, and that's what I'd like to address by rolling out our roadmap for the next few months.

Versioning conventions

  • 1.0.x will receive only bug fixes backported from 1.1.x branch and will be supported until 1.2 is released
  • 1.1.x will receive features and bugfixes and might contain breaking changes in between minor releases
  • 1.2.x will become stable (a bugfix branch) based on the last 1.1.x release

Delivery date

We are targeting the release of 1.2.0 in early to mid September 2012.

Scope for 1.0.x (branch v1.0.x in git)

Low risk bug fixes and documentation fixes only. Release frequency 2-4 releases per month depending on the number of fixes. Issues currently tracked for 1.0.x train are listed in our issue tracker under the 1.0.x milestone.

Scope for 1.1.x (branch master in git)

All the development happens on the master branch with qualifying fixes being backported to the v1.0.x branch. Release frequency 4 releases per month. Before we get to implement any of the new features, there are 62 pull requests (most of them very recent) waiting for our review. So our number one priority right now is to clean up the pull request queue as well as our issue tracker. Once that is done, this is what remains:

Big Features:

  • Improve error messages and reduce payload size by introducing error rewriting #1041
  • Support for animations and transitions in ngRepeat, ngView and ngInclude
  • Support for comment-based ngRepeat

Small Features:

  • Name all anonymous $watch functions to improve debugability and tooling (Batarang) support
  • Ability to reset a form to pristine state
  • Add missing ngFocus and ngBlur event handlers
  • ng-controller=”Ctrl as c” syntax
  • angular-seed + tutorial updates (better structure, Testacular)

Major side projects

  • Object.observe() prototype (replace our dirty checking with O.o() )
  • Batarang - finish DI instrumentation and deploy the extension to Web Store
  • CI server - completely transition from JsTD to Testacular (requires implementing e2e testing proxy in Testacular)
  • Server-side pre-rendering prototype
  • Closure compiler advanced compilation prototype

Friday, July 20, 2012

AngularJS Now Hosted on Google CDN

As you probably already noticed, one of the core AngularJS values is simplicity. Simple is awesome, but simple and fast is doubly awesome and that's why we also value speed and performance.

Since early beginnings of the project, we strived to make bootstrapping of AngularJS apps as fast as possible and offered to host all of the AngularJS artifacts on our server which follows the best caching and compression practices. Our expertise and server is however no match to the speedy autobahn-like Google CDN (content delivery network).

Thanks to your adoption of AngularJS all over the world, we earned the privilege to be hosted on this state of the art infrastructure. And so I'm happy to share with you, that as of today you can start relying on Google CDN when deploying AngularJS apps.

In order for everyone to truly benefit from this, we need your help. While the CDN definitely speeds up the first download of angular.min.js file (you do use the minified file in production, right?!?). The biggest benefit the CDN will give us is providing the canonical URLs for all common AngularJS files, which are then served with far-future expiration headers and cached in browsers all over the world.

What this means is that if some app (for instance "Spiderman's Todo List") pulls angular.min.js version 1.0.1 from the Google CDN and another app (let's say "Batman's Recipe Book") by an unrelated developer pulls the file from the same url, both of these files will share this file once cached. So if a user uses both of these awesome apps, she will have to download the angular.min.js file only once.

Call to Action

If you run an AngularJS app in production, please instead of hosting the Angular files yourself, change your html file or script loader to use Google CDN urls.

We already approached Plunker and JsFiddle to do the same for their snippet templates. And will work with various teams at Google to use the Google CDN in their apps as well. And of course we are going to switch all * apps to use the CDN as well.

Google CDN Info

The latest version (v1.0.1) of AngularJS is currently already deployed on the CDN and we'll be adding newer versions as we release them.

The URL for the main angular.min.js file is

There are additional modules as well as non-minified versions (mainly for development and debugging with Plunker, JsFiddle and similar tools). To see the full list please check out the manifest file.

Tuesday, July 3, 2012

AngularJS Meetup June 2012 - Data-binding, HBO and Drag'n'Drop

The topics discussed at June's AngularJS meetups in Mountain View, NYC and Seattle included data-binding deep dive, how AngularJS is being used at HBO and why they picked it over Backbone.js and how Daniel Zen implemented drag'n'drop functionality in his AngularJS application.

  • 3m15s: Data-binding in AngularJS (Igor Minar)
    slides, plunk demo
  • 1h00m35s: AngularJS chrome extension (Igor Minar)
    blog/screencast, project
  • 1h04m39s: AngularJS at HBO (Charles Fulnecky)
    (waiting for permission to publish slides, check back in a few days)
  • 1h29m43s: Drag-and-drop photo library with AngularJS (Dan Zen)
    example, code demo

In July, we'll discuss dependency injection in AngularJS and how we built TextDrive and wReader Chrome Platform apps for Google I/O using AngularJS. We'll leave a lot of time for free-form discussion about AngularJS. So come ready with questions, demos and apps to show off or ask about.

Also, for the first time, we'll do a meetup in San Francisco, in addition to all the other cities.

Join the local meetup groups to be notified of dates and locations:

PS: The recording with similar content (but different audience questions) will be available in our youtube feed in a few days.

Monday, July 2, 2012

Introducing the AngularJS Batarang

Batarang Photo Credits: doranwa

For the past month, we've been working on a Chrome extension to help debug AngularJS applications. Today, we're introducing the AngularJS Batarang (a superheroic tool that lives up to its name). This extension features tools to help find and address performance bottlenecks, and visualize and debug applications.

We are releasing this early version because we'd love to get your feedback. Let us know what you think and what we should add or improve in the AngularJS Google Group.

Also be aware that this extension is built on experimental Chrome APIs, which means that you'll need Chrome Canary to use it. Additionally we can't upload it to the Chrome Web Store until the experimental APIs are available in the Chrome stable. Yes, we are living on the bleeding edge of Chrome extension development, but that's only because we want to provide you with features that can't be implemented in current stable Chrome version. It's just a matter of time until the needed APIs are stable, and installing the extension will be much easier.

Check out how to get the extension, then watch the tutorial below to get started.