Monday, April 24, 2006

Record everything

A couple of months ago I attended a conference at the Universidad Rey Juan Carlos in Madrid in which one of the speakers highlighted a principle that Linux Torvalds keeps related the Linux kernel development: all technical discussions must be made in the mailing list. He refuses to discuss anything by any other method be it in person, by IM, etc. In other words:

Linus defends that the Linux kernel developers should Record Everything.

Since then I've been watching how several open source projects work to determine if this is a common practice, which tools do they use to do the recording and how it may relate with the community around the project.

During this time I've happened to become a user of the Apache Jackrabbit project and I now think that it is a great example of the benefits of the Record Everything practice. Here is how they do it:

  • Everything is discussed through the developers' mailing list: this is usual in many open source projects, although some also use personal mails and those are not recorded.

  • Track every feature implemented: Whenever some bug solution or new feature is going to be coded it is added to its tracking software (JIRA). When it is not clear if some idea or issue is really a nice feature request or bug report it is first discussed through the mailing list. Only some consensus has been achieved it is added to JIRA. Then the discussion keeps going through JIRA's discussion system. One of the very nice things about this is that it is very easy to reference pending functionalities or even those in which people are working. It is also very easy to know when some functionality was implemented because everything is tracked through JIRA

  • All changes to the tracking software are mailed to the mailing list: this solves the possible problem of having to be aware of changes of JIRA issues manually. Everything is centralized through the mailing list but at the same time it is given an appropriate structure.

My personal feeling as a user of this projects is that thanks to these practices I feel more involved with it. I've been able to notify a couple of bugs and even sent a patch with some of my teammates with much more confidence than in most projects I've worked with. The reason is that I know what is going on within the project. I'm not a developer (yet) but no information is hidden from me. Jackrabbit was recently graduated from the Apache Incubation project with a great appraisal from its mentor. He particularly mentioned the existence of a very healthful community around the project even though it is very new and many developers are paid by a single company. I believe that following the Record Everything best practice has been very important to achieve this process success.

For this reason I've added it to the Collaborative Development patterns catalog. Your feedback and contributions to it are welcome.