Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
67 lines (47 sloc) 2.63 KB
unselfconscious constraints:
- do the simplest thing that could possibly work
- keep overhead low
- minimize constraints (nee "features")
- reuse existing solutions, if they will work in our environment
- parallelize by making it easier for the community to see value and to contribute fixes
- try not to regress (i.e., when a constraint is met, make sure it always stays met)
constraint ordering:
- FAST deployments
- git-based deployments
- ssh deployments
- separate setup from deployment
- rake-based invocation
- installable as a Rails plugin
- installable as a gem
- can work "magically" out of Rails config/ path
- post_* rake tasks
- command-line operation
- configuration separate from applications
- local deployments
- efficient checks for continuous deployment (implementation: "staleness checks")
- Roles
- multiple server support
- configuration files visible over HTTP
- support for detecting changed files
upcoming constraints:
- multiple repository grafting
- general ssh options in configuration (partly supported already)
- pre-* hooks
- drop distinction between setup and deployment
- parallelize SSH runs
- allow *synchronization* of important parts of a deployment
constraints I have pushed back on so far:
- bullshit to help unfuck bundler
- bullshit to help unfuck rvm
- rollback support
- separating setup from deployment
- "only" support (for isolating single servers on automated deploys)
- ? non-synchronized deployments -- this turns out to be an interesting example of a design tradeoff that wasn't known before
From "Art & Fear" (c) 1993, Bayles & Orland []:
The ceramics teacher announce on opening day that he was dividing the class into two groups. All those on the left side of the studio, he said, would be graded solely on the *quantity* of work they produce, all those on the right solely on its *quality*.
His procedure was simple: on the final day of class he would bring in his bathroom scales and weigh the work of the "quantity" group: fifty pounds of pots rated an "A", forty pounds a "B", and so on.
Those being graded on "quality", however, needed to produce only one pot -- albeit a perfect one -- to get an "A".
Well, came grading time and a curious fact emerged: the works of highest quality were all produced by the group being graded for quantity.
It seems that while the "quantity" group was busily churning out piles of work -- and learning from their mistakes -- the "quality" group had sat theorizing about perfection, and in the end had little more to show for their efforts than grandiose theories and a pile of dead clay.