I was talking to Atlassian recently about its new release of Stash (a tool for internal corporate git forges), which just added forking and personal repos to its capabilities, and something counterintuitive occurred to me. Despite the common belief that distributed version control (DVCS) steals power away from corporate IT, I assert that the reality is in fact opposite: DVCS returns visibility and control to central IT.
For developers using centralized version-control tools like CVS and Subversion, their workstations are often a complete mess of source code and checkouts scattered all over the place like pigeon droppings. They’ve got multiple checkouts of different upstream branches, a bunch of separate checkouts for projects based on the same branch, and even multiple copies of files within each checkout (with nicely dated suffixes or .bak.1, .bak.2-style naming). Frankly, it’s a mess. And it’s got two huge problems:
- This workflow sucks for developers. It’s easy to lose work and hard to track progress.
- Central IT and project management have no idea what’s going on. They can’t track or control anything and they can’t promote better practices.
Although some leading-edge developers will be using a tool like git that interface with CVS and SVN so they can work in a distributed, offline fashion and commit locally, most won’t. And even those that do work like that still suffer from a number of downsides since the whole team and the main repo aren’t doing the same.
The problem is that management is simply scared by the word “forking.” They envision fragmentation, disappearing commits, and invisible work, when in fact all of those things are already happening. Using a tool like Stash or GitHub Enterprise internally will counterintuitively increase transparency and control into an organization’s development practices, because people will push on a regular basis and use trackable forks within the context of the tool. In addition, there’s the clear benefits of smaller commits (because they’re fast and easy), feature branching (because it’s fast and easy), and maintain things in a way that enables better investigation of bugs (smaller commits make bisection easier).
In other words, using DVCS internally for corporate development improves the experience for both enterprise IT and individual software developers. The problem is that nobody seems to be telling that story to corporate IT.
Disclosure: Atlassian is a client, and GitHub has been one.
No Comments