

Show HN: Ex-machina – Minimalist state machine in JavaScript - robinbressan
https://github.com/RobinBressan/ex-machina

======
mgold
It wasn't immediately clear to me, but this library tracks both the state
(e.g. "state1") and a payload, some arbitrary value. This already seems like
two separate concerns?

As for transitions, it seems that each state has a collection of functions for
every other state, which are called with the payload to determine if that
state should be transitioned into. This seems error-prone - if there's no
transition, is that the end or an error? If there are multiple, how do you
choose?

It also seems that the state machine will run immediately to completion unless
you return a promise payload. (Bluebird? ES6? It doesn't say.) So if you want
a reactive document, this doesn't seem like a fit.

------
yoshuaw
Oh hey, I also built a JS state machine a while back. Nice to see other
implementations around! :D - [https://github.com/yoshuawuyts/fsm-
event](https://github.com/yoshuawuyts/fsm-event)

------
harlowja
Another one (but this time in python):

[http://docs.openstack.org/developer/automaton/api.html#machi...](http://docs.openstack.org/developer/automaton/api.html#machines)

Code @
[https://github.com/openstack/automaton](https://github.com/openstack/automaton)

------
ddrum001
Could the OP or the Github Readme explain why this is called Ex-Machina...

~~~
robinbressan
In fact there is no reason. I needed it quickly for another project and the
common names was already taken on npm.

~~~
ddrum001
Thanks...makes sense now.

