[Opensim-dev] .net serialization of SOGs

Justin Clark-Casey jjustincc at googlemail.com
Sun Oct 10 23:45:14 UTC 2010


On 09/10/10 19:05, diva at metaverseink.com wrote:
> Dear devs,
>
> I'm pulling my hair here with the serialization of scene objects. This
> is horrible! Using .Net serialization for something as important as this
> is the worst idea ever. We're completely frozen. I'm trying to add an
> additional field for the creator info, and I'm stuck in all sorts of
> ways: I can't compute the value of that field at serialization-time, and
> then there are the issues of compatibility with previous versions of the
> SOP class.
>
> I'd like to understand all the implications of doing an entirely
> different serialization procedure, one that does not use reflection, and
> that allows for processing-during-serialization. What will break, and
> therefore needs fixing?

Grovelling back through the archives, I found the e-mail where I proposed this very thing back in June 2009!

https://lists.berlios.de/pipermail/opensim-dev/2009-June/006805.html

And here's the old patch which partially implemented write.

https://lists.berlios.de/pipermail/opensim-dev/2009-July/006954.html

As you wrote later, some equivalent code was later put in libOMV, though I would test it carefully (at the time I 
vaguely recall thinking that it didn't deal with some serialization cases, but this may well have been addressed).

I'm not excited about whether this code remains in libOMV or is placed in OpenSim if it's going to act as a legacy 
format in some way.

As far as I recall, there are no implications of doing this manually as long as the XML ends up being the same.

>
> I understand all archiving related to previous versions will break, so
> we need to keep supporting the existing serialization 'disease' for the
> foreseeable future. I also understand that TPs/crossings between sims
> that talk different SOG serializations will break, but that's not so bad.

If the SOG serialization is going to change in an incompatible manner, I absolutely need to bump the OAR/IAR version 
numbers at the same time in order to maintain confidence in the archiving.  I also need to write the code to stop old 
OpenSims trying to load these new versions.

Please can we co-ordinate this in a branch?

>
> Anything else I should be aware of before I go off and redo this?

Although .net auto-serialization is fatal if you want to make type changes to existing fields, it has been very 
convenient for adding new fields, since extraneous xml elements are simply ignored on deserialization.  I think it's 
almost essential that a new format behave in the same way.

Also, are you going to put version numbers in the new serializations so that any future incompatible can be dealt with 
in some manner?

Is it worth considering whether other virtual environments might store completely different object serializations?

For any new format, I agree with Dahlia in that something OSD-like may be worth looking at, perhaps just a simple map as 
I was considering for the 'dynamic attributes' in SOP.  In fact, this could allow that to fit in nicely.

-- 
Justin Clark-Casey (justincc)
http://justincc.org
http://twitter.com/justincc



More information about the Opensim-dev mailing list