Comparing ATLAS with YUI

I recently attended a introduction to the Microsoft AJAX libraries (‘Developing Compelling Sites and Applications’), formally known as ATLAS, and thought I’d compare that with some of the work I’ve done with the Yahoo User Interface (YUI) libraries.
At first you’d be forgiven for thinking that ATLAS is all about asyn’ communications between a browser client and the server. Of course you’d be correct, but it’s not all about that. As with many technologies its primary aims quickly gets lost in time. One of the reasons technologies such as AJAX came about it give the user a better, dare I say desktop, experience. One of the obvious problems with that is how to update a web page with new details from the server. This is where the popular view of ATLAS comes in, focusing on how the client/server communications work. However, the often overlooked part is how to do I change the client presentation given all the different sorts of browsers out there? To use ATLAS terminology this is known as the client lilbraries. Both YUI and ATLAS share this ground and this is the area I’m going to quickly review.

Object or UI Orientated?

Both libraries have implemented their own…style…for providing a more OO feel to the JavaScript code and to introduce some extra programming techniques, e.g. Namespaces. However, I believe that ATLAS goes quite a lot further. It allows you to register classes (including base classes), interfaces, enums etc. Although YUI has some of these features it feels very much more like YUI includes them to support the UI whereas ATLAS has included them to produce OO like code that happens to be used in the UI. A subtle but important difference, although if I can get the UI working without worrying about the code perhaps the Yahoo! way is better? If you’re a .net programmer now I’m sure you’d feel at home with the ATLAS client…code extensions(?).

UI Features

Both libraries have a very similar set of features but I’d say the YUI is more mature than the beta ATLAS counterparts. The YUI components just seem to work as you’d want. When I launch a panel in the YUI I get the full dialog experience with options for title bars, modal dialog, move controls, etc. Whereas for ATLAS I seem to get a square that I can move, but I’ve got to add the mouse pointer, the title, etc, etc. Another example is the Auto-complete edit box. The YUI and ATLAS variants do pretty much the same job, however the YUI includes a "selected" event, whereas I seem to have to code that myself for ATLAS. This means that I can quickly produce pretty slick UIs with YUI that do 90% of what I want. However, here’s the bind. When the YUI component doesn’t work as intended it takes quite a bit of fishing around to understand how the component works to sucessfully alter its behaviour. Whereas with ATLAS you learn that up-front and changes are easier because it works as you programmed it to. Ok, that’s a bit unfair, with the ATLAS control kit you can pretty easily wrap core features to become something more like what you need out of the box. However, I still come back to thinking that the YUI did almost everything I wanted without any need to customise it.


With my short time spent using both sets of libraries I’d have to say I’d probably invest my time in ATLAS. Mainly because it seems like the logical path to take when developing Microsoft based solutions, especially when you take into account ATLAS’ XAML like script, surely the tools will eventually all come together. However, at this very moment in time I would say that YUI wins hands down for its easy of use and feature set. I thought I’d struggled to get around animation bugs in the YUI, well I’d not seen the ATLAS implementation!

I’m sure over time both libraries will improve and it will probably just come down to the sort of coding you need to do. If you’re a Microsoft shop I’m sure ATLAS or Microsoft AJAX Client/Server/Control libaries will be for you.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s