[occi-wg] Is OCCI the HTTP of Cloud Computing?

Tim Bray Tim.Bray at Sun.COM
Wed May 6 12:33:32 CDT 2009


> About the choice of format, as much as I like XML and Atom specially,

Sorry about my low level of participation.  Anyone who has worked with  
Sun engineers knows that in the weeks leading up to JavaOne, we're  
typically useless for anything external.  In my case, I'm actually  
working on making a cloud-computing facility deployable.  But a bunch  
of things have gone by that I should really comment on.  [For those  
who don't know, I was co-editor of XML 1.0 and co-chair of the IETF  
Atom working group.  So I like XML and Atom too.]

1. Background

I am neither a supporter nor an opponent of this OCCI work.  My  
personal opinion is that the best time to do standards is after there  
is experience with interoperable implementations; so on that basis  
this is too early.  On the other hand, I'm aware that there may be  
market pressure for standards sooner than would be ideal, so this work  
might prove to be very useful.  I'm amused that there are at least  
three organizations working on cloud interoperability standards before  
we have any experience with cloud interoperability, but that's the IT  
business.

2. Sun Position

We are going to run with our CC-licensed REST API until we have some  
experience operating a cloud-computing service because we think we  
have a whole lot to learn about where the real pain points are.  That  
API is *not* frozen.  There are other parties also experimenting with  
using it as a front-end to various cloud-computing services.

BTW, I saw a remark in some earlier email about the Creative-Commons  
licensing being a problem for someone who might want to use some or  
all of our API spec.  That is very surprising to me; if it's going to  
be a problem for people we'd like to hear about it.  Our idea was  
simply to make it clear that we assert no intellectual-property claims  
on the API itself.

3. General advice on making standards

3.1 Dare to do less.  Consider Gall's Law.  Try to hit 80/20 points.   
Build "The simplest thing that could possibly work".  When in doubt,  
leave it out.  Essentially all the technologies that have enjoyed  
widespread rapid adoption on the Internet have been initially lean and  
mean, and were criticized for being incomplete and insufficient.   
Also, this increases the chances that you get it done in time to be  
relevant.

3.2 No optional features.  Every time, in a standard, you say "you can  
do this or you can do that", you lose interoperability.  The best  
example is SQL; the committee, whenever they came to a fork in the  
road, took both paths.  As a result, SQL compliance means essentially  
nothing in practical terms, and database vendors use SQL to lock in  
their customers.

4. Specific advice on multiple formats

Don't do it. Pick one data format and stick with it.  Look at the RFC  
series, which is the most successful set of protocol designs in the  
history of the universe.  They do not rely on interoperable models,  
they rely on agreement on what bytes I send you and what bytes you  
send me and what the meanings of the fields are.  Allowing multiple  
formats in general, or XML and JSON in particular, is actively  
harmful.  It is very easy in XML to create formats that can't be  
represented reasonably in JSON, and JSON carries a bunch of useful  
semantics (lists, hashes) that require extra work to specify in XML.

I have opinions on which formats are most useful for a cloud-computing  
protocol, but the choice isn't that important.  What is important is  
to pick one and stick with it.  See 3.2 above.

5. When to use XML

5.1 When the order of elements in the message might matter.

5.2 When you anticipate trouble dealing with i18n, and can't simply  
say "Use UTF-8".

5.3 When you have document-like constructs, e.g.

  <p>This <a href="/docs/policy"> is <em>important</em>.</p>
  <p>So is the discussion above.</p>

That kind of thing can't be represented sanely in anything but XML.

6. When to use Atom

6.1 When you are usually dealing with ordered collections of resources.

6.2 When it's essential that every item have a human-readable title, a  
globally-unique identifier, and a time-stamp.

6.3 When you have to wrap up document-like content, e.g. blog posts or  
HTML pages.

[Is it now obvious why we chose JSON?]

7. Suggested reading:

7.1 Architecture of the World Wide Web: http://www.w3.org/TR/webarch/

7.2 Modeling is hard: http://www.tbray.org/ongoing/When/200x/2009/04/29/Model-and-Syntax

7.3 On XML Language Design: http://www.tbray.org/ongoing/When/200x/2006/01/09/On-XML-Language-Design

- Tim Bray,  Sun Microsystems
   Distinguished Engineer,  Director of Web Technologies
   +1-877-305-0889 Sun ext. 60561 AIM: MarkupPedant, Jabber:  
timbray@{gmail,jabber}
   http://www.tbray.org/ongoing/ http://twitter.com/timbray









More information about the occi-wg mailing list