Boost logo

Boost :

From: Martin Vuille (martin_at_[hidden])
Date: 2008-08-18 20:21:51


The formal review for Andrey Semashev's Finite State Machines (FSM)
library has been running for a week now and continues until the 20th.

There have been some lively discussions about the library, but no
one has yet entered an explicit yes or no vote. If there are no votes
either way, the FSM library submission will be rejected by default.

If you wish to review, but don't have time before the review period
ends on the 20th, please let me know as it may be possible to extend
the review period.

And, finally, a reminder to include an explicit "for" or "against"
vote in your review.

-----------

The documentation (overview and reference) is available online:
http://boost-extension.redshoelace.com/docs/boost/fsm/doc/state_machine.html
http://boost-extension.redshoelace.com/docs/boost/fsm/doc/reference.html

The current submission is available from the sandbox vault at
http://tinyurl.com/yjozfn (or
http://www.boostpro.com/vault/index.php?action=downloadfile&filename=FSM.zip
&directory=&PHPSESSID=48493076c1ea60ae316f7b60f15b9ed1,
if you prefer.)

There has already been some discussion of the library
since the rewiew was first announced:
http://www.nabble.com/FSM-Review-Announcement-to18820219.html
http://www.nabble.com/FSM-Review-Reminder-to18890305.html

-----------
Description
-----------

"The main goals of the library are:

* Simplicity. It should be very simple to create state machine
  using this library.
* Performance. The state machine infrastructure should not be very
  time and memory-consuming in order to be applicable in more use
  cases.
* Extensibility. A developer may want to add more states to the
  existing state machine, and this addition should be relatively
  safe since it shouldn't interfere with the existing states. The
  developer should also be able to specify additional transitions
  and events for the machine with minimum modifications to the
  existing code."

"Boost.FSM vs. Boost.Statechart

There is another library in Boost that provides similar functionality:
Boost.Statechart. Although it currently covers almost all major Boost.FSM
features and provides ones that are not supported in this library,
Boost.Statechart is more targeted to creation of big and complex state
machines with possibility of distributed development. But this does not
come at no price and Statechart has little tools for compile-time
programming
and does not provide as much run-time performance as Boost.FSM does. So
there are main guidelines for users to make a decision between Boost.FSM
and Boost.Statechart: [...]"

"The following compilers are known to have problems or most likely
will have ones:

* Microsoft Visual C++ 6.0 and 7.0. Most probably will fail to
  compile due to lack of partial template specialization support.
* Borland C++ Builder 5.5.1 (free version). Fails to compile due
  to lack of partial template specialization and in-class using
  declarations support. Some other minor problems also have been
  noticed. Newer versions of the compiler have not been tested.
* OpenWatcom 1.5. Fails to compile due to problems with Boost.MPL
  code. Newer versions of the compiler have not been tested.
* SunPro C++ Compiler 5.5 for Solaris (SPARC). Most likely will
  show problems with function overload resolution. Newer versions
  of the compiler have not been tested."

The current submission is available from the sandbox vault at
http://tinyurl.com/yjozfn (or
http://www.boostpro.com/vault/index.php?action=downloadfile&filename=FSM.zip
&directory=&PHPSESSID=48493076c1ea60ae316f7b60f15b9ed1,
if you prefer.)

----------------------------------
What to include in Review Comments
----------------------------------

Your comments may be brief or lengthy, but basically the Review Manager
needs your evaluation of the library. If you identify problems along
the way, please note if they are minor, serious, or showstoppers.

Here are some questions you might want to answer in your review:

What is your evaluation of the design?
What is your evaluation of the implementation?
What is your evaluation of the documentation?
What is your evaluation of the potential usefulness of the library?
Did you try to use the library? With what compiler? Did you have any
problems?
How much effort did you put into your evaluation? A glance? A quick reading?
In-depth study?
Are you knowledgeable about the problem domain?

And, finally, every review should answer this question:

Do you think the library should be accepted as a Boost library? Be sure to
say
this explicitly so that your other comments don't obscure your overall
opinion.

Thanks in advance for your participation in this review.

MV


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk