When will Web Services become like Unix's Software Tools?
I was struck by a thought while I was reading the first section of the Linux Cookbook that Web Services, if they agreed on some sort of input/output standard, could operate much like the Unix toolset with stdin and stdout. I'm not the first person to think of this, but because I'm working with both XML and Web Services lately and now am starting from scratch learning a new distrib, the parallels dawned on me again. I think when I first heard about this notion a few years ago, I couldn't really see the parallels because I saw a large division between the concept of software and service. But that's changed now, I think - the lines have blurred because the Internet has proven its reliability.
I'm a Tim O'Reilly convert when it comes to the idea that Amazon.com is really just an application, just like Microsoft Word. There's definitely the fact that it's not totally under my control, but if you pay attention to Microsoft's legal stuff, you really don't *own* that copy of Microsoft Word either. It's just a license. But the fact is that as a user, you use both regardless of their licenses, just like you use command line tools. This is a concept that took me a while to accept, since the classic Unix tools like grep or vi are both open and free. Amazon.com and Word are proprietary, and therefore don't really fit the model as well. But as a user, honestly, they're the same to me.
The other problem is that Web Services are more like SQL Queries and data-mining than calls to grep. When I use Amazon.com's services, I don't really send them much info, I mostly just query their database and the data becomes available to me via XML. I can get various bits of info, but it's really just a big database in the sky. The Map services are also like that, but the database is filled with streets and such.
But how cool would it be if there was some standard way of passing one XML dataset from one web service to another? You could then pass the result stream from Amazon to some other web service - say Maporama's map service - and then pass that through another web service - say eBay's auctions - and get as the results a map of the most popular electronics being sold then auctioned in your neighborhood, for example. That's just one example, I'm sure there's some other cool stuff out there.
I guess you can sorta get these results already by just doing three separate calls and organizing the data yourself. But I'm thinking about cooler stuff you could do on a personal level as well. If you think, like I do, that RSS is a web service, that means that there are already millions of personal web services out there already. And there are also companies starting to build on those services like Technorati and feedster, and in fact those guys are even using Amazon.com's service as well to find popular books hidden in the RSS feeds. But there's *more* synergies out there to be found.
Part of this synergy boils down to formats. RSS enables cool stuff to be done with it because the people and services who are using the data know the what structure to expect the data to be in. So that's definitely the first hurdle: Web Services will become more like Unix's Software Tools when there are enough common XML Schemas out there to support a certain level of interaction.
The second is the fact that most Web Services right now are output-only. They're missing the second part of the Unix way that made that OS so great. Imagine the possibilities if there was the option of input as well? Suddenly, you could build a web service that "did one thing, and did it well" and allow others to both pass info in, and get info out of that service. That's when we'll really start to see the "InternetOS".
Maybe this is what's wrong with the Semantic Web - they're trying to hard to organize all the data out there in too structured of a way. And maybe that's why suddenly RSS is becoming so useful, because it does little more than note the basics of any piece of info: the time it was created, it's source, a handle, and a chunk of data as the payload, mostly in XML itself. Now we need the second phase of this. Atom almost has the right idea with their RESTian web services - it's not XML-RPC or SOAP that's going to enable the synergies - it's being able to pass the output from one web service query directly to the next in the chain.
I can see it now oh-so-clearly. It's all about Personal Web Services - with open specs and defined input and output methods mimicing on a global scale the functionality you find on your local OS. That's it, I grok it. That's where the next revolution in computer science is going to come.
-Russ