Credits and Attribution¶
open-fsm is a fork of the finite state machine that lives inside
Viewflow, written and maintained for
many years by Mikhail Podgurskiy. The declarative API on this site —
State, @state.transition, State.ANY, State.RETURN_VALUE,
State.GET_STATE — is his design, and the test suite is largely a port of
Viewflow's own.
Why a fork¶
Viewflow is a full workflow framework built around Django. Of all of it, the FSM is the only part many projects actually need, and taking it means taking the framework — and Django — along with it.
open-fsm extracts that piece and nothing else: the same API, on a plain Python
class, with any ORM or none at all. Zero runtime dependencies, fully typed, and
a PEP 561 py.typed marker.
What changed in the fork¶
| Viewflow | open-fsm | |
|---|---|---|
| Dependencies | Django | None |
| Unmet-condition result | State.UNMET |
State.CONDITION |
state.transition(permission=...) |
Supported | Not accepted |
| Instance introspection | Module functions only | Plus the StateEngine mixin |
Diagram rendering (chart) |
Included | Not part of this fork |
License¶
Viewflow's FSM is dual-licensed under the AGPL with a license exception, and a
commercial license. open-fsm inherits the copyleft side of that: it is
licensed under the GNU Affero General Public License v3.0. See
LICENSE for the full
text.
The original copyright headers are retained in the source files derived from Viewflow.
Stewardship¶
open-fsm is maintained by Open Byte. Issues
and pull requests are welcome on
GitHub.
Development practice¶
open-fsm is developed with AI assistance, and every change is reviewed by a
human before it is merged. The
pull request template
asks a contributor to state both: whether an AI tool was involved, and that they
have read the complete diff and take responsibility for it.
Disclosure is the point. AI assistance does not transfer responsibility for correctness or for the right to license the contribution, and the tooling in this repository is built on the same assumption — the test suite executes every example on this site precisely so that a claim in the documentation cannot be taken on trust.
Documentation policy¶
The guides embed their Python from examples/, and those examples are executed
by the test suite. The Material site is built with strict link and snippet
validation in continuous integration. See
How These Docs Are Tested.