ros-industrial-consortium / packml

ROS packml (https://en.wikipedia.org/wiki/PackML) support package
Apache License 2.0
9 stars 14 forks source link

Replace QT State Machine as underlying state machine framework #17

Closed shaun-edwards closed 6 years ago

shaun-edwards commented 7 years ago

The QT state machine framework is currently used as the basis for the packml state machine. QT is licensed as LGPL, which could be problematic for embedded devices (see here). I believe embedded devices are different because the user cannot substitute their own version of the QT library as is required (see here).

To avoid this licensing ambiguity, I suggest we start using the Boost meta-state machine framework. The Boost framework is very similar and should make a good drop in replacement.

joshuaplusone commented 6 years ago

@shaun-edwards After reviewing the code I would like to make the following changes:

Do you agree?

shaun-edwards commented 6 years ago

Replace qt state machine framework with boost state machine framework.

Just to make sure, will we keep the Qt state machine around for backwards compatibility?

Create a static logger instead of calling directly ROS loggers.

I assume you will do this in a way that logs nicely to ROS when it's in use

Separate each of the state machine types to their own .cpp/.h files (when I do this, any external code that relies on this library will need to update their .h references to the new ones.)

To avoid breaking other's code, can we still keep the "top level" header? Sort of like OpenCV does it with opencv.h?

shaun-edwards commented 6 years ago

Addressed in #35