The browser as orchestrator

Modern Web browsers can be powerful tools for composing services

It’s been a busy week for my LibraryLookup project, which first launched in December 2002. In its original and still most widely deployed incarnation, LibraryLookup is a JavaScript bookmarklet that connects an Amazon book page to the corresponding record in a library catalog. The success of this technique got me thinking about themes I’ve pursued ever since: the dynamics of user-driven innovation, the protean flexibility of RESTful (Representational State Transfer) Web applications, and the dynamics of lightweight service orchestration.

LibraryLookup’s failures were equally instructive. As are other kinds of Web apps, library catalogs weren’t (and mostly still aren’t) designed for this kind of integration. It doesn’t require much, just an unencumbered search URL. Although some catalog vendors provide one, there are a number of others that still don’t.

The information architecture of the book world was another cause of failure. ISBNs don’t uniquely identify books. There’s one for each hardcover and paperback edition, so the ISBN number in your browser had to match the one you looked up in the catalog. On my blog, I wished for a service that would unify these variants, and about a year ago, the Online Computer Library Center granted my wish. It deployed an experimental service called xISBN that maps a book’s ISBN to the whole set for that book.

Although a bookmarklet can splice a pair of services together, it can’t combine three or more services without relying on some kind of external orchestrator. That was more than I wanted to build and support, so the project was relegated to the back burner for a while.

This week, however, I recalled that I already had one kind of orchestrator in place. It connects my Amazon wish list to my RSS reader, by way of a library catalog lookup. If a book isn’t available in the library when I’m visiting the Amazon page, but later becomes available, I’m notified via RSS. The orchestrator in this case is just a Python script that’s scheduled to run daily. It was easy to extend it to use xISBN, so I did.

I had earlier shown this RSS notifier in a screencast about client-side intermediation. There I also showed a Greasemonkey script that rewrites an Amazon book page on the fly when it finds that book in the library. Could the Greasemonkey script also be extended to orchestrate a collection of services?

Yes, and you can find the gory details on my Weblog. Here, I’ll just summarize my conclusions. First, I’m bullish on client-side intermediaries and orchestrators. For me, at least, this is the AJAX (Asynchronous JavaScript and XML) endgame. Service composition in the browser can, and will, nicely complement service composition in the cloud. I’ve done it at the WS-Light end of the tolerance continuum; Tibco General Interface shows it can be done at the WS-Heavy end as well. AJAX and BPEL aren’t in bed together yet, but mark my words, it’ll happen.

Second, I’m cautiously optimistic about the future of the kinds of advanced Web standards that can make this stuff really sing. The latest W3C APIs all worked well in Firefox 1.0, and they work even better in 1.5. Meanwhile the once-frozen Internet Explorer has thawed and is on the move again. I don’t know how far Microsoft will allow IE to go, but the Windows Live initiative gives me hope that the full power of the standards-based Web client may yet be unleashed.

From CIO: 8 Free Online Courses to Grow Your Tech Skills
Join the discussion
Be the first to comment on this article. Our Commenting Policies