My day job no longer involves any programming, although I still play around on open source projects for fun (yes, I enjoy coding). There is something missing in this work, as I’m no longer a member of a team of developers I no longer practice eXtreme Programming (XP). I used to enjoy activities such as pair programming and stand-up meetings, they are social and resulted in higher productivity. In distributed open source teams these practices are simply not possible.
Recently two things happened that made me think more about eXtreme Programming in Open Source Software. Firstly, I received a copy of “The Art of Agile Development” to review and secondly I was invited to run a session, along with Neil Chue Hong of OMII-UK on Agile and Open Development at a forthcoming JISC e-Inftrastructure workshop.
In planning this session I recalled that whilst most open development methodologies are agile, it is not possible to apply either of the two common agile methodologies, eXteme Programming and SCRUM, in an open development project. This is because many of the practices in these methodologies require co-location of team members and customer representatives.
Then I turned to The Art of Agile Development. A table caught my eye, in this table the authors had listed the practices within XP, Scrum and a modified version of XP discussed in the book. What caught my eye was that a large number of the practices were not explicitly used in one or more of the methodologies. They were listed as either not applicable or implied.
This reminded me that agile programming is about adopting and adapting a set of agile processes to best suit your project and team. The eXtreme Programming and SCRUM methodologies are only examples of successful groupings of practices, projects are not supposed to feel constrained by them.
This set me thinking, Is there an eXtreme Programming for Open Source Software (XPOSS)?
A quick search of the Internet failed to turn up any defined methodologies. Yet I am acutely aware that whilst some XP practices don’t work in open source, many others map directly to typical open source development practices, so why is there no defined methodology?
Perhaps the lack of a defined XPOSS is a result of the fact that most open source projects are organic. Their practices evolve over time as the community dynamics change. There is no need (or desire) to formally define the development process because the community understands it. Besides, why bother writing it down, doing so only produces another document that needs to be maintained. The process could potentially change each time a new (non-core) contributor arrives. That is, someone wishing to donate her or her companies time, but not wishing to be constrained in how they utilise that time.
Perhaps we need a “best practice” XPOSS. A resource that can inform people new to open development in the same way that XP and SCRUM inform people new to team based agile development.
OSS Watch are considering documenting the open development and eXtreme Programming practices we’ve experienced. The intention is to build and define an agile methodology for open development. We’d welcome insights and pointers from anyone with experience and ideas relating to either agile or open development (even if you want to tell us it would be a waste of time).
You can contact us through the comments here, or, if you prefer, via various OSS Watch contact methods.