Integration

Industry-wide, there has been a trend toward more integration between version control and other stuff like project tracking, wikis, discussion forums, build management, etc. Developers don’t just commit code. They use a whole bunch of other tools which help them collaborate with each other and with people in other functional areas. The expectation is that all these tools will integrate together very well, providing a seamless user experience. This concept is sometimes referred to as Application Lifecycle Management (ALM).

The rapidly increasing popularity of DVCS is generating some momentum in the opposite direction. The benefits of a DVCS (such as offline usage) are somewhat diminished if all of the other tools a developer needs are still centralized.

Yes, it’s cool that I can commit my code while I’m on a yacht[20], but how do I update the bug tracking system to mark the bug fixed? So far, the answer is that I have to wait until the boat gets to shore, hope that the port terminal has Wi-Fi, log in to my corporate VPN, bring up a web browser, remember the bug ID, find the bug, change its status, and try to remember my code changes so I can write something relevant in the comments. That’s not what I want. What I want is to do all those things offline to my local clone of the bug tracking database and those changes will get pushed at the same time that I push the version control stuff.



[20] Certain comments from early reviewers of this book motivate me to clarify that I do not actually have a yacht.