Boost logo

Boost Users :

Subject: Re: [Boost-users] [serialization] class versioning changes in boost 1.42
From: Jarl Lindrud (jlindrud_at_[hidden])
Date: 2010-02-27 06:12:35


Robert Ramey <ramey <at> rrsd.com> writes:

>
> Jarl Lindrud wrote:
>
> >> Can Microsoft 2003 word load files created with Microsoft word 2007?
> >> That is what we're talking about here.
>
> > Of course it can. Try it yourself (Word 2007 -> File -> Save As ->
> > select the relevant file type). This capability is fundamentally
> > important for many applications, and there's nothing magic or
> > logically impossible about it.
>
> Please reread my sentence above.

Let me try to make this more clear to you.

* Word 2007 can save files in a format that will *not* be readable by Word
2003.
* Word 2007 can *also* save files in a format that *will* be readable by Word
2003.

With Boost.Serialization I *cannot* make a program that produces archives that
are guaranteed readable by programs that I've already built and deployed,
because those earlier programs may well use an earlier version of Boost.

And as you yourself acknowledged, in regard to point 2 in my very first post,
archives created with newer Boost versions are not guaranteed to be readable by
older Boost versions.

In fact, you stated that you don't even see any utility in such a capability,
and then later that it is somehow logically impossible.

Can you at least see that there are serious real world applications (Word, for
starters) that have this capability as a fundamental requirement?

Boost.Serialization currently does not support this kind of versioning. Fair
enough. But let's not pretend that it's some academic feature that no-one is
interested in.

>
> > Networked applications need this capability as well. E.g. a newly
> > developed client needs to be able to communicate with any number of
> > older, deployed, servers.
>
> This capability is and has always been part of the serialization library.
> It it included in the documentation, demos and tests. Please read the
> documentation.
>

If the previously deployed servers use Boost 1.35.0, say, and my new client
uses Boost 1.42.0, how can you claim that the new client will be able to send
valid messages to the older servers? The Boost.Serialization documentation
explicitly states that such compatibility is *not* supported (To Do -> Back
Versioning). You even said so in earlier posts.

What am I missing?

>
> It's only a guarentee if one follows the rules. In fact he did get

So there are unknown rules one should follow... Are there more unknown rules?
Is the end user responsible for knowing about these unknown rules?

>
> lol - I write 30,000 lines of code with the intention of making no
> errors. I cannot guarentee that I have made no errors.
>

Car makers know that their cars are not perfect. When they offer you a
guarantee, it doesn't mean "the car will never break down". It means, "if the
car breaks down, we will fix it.".

If Boost.Serialization's guarantee of backwards compatibility only applies
under "anticipated usage" (as defined by yourself), then I guess that should be
documented, along with your definition of "anticipated usage".

Regards,
Jarl.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net