[Opensim-dev] Standardizing OpenSim data formats

Justin Clark-Casey jjustincc at googlemail.com
Wed Apr 29 17:43:42 UTC 2009


Hurliman, John wrote:
> Currently, OpenSim server<->server communication is primarily made up of .NET XML serialization. As a side effect of this, I've seen the wire format between simulator and grid services or grid service to grid service change many times since I started working on backend services. The OAR file format has also changed at least once while retaining the same version number because the underlying prim XML format changed. I am working on a libomv OAR reader/writer at the moment, and trying to deal with hacks for supporting pre and post change OAR files.
> 

OAR was intended more as a packaging mechanism than a complete format.  This is partly why I didn't bump the version 
number when the serialization format changed.

In principle, I think it would be good if the serializations themselves identified themselves as one format or another 
(as I think you've already indicated in a previous post).  Then one could have different serializations (e.g. mesh) 
without having to produce different OAR structures or different formats entirely.  I'm not sure how pragmatic this is - 
perhaps some indication of the format of serialization could be placed in the OAR control file (though even then there 
might be regions containing multiple different serializations).

The XML serialization 'XML2' format was used for objects in the OAR partly just because it was already there and it 
worked, even if it is pretty horrible.  I feel that one nasty point about it for offline content transfer is that it 
doesn't contain any versioning information to identify it (necessitating heuristics I guess).  I feel that there may 
also come a point where an offline format will diverge from an on-the-wire format (e.g. inventory serial seems 
unncessary for offline purposes - though many other things will remain for the backup use case as opposed to the 
transfer to some one else use case).

> To increase compatibility between versions of OpenSim and with third party services I'd like to propose a standardization of (eventually) all over-the-wire communication in OpenSim. I started with an attempt at an LLIDL definition for primitives:
> 
> http://opensimulator.org/wiki/PrimitiveFormatProposal
> 
> Is anything missing? Does this look like a reasonable start?

On a quick look through, I don't see any attribute for sculpt information.  At the moment this is stored inline in the 
serialization.  Also, I suspect state information for scripts may have crept in recently (not sure).

Also, at least for archiving purposes, the creator id will at some point become a string rather than a uuid in order to 
allow identification information to be retrieved on grids other than the one on which the archive was saved.

-- 
justincc
Justin Clark-Casey
http://justincc.wordpress.com



More information about the Opensim-dev mailing list