In hot pursuit of Ultimate Quality
Wednesday, April 21st, 2010My last post was a short walk through the history of the orbited project. We examined orbited’s evolution over the past three years to help us better understand its current state. A better understanding of what orbited is now should lead to a better plan for the future. I’ll post about this plan very soon, but first I’d like to talk about how we’ll get there.
Well, how about just a little more navel-gazing. It will pay off, I promise.
Have a look at the “About Orbited” page in the orbited.org wiki. There are eleven committers listed on the page and another seven contributors. Not represented there are the scores of people who have written blog posts describing how they’ve used orbited or laying out some steps for getting started. It would be extraordinarily difficult to count the number of visits that #orbited has received through the livehelp portal. Assuming that one of twenty livehelp contacts generated a constructive criticism or honest opinion and that everyone else I’ve mentioned made non-trivial contributions to the project, I think it’s fair to say that orbited’s evolution has been influenced by hundreds.
This makes orbited, in my opinion, a great illustration of the value in open development. orbited started as a solution to one person’s problem and so it changed a lot as that one person faced different challenges and had new ideas. orbited adoption grew in time and we were fortunate that new users would often take the time to discuss the problems they were having or the ways that they thought orbited could be improved. All of these influences have had a stabilizing effect on the project and work has shifted from figuring out what orbited should be to making it a better instance of that thing.
Early development was chaotic and the chaos suited the work. Now that we’ve entered a phase of refinement we need to determine the way to best match our organization to the work we’re doing. I would like to follow the example of the project that provided the foundation upon which orbited is built. This is the Twisted Project.
The people of Twisted Matrix Labs know how to do open development. Twisted is an impressive project, not only because of the subprojects it has produced, but also because of the way the developers work to produce them. I’ll leave it to you to read more about their development process or browse the project’s extensive documentation. For now, let’s focus on three aspects of their process: ticket discipline, code review and continuous integration.
Continuous Integration is something that I’ve heard about for a while, and had a hunch was for real, but hadn’t experienced until recently. It’s as simple as, well, ABB. “A” Always, “B” Be, “B” Building. Automate your “build” process and do it. A lot. Either on a preset schedule, or anytime there is a change to one of the pieces of your project that you control. Build goes in quotes, by the way, since here it represents whatever it is that you do to turn your raw materials (source) into something that people can use. The benefit for you is that when something goes wrong, you’ll know about it immediately. Everyone will, in fact, since you will make the results of your builds public. When you’re proud of what you’ve made, this is strong motivation for keeping it working.
The DivMod Ultimate Quality Development Process outlines a way of using a ticketing system in combination with code review to maintain a project’s level of quality. There’s a rule: every change to the source must be traceable to a ticket. That ticket must contain certain pieces of information and it will be used as the basis for a code review. So the change needs to match the request in the ticket.
There are two benefits (that I’m interested in) to using tickets and carrying out code reviews. Code reviews put more eyes (and brains) on the code, so more people involved with the project know how it works and, more importantly, why it works. Recording change requests and code review comments in tickets has a similar benefit; tickets become an established source of information about the system. Where code reviews have the effect of familiarizing project members with the state of the project, the ticket system makes the development process more readily available to those not part of the project.
Project transparency is something that orbited has lacked in the past, and something we need to do better. The orbited code base is small but dense and less than packed with comments. The bar has always been high for new contributors, but we can do something about that. Let’s work out a sustainable development system built on tickets, testing and code review. Let’s make it our goal to keep the state of the project available at all times and be ready to point people toward it.
