Boost logo

Boost :

Subject: Re: [boost] Breaking existing libraries
From: Markus Werle (numerical.simulation_at_[hidden])
Date: 2008-12-04 17:19:18

Joel de Guzman wrote:

> Markus Werle wrote:
>> [...]
>> I acknowledge the hard work done to keep spirit1 in
>> the distro, but I still dislike the way it was solved,
> What in particular do you dislike?

Well, I had difficulties with the fact that _before_
spirit 2 is stable I am forced to change my headers
and touch my code when upgrading to a new boost version.

I also think that spirit-2 must not be called spirit.
See below.

Of course migration was less pain than first thought,
but only due to what I learned from 3 different mailing lists.
Maybe my approach to spirit-2 was accompanied by wrong
expectations. I got confused when I found out that spirit-2
was officially released and shipped with a regular boost release,
but the docs still were incomplete at that time and this and that
was still missing or not as smooth as before.

A classical case of failed communication, maybe with
failures on both sides, sender and receiver of the message.
Take my statements as feedback for how it was perceived
from the outside, not as "everything is bullshit".
I really appreciate the work you do - especially your
documentation style is great.

I still have the impression that we have not found the
perfect approach to migration between versions yet.
The number of libraries grows and with it the number of
interdependencies in an exponential way.
We face the classical configuration management dilemma.

>> because I'd prefer spirit-1 to be a first class citizen
>> for at least 3 more years.
> And it will be. We value backwards compatibility.

Ah, I understand. My definition of "first class" is
a little bit different:
First class is the recommended version and that's the one
which has its docs at the standard path libs/<library>/doc.
I think that spirit-2 is at the wrong directory right now.

> That is
> why we took pains to keep the 1.8 code in the distro.

All this pain because spirit-2 does not have its own name ...
Just give it another name and everything is clear
for everyone.
What do you think about boost::esprit?
And for spirit-N | N > 3 another 3000 languages left for
a lifetime: geist, ruach, esperto, espiritu, hafidha, ...

> And
> I think it will remain there for years to come. It would
> be cruel to expect, say Robert Ramey's Serialization, to
> be ported in a short period of time.

Then again: spirit-2b or spirit-3 is a *completely* different
(and better) thing compared to spirit-1. You reworked even
details of the interface ("_p" has gone, etc.).
My question: Why not give it another name?

>> IMHO this also is a communication issue.
>> On this list several people (me included) have already
>> proposed to introduce stability labels.
>> E.g. spirit2x *should* be tagged highly experimental
>> pre-alpha code *despite* Joel's programming skills until
>> many many users confirm its correct behaviour in Real World code.
> It was tagged 2 years ago as highly experimental pre-alpha. It is
> now tagged as beta. When it finally gets released as final, hopefully
> before BoostCon 09, it would have taken an ample 3 years to reach
> that level of maturity. True enough, many people are using it now
> in projects.

Those tags you are speaking of are not found on where they belong.
Tagging of course is a lot easier if - guess what? -
spirit-2 had its own name (This point should be clear by now :-))

> Look:
> what do you see? That's still 1.8.x.

sed -es ,/classic,,g and I am fine

> There's no drastic change there.
> Spirit 1.8.x is, and always will be, first class. Isn't the name
> "classic spirit" testament to that fact?

This is what I misunderstood. I did not take this label as
something that is "first class". I am happy to hear about
your plans to keep it.

>> The counter example:
>> I had hard times with the rather silent change in spirit concerning
>> trailing whitespaces and enforcing end_p.
>> (
>> I agree with the change decision, but the change could have been
>> advertized in big red letters on the main web page.
>> It took me several months to detect _and_ understand the rather
>> subtle errors it generated and this prevented migration to a new version
>> of boost for a long time.
>> This is OK for me, since Joel saved me a lot of time, but yes,
>> this *change* broke all my code at once - silently. Something
>> I do not like at all.
> I agree. That was !BAD! (in all caps). It's one of the moves that
> I regret. If I was to turn back time, I'd do it differently.
> People make mistakes. I am sorry for this lapse in judgement.
> I assure you, it won't happen again.

That is nearly too much of excuse. Especially since I found out
the change solved a problem I faced before.
Therefore forgiven and forgotten now.

One last question: Which new name will you give to spirit-2?

best regards,


Boost list run by bdawes at, gregod at, cpdaniel at, john at