[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