Ranching Killer Zombie Robots -- Part I: Definitions
At the Canada Moodlemoot 2009 in Edmonton, Alberta, I gave a presentation entitled "Ranching Killer Zombie Robots: Lessons Learned". (slideshare.net).
The first half of the presentation was the initial outline of a metaphor to help IT managers communicate with their programmers about how to sustainably customize upstream open source software projects like Moodle; the last part of the presentation covered a few Moodle projects that I was working on at the time including code coverage reports for the simpletest unit testing Moodle admin report and hookutils, a small library I was writing to provide "Acme Instant Software Hooks". I will post about both of these projects separately.
As in the presentation, I will define each term in the title "Ranching Killer Zombie Robots" in reverse order. Later posts will outline technical strategies to help you survive when you are asked to highly customize an upstream open source project like Moodle. Here goes....
Robots
I like to imagine complex software as a giant herd of hundreds or thousands of little robots that all scurry around to achieve complex tasks. In this Gilliam-esque world, my local customizations to an upstream project like Moodle are either the addition of more little robots -- when using supported extension points -- to my initial "clone" of the standard Moodle herd, or, when modifying core functionality, as so often happens, are the addition of my own little mutant robots which are tightly bolted, welded, or duct-taped directly onto upstream robots.
Zombie
When you are welding and bolting your robots onto upstream robots, instead of letting them move around on their own, (or, in other words, directly modifying upstream code instead of using supported extension points), I have learned that you absolutely must assume that all of your robots (customizations) are basically "walking dead"; in other words, it is not a question of whether they will one day cease to work at upgrade time due to their weld-points and mechanical or electrical linkages suddenly vanishing from the new, modified, upstream robot herd, it is simply a question of when.
Killer
This is where the metaphor takes a bit of a turn. Rather than being "killer" zombies in the traditional sense of trying to chew your arm off, some large percentage of your zombie robots could all stop working at the same time when it comes time to upgrade due to a major upstream refactor like Moodle 2.0! It is the time spent trying to rebuild, rework, or otherwise resuscitate your herd of custom zombie robots in a much shorter period of time that will devour your programmers.
Ranching
The basic idea of this whole exercise is to be able to keep your zombie robot herd alive as long as you need it to do all of its many tasks, with enough time available for ongoing maintenance, while still regularly "replenishing" (upgrading) the original robot herd from the upstream supplier so that you're not trying to maintain that massive group as well. Robot herd lifespans are often in the range of 5-10 years.
If you one day find yourself afraid to replenish (upgrade) the upstream part of your herd due to fear of massive zombie/IT staff die-off, you may find yourself making the very poor decision to not only maintain your own robots, but also to try to maintain all of the upstream robots as well.
Back slowly away from this decision and look for the other posts in this series. Experience shows that your entire herd will starts to suffer from "bit rot", a gruesome, horrible fate for your cowboy coders to have to watch. Bits and pieces will fall off and stop working, and will be abandoned where they lie. Robot behaviours that were once charming will no longer be so desirable. As time goes on, your herd will become more ornery and difficult to keep going as parts become harder to find and wire and band-aids and duct tape no longer do the job.
As the sun goes down on what little remains of your zombie ranch, your cowboy coders will, one-by-one, disappear off into the horizon.... This will not necessarily be a bad thing if their practices helped turn your ranch into this robot dust bowl, but it won't make it any easier if you're left taking care of what's left.
I call this particular ending "customizing yourself into forking oblivion"; while you still get to enjoy the pretty sunsets on your dying and decaying herd, this does not, unfortunately, count as successfully ranching killer zombie robots.
In upcoming posts I will provide a checklist that may help you see what may be in your future, as well as provide a series of posts with suggestions for practices that just may help avoid this horrible, gruesome fate.
Tagged under: