Subject: [mmox] Jeeps and jungle roads

From: Catherine Pfeffer <[email-masked]>
Date: Thu, 26 Feb 2009 13:42:10 +0100

Lisa wrote:
> In a *standard*?  Cathy does not.  She flags an error.  The standard
> that would have produced the interoperability so far in your example
> would have said "bar is an integer".
>
> In fact, if there's agreed interoperability between Cathy, Meadhbh and
> David on the foo, bar and baz semantics, then none of them need to be
> annotated with their datatypes.

Yeah. That's strange, isn't it? ;-) But remind the Lindens are pioneers, and
pioneers don't always think in the conventional way ;-).

I'd like to take Infinity's defense on this one.

A standard is about agreeing. But a standard also needs to evolve. It needs
to address the case where some people haven't / don't want to implement 100%
of it. A standard needs to acknowledge the fact that everyone has not the
same user base and the same use cases. In the VW case there is the
additional requirement that, even inside of a single grid, the protocol
won't be the same on each simulator, and end users will also use viewers
that handle different versions of the protocol. Also, Virtual Worlds are
very young and the technology evolves at an incredible rate. That's a mess
(sorry for the word) that even HTML, another client-server protocol that has
evolved a lot over time, never had to face at the same scale.

I think that's why Lindens have designed something (binary LLSD) that beats
in flexibility even what modern XML does, while remaining very simple
(sometimes oversimplified, if we consider that all scalars are signed 32
bits). There is a price to pay for this flexibility and simplicity, for
example they need to send the data types together with the data, and they
have to define a whole range of on-the-fly conversions, but this price is
minor when compared to the benefits.

> try:
>     barval = int(xmldoc.getElementsByTagName('bar').data)
> except ValueError:
>     return new ErrorResponse(400, "Bad Request")

I think that's precisely what the Lindens want to avoid. They never want to
reject data, they rather attempt to do their best with unexpected data,
because the user experience must continue, even in a degraded mode, and
never have the viewer display "400 Bad Request".

If protocols were cars, then LLSD would be a jeep. Jeeps don't stop when the
road is not perfectly flat and unencumbered.

-- 
Cathy