On Thu, May 7, 2009 at 1:17 AM, Tim Bray <Tim.Bray@sun.com> wrote:
On May 6, 2009, at 1:44 PM, Alexis Richardson wrote:

>   Failure is a possibility and for this reason
> we have set ourselves a very tight schedule so that if we fail we can
> fail fast and the interoperability community can learn from our
> findings.

FWIW, I've never seen a non-trivial language/protocol/API/standard/
whatever designed in less than a year, elapsed.

True. I've been working on the problem for about a year now so I guess that counts for something, plus we're trying to find the consensus of a large and growing number of existing APIs so we're not starting from scratch. If this trivia doesn't derail us I'm expecting to have a rough spec and reference implementation demo in place in time for my Europe tour starting Monday week.
 
> Cool - can you or they contribute some use cases please?   We needs
> dem use cases :-)

Good point.  We have internal ones, had actually never thought of
publishing them.  I'll see what I can do.

+1 that would be awesome - even if they're deidentified.
 
>>  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.  ....
>
> That sounds like a protocol mindset - consistent with your RFC comment
> above.  But is OCCI a protocol?  Or is it an API?  What are your
> thoughts here?

I don't understand the difference, to be honest.

The problem is that when you say API people expect object models and
methods, and history should have taught us that those are very
difficult to make portable across networks.  I confess to having a
protocol mindset since I'm a Web guy.

I can see some value in running a knife down the middle... hence the talk about OCCI Core vs OCCI IaaS - where the former is a protocol ala HTTP (actually based on HTTP + Atom + magic fairy dust for search, caching, etc.) and the latter more an API that animates the resources with controllers/actuators, network and storage links, attributes, etc.

> More generally: What is the right way to make a cloud interface more
> like a protocol?

My opinion: Be RESTful, to the extent possible.

Agreed, no point redoing what HTTP's already done.
 
> How would you recommend we deal with cases where XML is well supported
> but JSON is not well known?
>
> * .NET
> * Many 'enterprises'

Hmm... if you're in Java or Python or Ruby or of course JavaScript,
it's super-easy to consume and generate JSON.  If C# & friends are
behind in this respect I can't see it staying that way for very long,
my impression is that those guys are serious about keeping up with the
joneses.

There's some ASP.NET stuff and some 3rd party stuff but it's certainly not burnt into the DNA like XML is.
 
> If we 'went with JSON' then would it be plausible to have XML adaptors
> for non-JSON settings?

Specifying the mapping is extra work.  I suggest that YAGNI.

I'll check it out.
 
> What about plain text - any view on that?

Well, in our API, it turned out that the things we wanted to send back
and forth were numbers, labels, lists and hashes.  Without exception.
JSON had everything we needed built-in and nothing we didn't need.

> Do you think Atom is a bad thing for our use cases?

I'm not sure; I enumerated the things that I think would make Atom
attractive.  For our use cases in the Sun API, it didn't seem like a
terribly good match.

I definitely want us all to be on the same wavelength whatever we end up doing, but I also want to avoid closing doors unnecessarily (e.g. for enterprise/private cloud deployments). Sun Cloud API does look particularly good for public cloud (certainly better than the incumbent).

Sam