Adam Bosworth sort of lays out
some requirements for a “Web services browser”.
It’s really funny for me to read this, because I was struggling with exactly these
same questions back in 1996 or so, coming from some seriously hard-core CORBA work, but
while also being a big fan of what
we
called the “Universal Front End”; a chunk of software deployed everywhere which could
conceivably make use of every service out there. I spent a
good amount of time trying to figure out how to integrate CORBA, OpenDoc, and the
Web, in an attempt to yield what Adam’s asking for. A couple of years later, I
figured it out; the key was the Web’s uniform interface, that you didn’t need to
give services service-specific interfaces, you could accomplish the same tasks
by exposing the “data objects” (aka resources) of that service via a common set
of data-object-centric methods (what Adam refers to as “Add, Delete, Modify”,
but which might as well just be GET, POST, PUT, DELETE).
I can even clearly recall holding some of the same misconceptions he had. For
example;
Remember, in this dream, a web services browser is primarily interacting with information, not user interface.
Suggesting that today’s Web is about user interfaces. It isn’t, it’s precisely
about “interacting with information”, where each information source is provided a URI,
and the information is returned on a GET. It pains me to think back to when I didn’t
even understand that simple point, because it’s so darned obvious now. But I’m
comforted by the fact that gurus like Adam don’t get it, yet. 8-)
Adam earlier mentioned
that he was going to be talking about REST. I’m
very eager to hear what he has to say about that, given how RESTful his
description of a “Web services browser” is. I think he’s almost there.
And BTW, with respect to mobility, I do believe that an additional
constraint on top of REST could be useful. I actually wrote up a design
at Sun back in 1999 about doing Servlets as Applets, permitting application
code to be run in the browser. But Applet integration with the
browser was just awful at the time (I think it’s gotten worse since 8-),
making this basically infeasible. I should have investigated JavaScript,
but didn’t; Mod-pubsub does some of
the things with JavaScript that I couldn’t do with Java, in particular
intercepting submission of POST data.