Re: [mmox] XML serialization

Jon Watte <> Mon, 23 February 2009 23:58 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id DAAF03A6A7F for <>; Mon, 23 Feb 2009 15:58:28 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.455
X-Spam-Status: No, score=-1.455 tagged_above=-999 required=5 tests=[AWL=-1.022, BAYES_00=-2.599, FF_IHOPE_YOU_SINK=2.166]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id bAJecQ+llgST for <>; Mon, 23 Feb 2009 15:58:27 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id BDA173A67B4 for <>; Mon, 23 Feb 2009 15:58:26 -0800 (PST)
Received: by gxk22 with SMTP id 22so5972760gxk.13 for <>; Mon, 23 Feb 2009 15:58:44 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:cc:subject:references:in-reply-to :content-type:content-transfer-encoding; bh=ix2EpIqdh8zwJ0osphx/wfarxwc3huG4fBy/TRMYLbM=; b=CYEWxuyyygkYqgXdL53EnpJ6CqINlgRmX8SGyrxyyLpZiS5SgkMHF3PiSXwJ36+/lx xOTXkjgQeboqpE3Oc4++fwJN/M86HGZ5N4fSLxJLL6iszkHRfUNcZlkUqMIbgbRVcWwk Qagg/4MQeKyU2YwINJPZ7X1xR9C2HpEBJLxcE=
DomainKey-Signature: a=rsa-sha1; c=nofws;; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; b=uerqb1qDRAAQ9s7vZJId5UJ+EquNbIiAEgVVyQA+Xom6KcovlA1R575irLVytHnbGX tQk7Hr5tiNAM7fARaM+RkvPJmQcfTjgsyo9HXaazBUvh6ELSME4CmJQPF3G0aBhDET8G zIpxj5/fqKAeUS01Zlxm8o5sSdpMGfuFEoZM4=
Received: by with SMTP id a6mr4907474ane.76.1235433523235; Mon, 23 Feb 2009 15:58:43 -0800 (PST)
Received: from ? ( []) by with ESMTPS id c40sm9126665anc.48.2009. (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 23 Feb 2009 15:58:42 -0800 (PST)
Message-ID: <>
Date: Mon, 23 Feb 2009 15:58:40 -0800
From: Jon Watte <>
User-Agent: Thunderbird (Windows/20081209)
MIME-Version: 1.0
To: "Meadhbh Hamrick (Infinity)" <>
References: <> <> <> <> <>
In-Reply-To: <>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
Cc: "" <>
Subject: Re: [mmox] XML serialization
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Massively Multi-participant Online Games and Applications <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Mon, 23 Feb 2009 23:58:28 -0000

Meadhbh Hamrick (Infinity) wrote:
> our system works fine with the new serialization. this would require a 
> non-zero amount of resources be spent on deploying the change. ergo, 
> we would need some justification for making the change.

Do you agree that any kind of generally suitable interoperability will 
require engineering effort, sometimes significant, on the part of all 
possible implementors, including Linden Lab or the Open Sim developers?

You do not have to update your internal serialization at all just 
because we, collectively, design a serialization scheme with 
differences. You don't need to do any work until and unless such time that
1) there is an actual standard, or at least a concrete proposal
2) you decide that supporting this standard is in the best interests of 
your company or group

> but may i ask? why do we need to change something that we know works, 
> is already deployed, and seems to work without flaw?

Because it can work better. It can be more compact, it can better suit a 
variety of parser styles, it can be easier read and written by human 
beings, it can be easier expanded or adapted, it can more easily be 
processed using fast hashing-based (order independent) processing methods.

If your argument is that "while I understand that some other people feel 
that direction X is better, we are currently using direction Y in the 
Second Life implementation, so I think Second Life's way should prevail" 
then you're not actually signed on to the generally applicable, vendor 
neutral interoperability standard bandwagon.

> * can we do a bake off?

Once we're done with a serialization format that fulfills all the 
necessary requirements, I believe there won't be anything "else" to 
bake-off against.
See here for some requirements I would put on a standardized format:

I will copy and paste for the convenience of those who don't like 
out-of-line references:

I have looked at the proposal, and see a number of issues that I think 
need to be addressed before the proposal can be used as a general 
interoperability standard.

! Proposal Name

The name probably should change to something like "VWSD" to avoid any 
accusation of vendor bias. I trust we can just get this done without too 
much argument about specific naming.

! Large and Small Integers

The "integer" data type needs to be more flexible. 64-bit integers are 
important, and you can even view UUIDs as 128-bit integers. I propose 
that integers can be specified as a specific bit width, and signed or 
unsigned. If you want to stay byte aligned, the set of allowable sizes 
may be limited to 8, 16, 32 or 64. I additionally propose that a 
Variable Length Integer Encoding be specified.

! Float32 and Float16

Reals should come in at least two forms: 64-bit and 32-bit. The reason 
is that localized position relative to some center usually is best 
described as a 32-bit float. Additionally, mesh data is generally 
described as 32-bit float vertices, rather than 64-bit. There may be 
some additional benefit in supporting 16-bit floats, for things like 
normals, color values or direction vectors.

! Compact Binary Serialization

There needs to be support for a binary serialization that does not 
contain embedded type or key references, but instead use explicit 
external schema. Thus, to describe a "quaternion" you would simply 
specify four fp16 (or fp32) values in sequence, with no specific type 
information. This can extend to describing general entity property 
values: the type information can be carried by the schema for the 
entity, and does not need to be encoded in the actual data. Allowing 
external schema leads to significant bandwidth savings during transmission.

! XPath Friendly XML

The XML encoding needs to be XPath friendly, and friendly to introducing 
or adapting new types in a negotiated higher-version schema. Generally, 
this means that it looks something like:
<value key="success" type="boolean">true</value>
<value key="cpu_temp" type="float32">67.0</value>
The currently proposed serialization is poor because it's not easy or 
efficient to find specific values you care about by key; it's also 
inefficient because it requires any new data types to update the XSD 
schema, because each type is a tag name.

! Machine Parsable Descriptions

It is likely that the language describing the serialization structures 
will actually be read by machines at runtime, rather than used to 
generate code. This is definitely true for things like proxy servers and 
systems that treat entities as "generic collections of data" but want to 
have some understanding of the underlying data for display, translation, 
or other processing. While it would be possible to write a parser for 
the current LLSD syntax, introducing a new language syntax into the 
world doesn't seem warranted. I propose that the data structure 
definition language be moved to some XML schema.