Yahoo’s UI library and the like

I’ve always had mixed feelings about Yahoo!.

I liked them in the earliest of days, when it was just a little directory of stuff on the www (as I remember calling it). I got fairly turned off when it became hugely successful, because of its “vibrant” esthetic and extremely commercial focus (ads everywhere!). I was curious when they acquired one of my favorite companies, Ludicorp/Flickr. I was scared when I saw Terry Semel present at Web 2.0, and he made it so clear what they saw as their role as an advertising company. I was impressed when I understood the diversity and richness of their business model (selling nikes for virtual avatars in online games? wow/sigh). I’ve somehow always felt slightly funny about their developer network promoting talks at technical conferences (not sure why!). When they bought good companies, the people behind them seemed to disappear behind the firewall. So, overall, wary.

This last little while I’ve been very impressed with what they’re doing on the web development front. Their YUI library is nice. Publishing and maintaining CSS stylesheets to help cross-browser design is a thoughtful touch. Their cheatsheets are an elegant combination of thoughtful content, smart page layout, and beautiful design (I immediately printed them and pasted them into my new notebook, only to have them be made obsolete the next day with a new release…). Their design patterns collection is a Good Thing for the web. I’m looking forward to playing with YUI more.

I had a hard time admitting how good YUI was because of cognitive dissonance — For a while now I’ve been a fan & promoter of the Dojo Toolkit, which was the first toolkit I ran into which took both JavaScript and software engineering seriously. Dojo’s scope is bigger than YUI’s current scope, but it suffers from a lot of the usual challenges of open source projects: engineering is valued more than polish, there’s not enough attention paid to graphic design, and it’s tough to do effective product & project management when all you have are volunteers. There are still bits of Dojo that YUI doesn’t seem to compete with, such as the offline storage wonder, the undo management infrastructure, the exciting-if-it-really-works dojo.gfx graphics layer. Still, it must be disheartening for the Dojo folks to compete head-to-head with a company with the resources of Yahoo.

Luckily, as a user, neither I nor anyone else needs to pick one or the other (plug: Komodo 4 will ship with built-in support for both, among others!). With some caveats, it should be possible to cherry-pick the bits from these or other toolkits (yes, I know, prototype.js-based toolkits don’t play well with others often).

Now if someone could figure out how to make flash plugins play well with the event system, we’d really be onto something…

1 Comment

  1. Thanks for the tip on the YUI widgets. I think other libraries do the components better, but the widgets conform exactly to how I would choose to implement each widget.

    My main issue from dojo is that the quality of the pieces varies wildly from the gems like,, and, to the passable like dojo.editor2 and dojo.charting (which just needs time to mature and love), to the duds like dojo.widgets (the system isn’t bad, but I’ve had to gut and rewrite virtually every widget I’ve used).

    I have similar feelings about MochiKit, where I love everything in 1.3 and dislike the scriptaculous port. The nice thing about that is that I’m willing to write my own version of all the scriptaculous stuff. I still have to write widgets for MochiKit, but it’s not so bad because I’m not expecting anything. I’ll probably port over the Yahoo stuff and mochify the API.


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 )

Google+ photo

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

Twitter picture

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

Facebook photo

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

Connecting to %s