Subject: Re: [boost] [msm] Review
From: David Bergman (David.Bergman_at_[hidden])
Date: 2009-12-04 00:04:25
On Dec 3, 2009, at 11:39 PM, Jeffrey Bosboom wrote:
> David Bergman wrote:
>> How do you think it feels for new Boost users to encounter two libraries with virtually identical use and interface? I think that is a bad thing in itself, and makes Boost look less coherent.
> Your point seems to be that there should only be one library for a given task because users will be confused when you ask them to choose one based on their merits. While I think it's a valid point, I don't think it's a good enough reason to reject a library or to remove an existing library. After all, the C++ language itself gives the programmer a lot of choices for accomplishing basically the same task.
But the choices are usually, well, *different* ways (different notions or at least highly different interfaces) of accomplishing the same thing. The biggest difference from a (developer's) usability point of view between MSM and Statechart seems to the expression of the transition table. In fact, when thinking about how to simplify the transition table expression further, I would even have welcomed some macros that introduce the state declarations for simplistic states, from that transition table expression.
> But I think this concern can be addressed if there is a documentation page that compares the libraries that is included in (or linked from) both libraries' documentation. This would make it much easier for a user to choose one or the other without having to read the full documentation for each.
> > I.e., if these two libraries were up for review now, would we accept
> > them both?
> Probably not, but we can't drop support for an existing library, at least without a deprecation period (and preferably an interface adaptor that will allow code written against the old library to run using the new one). The other option would be to reject MSM because Statechart has already been accepted, and I think that would be a bad idea as well.
> Decide whether MSM should be included or not on its own merits. If so, then MSM makes Boost better; we shouldn't be so concerned with being perfect that we lose the opportunity to be better.
You have a good point there. Although I would rather have seen the MSM guys collaborate with the Statechart guys on making Statechart easier to use (especially the expression of the transition table) and/or more performant, though. If that would have led to a combined Statechart 2.0 (analogous to Spirit 2.0) in a year, I would wait.
/David "Grumpy Old Man" Bergman