Drupal 7 has a couple of similar modules in the workflow space. I'm starting this thread to hold discussion around collaboration among some of those modules.
I work at Palantir.net and am a maintainer of the Workbench Moderation module. I recently reached out to the maintainers of State Machine at Tree House Agency and Sarah Hood, a new maintainer of Workflow to discuss the overlap and potential collaboration points among our modules. Each of these modules have their distinct advantages that include, but are not limited to:
State Machine: A clean object-oriented API foundation which is designed to be extended.
Workbench Moderation: a simple administrative user interface.
Workflow: The ability to define, through the UI, separate Workflows for various content types.
All of these modules have similar database tables that store information like node id and current state. This led me to believe we could combine the strengths of all of these modules in a way that would support upgrade paths from all of their current versions.
Each of these modules has a supported 7.x-1.x branch. Workflow should have a full release soon. The basic plan is to use 2.x branches in these modules explore a new way forward. At Palantir we will first focus on making the functionality in Workbench Moderation dependent on State Machine. This will reduce a lot of duplicate code between the two projects.
Features we want to accommodate include:
- Exportable workflows.
- Vary workflows by content type (As Workflow module already does) or by any arbitrary condition like Organic Group or Workbench Access section.
- Workflows for non-node entities. A site may need a workflow to take a user to the "verified contributor" role. I've also heard may requests for commerce entity workflows.
- Moderation/state-change records as entities.
- This allows us to put fields on the moderation record which can solve many use cases. For instance, a user reference field could designate the next person responsible for a piece of content.
- The state field itself might become a field in the Field API sense.
- Core list fields could be used to check off non-linear "approval" boxes like "508 compliant" or "iPad tested."
- CTools access plugins instead of roles to determine whether a user may perform a transition/event.
- Improved workflows for multilingual content.