This is a draft idea I have been working on. I am posting it to provide context for some other ideas I had recently.
Update: it looks like Jon Udell and the guys at Freebase are already dreaming along the same lines.
Some interesting ideas result from REST placing restrictions on you.
These constraints make web objecs similar to file-like objects. In fact, the entire URL space is a little file-like. Things rest in only one place (canonical). Many names can point to the same thing (hard links). The same object can be copied in multiple spaces.
Maybe that is why you can re-invent old Unix tools as web services?
Now, what happens if we try to merge web-based tools with a extreme file-oriented operating system?
You might end up with commands like this:
$ mount http://amazon.com
$ grep 'agile & software' /mnt/w/amazon/books > agile-books
$ cat agile-books | cut -3 | uniq -c
...
# Result: the number of books about Agile software
development, counted by publication date.
...
Or this:
$ mount http://google.com/gmail
$ mount https://acanvas.wordpress.com/
$ ls /mnt/w/gmail/inbox
...
foo.eml
...
$ cp foo.eml $home/drafts/foo-reply.txt
...
edit foo-reply.txt
...
$ cat $home/drafts/foo.txt > /mnt/w/acanvas/posts/new
Or my favorite, this:
$ mount https://acanvas.wordpress.com/
$ cat $home/drafts/post.txt | wiki2html > /mnt/w/acanvas/posts/new
I know, I’m not the first person to think of this, And there are problems like “What does it mean to run ‘cp’ or ‘mv’ on a URI, or it’s contents?”. But it is a problem worth solving – one could ‘program the web’, in the most literal sense.