Delegated Computing and the Future of the Web
Robert Scoble has written an insightful new post called Why if you miss Siri you’ll miss the future of the Web. I'm biased, of course, but I find the topic important, and I am enjoying the ensuing discussion in the comments enough to respond in this blog entry.
Dynamic Service Delegation
There's one subtle point, not immediately obvious from just using the current Siri application, that I want to call out -- dynamic service delegation (also called "Delegated Computing"). As BerislavLopac mentions in the comments, mashups are not new (plenty of developers stitch services that make sense together). YahooPipes added a community flavor, where developers could post and discover and modify other mashups, a great idea, and I was disappointed when this service was de-prioritized at Yahoo. However, in both of these cases, an individual developer is still writing logic: "go to this service, then take this value and pass it to this service. If this condition is true, call that one...", etc. Adding a new service or changing logic in how services combine requires code-changes -- and this will not scale to thousands or millions of services.
Meta-data Driven
What if Google implemented its search by having a large list of human-entered logic, such as "if someone queries for restaurants, show these URLs in order" -- even if you used the power of the community to create this big list (e.g. like OpenDirectory or the early human-powered Yahoo directory), you'd get a pretty static set of functionality, very impersonal results, with a lot of work. But search engines like Google don't use hard-coded logic, rather they take an algorithmic approach which automatically reasons about which URLs should be shown based on meta-data properties of that URL, such as PageRank popularity.
Algorithmic Combination
At Siri, we believe that the next generation of the web will include dynamic "indexes" of web services, much like Google's index of web pages, with "do engines" that reason about how to delegate requests not only to individual services, but to combinations of services based on meta-data descriptions of those services. An example: Siri today has knowledge of about eight different restaurant providers, and if you ask "italian food tonight at 8pm", you get a very different logic flow than if you ask for "best lasagne in sf" -- and there's no hard-wired logic instructing this to happen, it's driven by an algorithm + meta-data properties about each service. In the first case, OpenTable would be the highest rated provider because the salient point is availability, and in the second, we might go to Allmenus.com to check lasagne is on the menu, and then combine that information with ratings from Yelp or Gayot or some other user-preferred rating service. People in different geographies or with different preferences will get different flow behaviors tailored to them -- and this scales as you add new services with different capabilities and qualities. The process of defining the meta-data description for a service is not fully automated, hence the tools Robert references, but once a service definition has been added, most of the logic of how this service combines with others is driven by the algorithmic engine, resulting in very personalized logic flows driven by the underlying intent of the user request.
No Comments