I will be out of town and offline for the next few days, but I wanted to give a quick update on the new project before I left.
I have some new heros in the technology world. They are the men and women that build rich browser-based client-side applications. First-rate examples include Gmail, the PressDisplay newspaper viewer, and the del.icio.us director . Also, rumor has it that we'll be seeing richer web email clients from Microsoft and Yahoo in the near future as well.
So why are these people my heros, and not the developers that build the back-end functionality that the applications depend on? Simply because building rich browser-based user interfaces is really, really hard. I've been architecting and authoring large-scale web applications for the past decade and I haven't run head first into anything this challenging since they day I started teaching myself C++ as an undergrad. Maybe it's just familiarity, but I rarely run across something I just don't know how to accomplish on the backend. In fact, I usually know of a half-dozen ways of solving most of those problems -- the biggest challenge is picking the best solution. But on the client-side I feel lost and alone in a dark forest knotted with thorny briars and twisty paths to nowhere.
Here's an example: The other day I decided to teach myself a bit about Ruby on Rails, the darling application framework du jour. I visited the website, read through the introductory material, skimmed the API, read an article or two published at ONLamp, and more-or-less felt that I could get something up and running with the framework within a few hours. The patterns were logical, the design followed contemporary best practices, and everything was extremely well documented. (It turns out that I didn't find a reason to personally use Rails, but I learned more than enough to comfortably make that evaluation.)
The AJAX world is still young. It has a long way to go before quality client-side application design is intuitive and scalable. Developers today still need to fumble around in the dark to find good solutions to common problems, and I'm sure that many get lost along the way. At the very least, the AJAX community needs to achieve the following:
- The major browser vendors need to agree on standards for asynchronous HTTP requests. I.e., there needs to be a universal XmlHttpRequest version 2 that does the right thing and does it well.
- The major browsers need to get their act together regarding XML and XSL. It's already 2005, guys. You've all had enough time to fool around. It's time to sit at the same table and support the same specifications with the same API.
- AJAX toolkit developers need to start thinking language agnostically with respect to their server frameworks. A good client-side toolkit should not make any assumptions about what is running on the server.
So am I giving up? Heck no. Like I said, I have some new heros. The people that are blazing the path ahead with applications like Gmail and PressDisplay are an inspiration to me. After jumping in head first I have to admit that if I hadn't seen it done, I would be skeptical that it could be done. But know what I want to do, and knowing that the possibilities are potentially limitless, I still can't wait to use all of these techniques in the new project.
I look forward to your comments. Since I'll be gone for a few days I'll set things up to publish comments without moderation and clean up any spam when I get back. Cheers!