If everyone is thinking the same, someone isn't thinking

Lori MacVittie

Subscribe to Lori MacVittie: eMailAlertsEmail Alerts
Get Lori MacVittie: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn


Related Topics: Cloud Computing, Cloudonomics Journal, Intel XML, XML Magazine, SOA Best Practices Digest, SOA in the Cloud Expo, Google Wave

Google Wave: Blog Feed Post

Facepalm: Google Wave Choice of XMPP Not the Death of HTTP

Google didn’t kill HTTP. Neither did Colonel Mustard or Professor Plum. In fact, HTTP is still very much alive

Okay, folks, it’s time to stop declaring the death of protocols/technologies prematurely. Please? Especially when such proclamations are clearly not representative of reality.

From ElasticVapor :: Life in the Cloud
In Google's announcement what I found most fascinating was the protocol they choose for the basis of their new realtime vision. It wasn't
HTTP but instead XMPP was selected as the foundation for this decentralized and interoperable vision. What this means in very simple terms is Google has declared the HTTP protocol is dead, an inefficient relic of the past. A protocol that was never designed with the requirements for the reality of a global realtime cloud. [emphasis added]

Not-again-picardIf you dig into the Google WAVE Embed API code far enough, you’ll get to a core RPC/gadget library that clearly indicates the API is still taking advantage of HTTP. It’s using XMLHttpRequest as expected and handles all the ugliness of setting up and handling the calls. Following is some code from the init function, but there are plenty of other places where HTTP requests are made and callbacks subsequently called, indicating Google is making full use of HTTP as a transport protocol for XMPP in order, one assumes, to support the browser as a client. The fact that Google offers an “Embed API” for browsers and touts the ease with which waves can be integrated into web sites and pages indicates broad support for HTTP without digging into the code, but it’s always nice to dig in and verify that something new and exciting isn’t happening “under the covers.”

function init(configuration){config=configuration
["core.io"]||{} var httpMethod=params.METHOD||"GET"; if(params.AUTHORIZATION&¶ms.AUTHORIZATION!
=="NONE"){auth=params.AUTHORIZATION.toLowerCase(); st=shindig.auth.getSecurityToken() }else{if(httpMethod===
"GET"&&refreshInterval===undefined){refreshInterval=3600

Code snippets have been extracted to show use of HTTP and is not the full code. My apologies for the formatting, but that’s the way it came out of the source file. And if you’re a stickler for meaningful variable names, do not go digging around in this one because it will make your head explode. Really. 

duh_canGiven Google’s extensive support for gadgets/widgets/whatever intended for use within websites then it only makes sense that they’d still be using HTTP because XMPP, while a great protocol, isn’t natively supported by any browser at this time. So Google has to have some way to ensure that browsers – the primary mechanism for communicating with services over the Internet today – could take advantage of its latest and greatest.

Google has obviously chosen XMPP for its application layer data exchange because it’s open, extensible, or maybe that’s just where the dart  landed when they discussed their options. But let’s face facts: HTTP is the de facto application layer transport protocol of the Internet and it’s highly unlikely that a company that’s built its fortunes upon that fact is suddenly going to turn around and abandon it. HTTP is the only almost-surefire method of traversing firewalls in any kind of bi-directional communication exchange between clients and servers, and routinely carries on its back any number of “layer 7+” protocols such as SOAP, JSON, and XML.

While XMPP can – and is – implemented directly atop TCP (and is in fact designed to be so) it often makes use of  HTTP for many of its core XML dependencies, such as the definition of namespaces and relevant schemas.

The browser is not going away and, in fact, seems to be gaining more and more support as the de facto client platform of the Internet and, by extension, “the cloud.” It is highly unlikely, then, that any provider of software – cloud or not – would even attempt to kill HTTP in favor of some other transport layer protocol.

The chance that Google, whose fame and fortune has been made piggybacked on HTTP and its use, would knowingly and willingly kill HTTP in its choices is even more unlikely.

Follow me on Twitter View Lori's profile on SlideShare friendfeedicon_facebook AddThis Feed Button Bookmark and Share

Related blogs & articles:

Read the original blog entry...

More Stories By Lori MacVittie

Lori MacVittie is responsible for education and evangelism of application services available across F5’s entire product suite. Her role includes authorship of technical materials and participation in a number of community-based forums and industry standards organizations, among other efforts. MacVittie has extensive programming experience as an application architect, as well as network and systems development and administration expertise. Prior to joining F5, MacVittie was an award-winning Senior Technology Editor at Network Computing Magazine, where she conducted product research and evaluation focused on integration with application and network architectures, and authored articles on a variety of topics aimed at IT professionals. Her most recent area of focus included SOA-related products and architectures. She holds a B.S. in Information and Computing Science from the University of Wisconsin at Green Bay, and an M.S. in Computer Science from Nova Southeastern University.