Miško Hevery, a buddy at Google, has launched ‘Angular’ a clever unilateral enhancement to HTML to allow highly capable web apps to be developed quickly. By adding attributes to ordinary HTML elements he’s extended the capabilities by an order of magnitude. As this breaks all current browsers, the stroke of genius is that the before the page displays, there is some JavaScript that reads these non-standard attributes and essentially rewrites the page/DOM in a compliant manner. Here is a simple demo app (list of invoices) that he has made:

Here is the source for the same app:

Here is the same app running in the browser, but without the angular pre-processor:

Pretty smart huh? The extended attributes and the corresponding macro-language for their values are quite elegant. Miško has plenty of dynamic HTML effects working too, but I suspect that there are more to come. The server-side to Angular is a glorified hash-table for JSON fragments. Its all driven from the client side, so lazy creation of types and fields is part of the design.

For certain categories of web application, development costs have been massively reduced. Indeed, it could be that this stuff falls within the capabilities of non-programmers. At least if the documentation and examples are good. It is more ready for prime time than Google’s app platform AppEngine, which still struggles to be a pleasurable experience for developers. In a way it is what AppEngine should have been initially. I am also reminded of the initial versions of Cold Fusion (before ASP and JSP) in 1996, that were instantly popular given the cgi-bin application complexity that preceded it. Clones of this idea will leap into being, and richer services and capability will emerge.

In terms of tools support, Angular is already compatible with DreamWeaver. Whereas it took Adobe (Macromedia) a couple of a years to make it compatible with JSP. Dreamweaver barely notices that there are extra attributes, and perfectly preserves them during development.

Angular suits internal applications more than million user internet portals. It perhaps is pitched at the other end of the rich UI spectrum than GWT and Cappuchino, and will narrow the gap some more before its usurped by some other technology. Go play with it yourself and getangular or watch the screen-casts.

Note: this is the second ever blog entry on AngularJS, with Misko’s being the first the same day: Hello World, <angular/> is here


September 28th, 2009