Some new software development models have appear recently. One of them is the distributed model. It can be used to structure a project in various ways, but the founding concept is that everyone owns a full working copy of the project and is not directly tied to a central authority.
In one of my previous post, I wrote about the distributed way of managing source code and what differences it make compared with the common solutions that are used today. Before going any further, here are the benefits I see when using a distributed revision control mechanism:
- Offline support (commits, branches, merges)
- You are your own working copy and you can share changes with others in the way you want
- You are your own working copy and you can break it apart, test it, try experimental things. You are free to play with it.
- Flexible structure for changes flow (someone has to pull changes from you - aka the Linux model, everyone push/pull to a central repository - aka the central model, someone has to pull changes from you to check that they meet a certain quality and push them somewhere else, etc)
This is great if you are only managing source code, but there are many different things you have to manage for a software project to be successfull. How does it translate in the distributed model ? Some projects like the ones under the Mozilla umbrella are using a distributed revision control software for their code and some central models for other part of the their projects. This is fine, but there are some alternatives.
I discovered some interesting distributed aware tools to complement your distributed revision control software for documentation and bug, issue or task tracking.
- Distributed wiki: ikiwiki, MoinMoin MercurialBackend branch
- Distributed bug, issue or task tracking: Bugs Everywhere
It is still early to tell if we are going to see a push towards even more distributed tools like these. We can surely benefit from using these tools in a proper way. I will keep an eye onto it.






