Detailed Project Description
The workbench project takes the workbench metaphore seriously. It’s a
platform that allows you to do work; it provides a flat work surface
that supports your ability to combine tools (python modules) together.
In general a workbench never constrains you (oh no! you can’t use those
3 tools together!) on the flip side it doesn’t hold your hand either.
Using the workbench software is a bit like using a Lego set, you can put
the pieces together however you want AND adding your own pieces is super
easy!.
Loosely coupled
- No inheritance relationships
- No knowledge of data structures
- Just take some input and barf some output (no format requirements)
Flat
- Workers (that’s it… everything is a worker)
- Server dynamically loads workers from a directory called ‘workers’
Robust
- Worker fails to load (that’s fine)
- Worker crashes (no sweat, that request fails but system chugs on)
Transparency
- All worker output is reflected in the data store (currently Mongo)
- Use RoboMongo (see below) to inspect exactly what workers are
outputting.
Small Granularity
- The system works by passing references from one worker to another so
there is NO benefit to large granularity workers.
- It’s super easy to have a worker that aggregates information from a
set of workers, the opposite (breaking apart a large code chunk into
smaller units) is almost never easy.
- Pull just what you want, workers and views (which are just workers)
can be selectve about exactly which fields get pulled from which
workers.