I first saw this video on reddit about a year ago, a famous talk by Alan Kay given about 11 years ago. I’ve watched it many times and each time understanding it a bit more.
[googlevideo]http://video.google.com/videoplay?docid=-2950949730059754521[/googlevideo]

The first time I watched it, I found his proposal that every object on the internet should have an URI and/or an IP address interesting (43:00). This was totally opposite of what I was doing at the time. We were near the end of the development cycle on BioShock and memory optimization was in full swing. Objects in Unreal engine are pretty heavyweight so we spent a lot of time stripping out unnecessary variables and functionality from the base UObject class.

Since last year, I’ve learned a bit more about web technologies and now see what Alan Kay was talking about is realized by REST style web services. A little bit later in the talk (52:30), Alan expounded a bit more about interoperability on the web and says “[object capability discovery] is going to be the critical thing to automate in the next ten years,” which “allows an interchange of deep information about what objects think they can do.”

This has obviously not happened. Anyone that has to write against web services like Amazon, Facebook or Flickr knows a lot of trial and error is needed to make anything work, at least thats been my experience trying to use their REST api. Alan proposed creating a “universal interface language” to exchange this information, which sounds a little like WSDL, but what about automatic discovery of services? I haven’t found a protocol for REST introspection like there is for XML-RPC.

If the strength of REST is its simplicity and low barrier to entry, than perhaps introspection and automatic discovery would add too much complexity. Since most web services provide client libraries for most popular languages (PHP/Java/Python/Ruby) all this REST vs XML-RPC vs SOAP can be hidden from the programmer.

Yet I can’t help but think about the last advice Alan gave in the talk, “play your system more grand than it is right now.” Wouldn’t it be grand if a client lib for an object can be automatically created given its URL? Wouldn’t it be grand if your application that upload to Flickr can upload to Smugmug just by changing the URL?