Andrew Carter gave a really good overview presentation of two of the more popular distributed source code management systems out there today – Git and Mercurial. Lots of people have been talking about Git lately, mostly because of the video of Linus’ talk about it at Google.
Both were interesting, and conceptually they’re really intriguing concepts. Andrew’s talk did a good job of illuminating the core concepts for me, and I smile and shake my head when I think of the changes that would happen in a larger company to really make distributed source control work for them.
Based on my own experience, I think it would be a hell of a mental shift. Very easily doable for a smaller outfit, and hellish for a larger one that’s built up a concept of a central repository and some sense of control. To my mind, what is needed to really make it work is the concept of a maintainer in a development group. The soul who is responsible/gatekeeper for the code. I haven’t seen many development groups in large companies that have that setup. Most groups have a lead or something equivalent, but the social dynamics in a company don’t generally end up putting people into positions like that who are good at working with other folks socially – most especially when they’re being looked at to be responsible for other folks code. It would be a really odd dynamic – they gatekeep patches, but they can’t say “I won’t ever take another patch from you” if a developer keeps putting in really nasty code. There’s a “you’ve got to work with them” framework at a company, and real pressures to “get something done” that might not ever make it into what you’d classically think as open source with a strong gatekeeper.
Anyway, I walked away from the presentation thinking “Yeah, I could use that…”. My biggest takeaway, using source control can (and perhaps should) be a very low impact, low threshold task that you can use for just about anything.
Oh – and for you macports folks, it’s easy to get rolling: