Re: [Opensim-dev] Standardizing OpenSim data formats

2009-04-30 Thread Justin Clark-Casey
Hurliman, John wrote:
 Thank you for taking a look. Looks like I all of the ExtraData for prims, 
 including sculpt/particles/flexi/etc. I'll see what OpenSim is doing for 
 saving script state and add everything in a second pass. I'm hoping that this 
 particular format captures everything needed to save simulator state to disk 
 for OpenSim and load it back up, while being easy to create and parse by 
 third party tools. Additional formats could be made later for more specific 
 tasks such as saving assets offline (where things like InventorySerial 
 definitely wouldn't matter).
 
 There could be a couple of different approaches to distinguishing between 
 different content types. OAR loading is already doing this for terrain with a 
 switch statement on the file extension. That works until two separate formats 
 both decide to use the .prim or .xml extensions. Another possibility would be 
 to require that all object serializations use the same format so a MIME type 
 could be read from metadata embedded in the file. Using the OAR index file to 
 store a list of filenames and content types could also work. This breaks some 
 of the nice things about OAR files though, such as opening one up in a file 
 viewer and dropping some content in without using special tools.

Yeah, being able to drop content in with existing tools or produce archives 
from scratch was one of the attempted aims 
with OAR, so inserting extra information in an index wouldn't be an enjoyable 
solution.

I guess using the terrain extension for identification isn't too bad as long as 
the format is centered around OpenSim 
(I'm not sure how far beyond that one can go since it is a mongrel format).  
But I can definitely see the problem with 
different object serializations, if such a thing comes about (as opposed to 
extensions to a single object serialization).

Inserting mime type metadata in files is a solution that sounds good to me.

-- 
justincc
Justin Clark-Casey
http://justincc.wordpress.com
___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev


Re: [Opensim-dev] Standardizing OpenSim data formats

2009-04-29 Thread Justin Clark-Casey
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
___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev


Re: [Opensim-dev] Standardizing OpenSim data formats

2009-04-29 Thread Hurliman, John
Thank you for taking a look. Looks like I all of the ExtraData for prims, 
including sculpt/particles/flexi/etc. I'll see what OpenSim is doing for saving 
script state and add everything in a second pass. I'm hoping that this 
particular format captures everything needed to save simulator state to disk 
for OpenSim and load it back up, while being easy to create and parse by third 
party tools. Additional formats could be made later for more specific tasks 
such as saving assets offline (where things like InventorySerial definitely 
wouldn't matter).

There could be a couple of different approaches to distinguishing between 
different content types. OAR loading is already doing this for terrain with a 
switch statement on the file extension. That works until two separate formats 
both decide to use the .prim or .xml extensions. Another possibility would be 
to require that all object serializations use the same format so a MIME type 
could be read from metadata embedded in the file. Using the OAR index file to 
store a list of filenames and content types could also work. This breaks some 
of the nice things about OAR files though, such as opening one up in a file 
viewer and dropping some content in without using special tools.

John

-Original Message-
From: opensim-dev-boun...@lists.berlios.de [mailto:opensim-dev-
boun...@lists.berlios.de] On Behalf Of Justin Clark-Casey
Sent: Wednesday, April 29, 2009 10:44 AM
To: opensim-dev@lists.berlios.de
Subject: Re: [Opensim-dev] Standardizing OpenSim data formats

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
___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev
 
___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev


Re: [Opensim-dev] Standardizing OpenSim data formats

2009-04-29 Thread Teravus Ovares
Sculpt/flexi/light are probably stored in the ExtraParams byte array.
 The routines for deserializing that are in PrimitiveBaseShape.
Unfortunately this is one of those 'legacy' things that ended up that
way.Someone, a long time ago, exposed these options as the
ExtraParams byte array and persisted it directly.   The two important
methods to use for this are:

void PrimitiveBaseShape.ReadInExtraPramsBytes (byte[]), and

byte[] PrimitiveBaseShape.ExtraparamsToBytes()

At the time, changing it would have broken all existing inventory.

I think particles have their own byte array.

Best Regards

Teravus


On 4/29/09, Hurliman, John john.hurli...@intel.com wrote:
 Thank you for taking a look. Looks like I all of the ExtraData for prims, 
 including sculpt/particles/flexi/etc. I'll see what OpenSim is doing for 
 saving script state and add everything in a second pass. I'm hoping that this 
 particular format captures everything needed to save simulator state to disk 
 for OpenSim and load it back up, while being easy to create and parse by 
 third party tools. Additional formats could be made later for more specific 
 tasks such as saving assets offline (where things like InventorySerial 
 definitely wouldn't matter).

 There could be a couple of different approaches to distinguishing between 
 different content types. OAR loading is already doing this for terrain with a 
 switch statement on the file extension. That works until two separate formats 
 both decide to use the .prim or .xml extensions. Another possibility would be 
 to require that all object serializations use the same format so a MIME type 
 could be read from metadata embedded in the file. Using the OAR index file to 
 store a list of filenames and content types could also work. This breaks some 
 of the nice things about OAR files though, such as opening one up in a file 
 viewer and dropping some content in without using special tools.

 John

 -Original Message-
 From: opensim-dev-boun...@lists.berlios.de [mailto:opensim-dev-
 boun...@lists.berlios.de] On Behalf Of Justin Clark-Casey
 Sent: Wednesday, April 29, 2009 10:44 AM
 To: opensim-dev@lists.berlios.de
 Subject: Re: [Opensim-dev] Standardizing OpenSim data formats
 
 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

Re: [Opensim-dev] Standardizing OpenSim data formats

2009-04-28 Thread Frisby, Adam
The parser needs to not barf if it sees an unknown element in there. Eg, ModRex 
mesh parameters, etc.

Ideally the SaveToXYZ function should fire an event on the object called 
something like say 'OnSaveRequest(out List??? extraData)' which allows other 
modules to save additional data. On-load/On-construct should probably also fire 
an event which allows the data to be restored.

Adam

 -Original Message-
 From: opensim-dev-boun...@lists.berlios.de [mailto:opensim-dev-
 boun...@lists.berlios.de] On Behalf Of Hurliman, John
 Sent: Tuesday, 28 April 2009 4:32 PM
 To: opensim-dev@lists.berlios.de
 Subject: [Opensim-dev] Standardizing OpenSim data formats
 
 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.
 
 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?
 
 John
 ___
 Opensim-dev mailing list
 Opensim-dev@lists.berlios.de
 https://lists.berlios.de/mailman/listinfo/opensim-dev
___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev


Re: [Opensim-dev] Standardizing OpenSim data formats

2009-04-28 Thread Hurliman, John
This is fine if your use case is to consider the prim format I posted as a 
canonical format for all virtual world objects, where everything will only be 
plus or minus a few fields from that format. I don't think that's going to be 
the case moving forward.

I would prefer to see content-types attached to formats. A Second Life prim is 
recognized as application/vnd.ll.primitive, while a realXtend mesh might be 
application/x-realxtend-mesh (or something to that effect). That way you can 
add support in the future for objects that share very little in common with 
Second Life prims. It also fits nicely into larger asset framework where you 
can do this type of standardization for notecards, clothing assets, etc.

John

 -Original Message-
 From: opensim-dev-boun...@lists.berlios.de [mailto:opensim-dev- 
 boun...@lists.berlios.de] On Behalf Of Frisby, Adam
 Sent: Tuesday, April 28, 2009 4:56 PM
 To: opensim-dev@lists.berlios.de
 Subject: Re: [Opensim-dev] Standardizing OpenSim data formats
 
 The parser needs to not barf if it sees an unknown element in there.
 Eg, ModRex mesh parameters, etc.
 
 Ideally the SaveToXYZ function should fire an event on the object
 called something like say 'OnSaveRequest(out List??? extraData)'
 which allows other modules to save additional data. On-load/On-
 construct should probably also fire an event which allows the data to
 be restored.
 
 Adam
 
 -Original Message-
 From: opensim-dev-boun...@lists.berlios.de [mailto:opensim-dev-
 boun...@lists.berlios.de] On Behalf Of Hurliman, John
 Sent: Tuesday, 28 April 2009 4:32 PM
 To: opensim-dev@lists.berlios.de
 Subject: [Opensim-dev] Standardizing OpenSim data formats
 
 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.
 
 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?
 
 John
 ___
 Opensim-dev mailing list
 Opensim-dev@lists.berlios.de
 https://lists.berlios.de/mailman/listinfo/opensim-dev
 ___
 Opensim-dev mailing list
 Opensim-dev@lists.berlios.de
 https://lists.berlios.de/mailman/listinfo/opensim-dev
___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev


Re: [Opensim-dev] Standardizing OpenSim data formats

2009-04-28 Thread Dahlia Trimble
I see merit of a prim type definition, but then again I believe the oar
format may have evolved as a mirror of the schema for the databases used by
OpenSim. It may complicate future code if the oar format deviates
substantially from these databases. Perhaps the format should reflect the
easiest way to transfer content from one OpenSim region to another,
regardless of content?

On Tue, Apr 28, 2009 at 5:24 PM, Hurliman, John john.hurli...@intel.comwrote:

 This is fine if your use case is to consider the prim format I posted as a
 canonical format for all virtual world objects, where everything will only
 be plus or minus a few fields from that format. I don't think that's going
 to be the case moving forward.

 I would prefer to see content-types attached to formats. A Second Life prim
 is recognized as application/vnd.ll.primitive, while a realXtend mesh might
 be application/x-realxtend-mesh (or something to that effect). That way you
 can add support in the future for objects that share very little in common
 with Second Life prims. It also fits nicely into larger asset framework
 where you can do this type of standardization for notecards, clothing
 assets, etc.

 John

  -Original Message-
  From: opensim-dev-boun...@lists.berlios.de [mailto:opensim-dev-
  boun...@lists.berlios.de] On Behalf Of Frisby, Adam
  Sent: Tuesday, April 28, 2009 4:56 PM
  To: opensim-dev@lists.berlios.de
  Subject: Re: [Opensim-dev] Standardizing OpenSim data formats
 
  The parser needs to not barf if it sees an unknown element in there.
  Eg, ModRex mesh parameters, etc.
 
  Ideally the SaveToXYZ function should fire an event on the object
  called something like say 'OnSaveRequest(out List??? extraData)'
  which allows other modules to save additional data. On-load/On-
  construct should probably also fire an event which allows the data to
  be restored.
 
  Adam
 
  -Original Message-
  From: opensim-dev-boun...@lists.berlios.de [mailto:opensim-dev-
  boun...@lists.berlios.de] On Behalf Of Hurliman, John
  Sent: Tuesday, 28 April 2009 4:32 PM
  To: opensim-dev@lists.berlios.de
  Subject: [Opensim-dev] Standardizing OpenSim data formats
 
  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.
 
  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?
 
  John
  ___
  Opensim-dev mailing list
  Opensim-dev@lists.berlios.de
  https://lists.berlios.de/mailman/listinfo/opensim-dev
  ___
  Opensim-dev mailing list
  Opensim-dev@lists.berlios.de
  https://lists.berlios.de/mailman/listinfo/opensim-dev
 ___
 Opensim-dev mailing list
 Opensim-dev@lists.berlios.de
 https://lists.berlios.de/mailman/listinfo/opensim-dev

___
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev