On 09/10/10 19:05, [email protected] 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
_______________________________________________
Opensim-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-dev