Script locally, publish globally

Groove Web Services holds promise

InfoWorld Test Center Director Steve Gillmor and I have always thought that Groove is the tool we ought to be using to coordinate our team's ongoing mind-meld, aka the InfoWorld editorial process. It hasn't worked out that way, though. I used to blame that on Steve, who has little use for communication that doesn't show up as text (in the body, *not* an attachment!) of e-mail messages delivered to his BlackBerry.

As for me, I was perfectly willing to haul my ThinkPad everywhere ... until Apple's OS X-powered TiBook lured me from the straight-and-narrow, that is. Can a BlackBerry junkie and a TiBook renegade get any collaborative mileage out of Groove? Assuming that Windows PCs continue to figure prominently in our technology mix -- as they most assuredly do -- the answer appears to be "yes," thanks to Groove Web Services (GWS) [1].

Groove itself is, of course, a bundle of really useful services: secure shared spaces, ad-hoc group formation within or across corporate borders, instant messaging and presence, reliable data synchronization, and graceful support for offline or firewalled endpoints. For the longest time, we've envisioned using Groove to collect key sources of information, create and discuss work-in-progress, and transmit results through various channels. Unfortunately the Groove developer's kit focuses heavily on creating tools that plug in to the Groove transceiver. That is a craft with few masters, and after a long frustrating day trying to get to "Hello, world" I realized I am not destined to be one of them.

A few months back, I participated in an online experiment with a bunch of Groove developers. The idea was to explore synergies between the private world of Groove shared spaces and the public world of Weblogs. One of the developers, Hugh Pyle, injected into our space a Groove tool he'd written that subscribes to RSS channels and displays their (linked) headlines.

This was different from my normal experience of reading RSS channels -- and it was different in exactly the way that defines Groove. Management of the list of subscribed channels and awareness of the information flowing through them was a team process. The source code for the tool wasn't available, though, and re-creating it wasn't going to be easy. Things that I could do in my sleep, using an Internet-aware scripting language like Perl or Python, were really hard to accomplish using the GDK.

Fast-forward to Thanksgiving weekend. I'd sworn to stay off the computer, but when the Groove 2.5 beta CD with the GWS bits landed on my doorstep, I couldn't resist. There were two GWS demos included. One is a .Net WinForms app written in C#. It uses the GWS SOAP APIs to traverse your identities, their shared spaces, (some of) the tools in those spaces, and the data belonging to the tools. Then it dumps everything into a navigable tree control.

The other app was, to my delight, a Perl script that uses SOAP::Lite and some GWS-encapsulating Perl glue to perform command-line traversal and also editing. You can use it, for example, to enumerate and fetch files stored in a shared repository (Files tool), or create and edit messages in a forum (Discussion tool).

I haven't been playing with GWS for long, but progress so far is encouraging. I've written C# and Perl versions of an agent that monitors a Groove discussion forum, watching for references to URLs. When it sees a message containing an URL, it fetches that Web page and stores it in a Files repository. Then it updates the message, in situ, to indicate that the referenced page was retrieved and is stored locally.

"Local" is a funny word in this context, though. The C# and Perl programs talk to a local SOAP listener which mediates access to the Groove engine. But of course, as soon as a file is stored in the repository belonging to my instance of the shared space, it synchronizes to yours too. Script locally, publish globally. Except, of course, this isn't global; the scope is precisely the virtual team invited into the space.

None of this will make Steve happy, mind you. He'll want to be notified on his BlackBerry when an item of interest is added to the repository. What's more, he'll want to be able to e-mail a message into the discussion forum and have its arrival trigger the fetching of a file into the archive. I haven't done these things yet. But I am 100 percent certain that I can, pretty easily, because, as I said, I script that kind of stuff in my sleep. A few columns ago I wrote:

"Real business process integration will mean deploying a mixture of heavy, medium, and lightweight services in the cloud, on the intranet, and even (in peer-to-peer mode) on the desktop. Modern scripting languages, the duct tape of the Internet, are SOAP-capable and stand ready to deliver." [2]

Enterprises are held together by scripting, in ways that we sometimes don't like to admit. But there's no shame in it. Wear your duct tape proudly. It's getting more useful all the time.

1. http://www.infoworld.com/articles/pl/xml/02/11/04/021104plgroove.xml

2. http://www.infoworld.com/articles/op/xml/02/09/26/020926opwebserv.xml

Copyright © 2002 IDG Communications, Inc.