view README.txt @ 16:4353d36a2f80

note http://pypi.python.org/pypi/ginsfsm
author Jeff Hammel <jhammel@mozilla.com>
date Sun, 21 Jul 2013 08:55:55 -0700
parents 6715102c5a86
children 4fd7fb12b782
line wrap: on
line source

IntentMadeManifest
==================

/python workflow engine via directed graph/

As risen from the stillborn ashes:
http://k0s.org/mozilla/hg/MozbaseWorkflow/
[TODO: port ^that^ -> this document]


Intents
-------

"Software [...] is communication"
 -- David "Whit" whitfield Morris

/What is a directed graph?/

Several systems take the form of a directed graph:

- dependencies
- workflow

IntentMadeManifest *utilizes* directed graphs. A framework is provided
along with instances to form a library:

- VCS: git, hg, etc.
- decorators: actions

http://k0s.org/hg/WSGraph is built upon for interface.


Potential Uses
--------------

* dependency curation:
  - DEPS: Dependency Extraction and Processing System;
    http://deps.alioth.debian.org/ ,
    http://vasks.debian.org/projects/deps/
  - Extraction of Attribute Dependency Graph from Database Applications
    http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6130680&contentType=Conference+Publications
  - MAKAO, reverse engineering build systems :
    http://mcis.polymtl.ca/~bram/makao/
  - ceve, utility to parse package dependencies as set of constraints
  - edos, building Linux distributions;
    http://www.mancoosi.org/edos/

* workflow construction, execution, and curation:
  - edit+create+export workflow TTW
  - workflow manager: an application to manage the workflows created
    by IntentMadeManifest

* hybrid:  of course, since IRL
  `workflow = DAG; dependencies = DAG => ...` ,
  Since a `transition` is causal but necessarily with the `t`
  of spacetime, indeed from the above: `workflow == dependency processing`.
  You can do some crazy things:
  - actions: a class with method dependencies noted by decorators
    (see actions.py)
  - control workflow via .ini files (see `examples/github.ini`)

Meta:
- A Formal Definition of Data Flow Graph Models
  http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=1676696&contentType=Journals+%26+Magazines


Links
-----

/Links to software and other communiques/


Python packages:

* https://pypi.python.org/pypi/finite
  Yet another finite state automaton

* https://pypi.python.org/pypi/fluidity-sm
  State machine implementation for Python objects.

* https://pypi.python.org/pypi/fysom
  pYthOn Finite State Machine

* http://pypi.python.org/pypi/ginsfsm
  GinsFSM, a library to develop systems based in finite-state
  machines. It's a communication framework, including a full
  asynchronous http/wsgi/winsocket/sockjs server. Ideal for working
  with Pyramid using traversal dispatch.
  http://ginsfsm.org

* https://pypi.python.org/pypi/graphwalker
  Finite state machine based testing tool.

* https://pypi.python.org/pypi/luigi
  Workflow mgmgt + task scheduling + dependency resolution
  ^ REALLY worth looking in to

* https://pypi.python.org/pypi/pyscxml
  A pure Python SCXML parser/interpreter
  (see also: https://github.com/jroxendal/PySCXML)

* https://pypi.python.org/pypi/ubik
  Minimal and elegant packages manager

* https://pypi.python.org/pypi/workflow
  Simple workflows for Python;
  Not sure if this is really what's needed. And....1.01???

* https://pypi.python.org/pypi/xworkflows
  A library implementing workflows (or state machines) for Python projects.


node.js:

Those node.js people seem to know what they are doing.

* conductor: http://howtonode.org/step-of-conductor
  https://github.com/creationix/conductor
  Looks (maybe?) like what IntentMadeManifest is supposed to be (???)

* step:
  https://github.com/creationix/experiments/blob/master/step.js
  same author as conductor; again, impressive

* composer: https://github.com/tmpvar/composer
  totally the WSGraph of node (!)


State Machines:

Workflow == state machines, so an understanding from either
perspective is the same apropos the other.

* http://en.wikipedia.org/wiki/Finite-state_machine
* http://en.wikipedia.org/wiki/SCXML :
  State Machine Notation for Control Abstraction


== Other Approaches ==

BPMN: Business Process Modeling Notation; not quite what I had in
mind.  Flowcharts are nice, but the sense of "state" + "transitions"
is not the same as in the graph model.
* http://www.bpmn.info/

----

Jeff Hammel
k0scist@gmail.com