jump to navigation

Why Distributed Version Control Matters October 11, 2007

Posted by Ian Clatworthy in Bazaar, Collaboration, Management, Open Source, Software Engineering.
trackback

I’m presenting a paper later this year at OSDC 2007 on why distributed version control matters and how to implement it effectively. A draft can be found online here: Distributed Version Control – Why and How. If anyone has any feedback, please let me know soon so I can improve the final version.

Update: The final version is now uploaded and linked above (and it’s really PDF, not PostScript, this time).

Comments»

1. friendlessfarrell - October 12, 2007

MY PDF reader (evince on Ubuntu) can’t open the file.

2. Ian Clatworthy - October 12, 2007

Sorry about that. Should be fixed now.

3. friendlessfarrell - October 18, 2007

p2: I don’t understand why DVCS means developers are working from a more stable base. Because they only integrated with one person and they know who to blame instantly?

p2: Why does it follow that quality is better?

I also wonder whether autocratic software development organisations will go for the DVCS thing. If there’s no central trunk, what will they control access to? Won’t SOX paranoia prevent them from relaxing enough to go the DVCS route?

p3: Not all changes are lego brick size. Someone just HAS to change all the red bits to be blue bits, which is a change that spans the entire product. I’m not familiar with intelligent merging and feature-wide commits, but it sounds like they will help with that sort of change more than distribution will. I’d guess that automated tests help prevent quality dips more than better VCS.

p4: “inheritly”?

p5: “As well are”

Is it appropriate here to explain what packs and history horizons are?

p6: “publicized” You’re an Aussie, man!

4. friendlessfarrell - October 18, 2007

You may be interested in this.

http://blog.red-bean.com/sussman/?p=79

5. Ian Clatworthy - October 18, 2007

Friendless,

Thanks for the feedback. Let me try and answer those questions.

Quality. In teams using central VCS tools, some/many developers check into the mainline as a way of check-pointing or backing up their changes to date. The code isn’t cooked to production quality – they just want the ability to rollback to that state or are afraid of losing their work. Sometimes they check-in in order to share development of an uncooked change with one or two others. Both scenarios lower the integrity of the mainline. In teams using a DVCS, there is *still* a central mainline (a.k.a. trunk). But code can be check-pointed, backed-up and shared without using the trunk at times when it really shouldn’t be.

Control. Good question. Control is still retained over the central trunk. The difference is that the “sandboxes” aren’t necessarily history-less. They *can* be – we call that a lightweight checkout in Bazaar – but they don’t have to be. Developers can therefore more easily check-point locally, exchange code with peers and push their changes to a backup server.

Your points about merging and automated tests are largely right. “Wide” changes across a big code base become much easier once merging is a “natural” part of developing – like compiling your code – instead of an exceptional thing that takes weeks of planning to ease the pain on everyone in the team.

Packs are just a different way of storing VCS data such that access and movement are faster later on. A history horizon is how far back you want your checkout to go. Currently it’s either ‘to the start of time’ or ‘just the latest code’ in Bazaar. I’ll talk more about packs and history horizons in later articles I hope.

Thanks also for the reference to the sussman article.

6. Sistema de Controle de versão distribuído: Bazaar « Beyond Click - October 25, 2007
7. Avaliando o Bazaar « Beyond Click - November 7, 2007

[…] Importancia da distribuição nos VCSs. Neste blog também tem outros textos interessantes sobre o assunto. […]

8. juiced - December 9, 2007

How did your presentation OSDC go? Did you attend also? Were there any interesting sessions on open source testing tools?

Cheers, Alister

9. Ian Clatworthy - December 10, 2007
10. juiced - December 12, 2007

Hi Ian,
Nice slides (the link has a problematic fullstop at the end).
Re: Bazaar – It seems a lot of great software has been developed by companies actually fulfilling an internal need (37signals -> ruby on rails & highrise, Atlassian -> JIRA & Confluence, Bret Pettichord -> Watir) and then eating their own dogfood.
Re: BDD – Bret Pettichord is in the process of moving all his Watir tests to use RSpec instead of Test::Unit. More information is here:
http://www.io.com/~wazmo/blog/archives/2007_07.html#000254
Cheers, Alister

Lorren - December 13, 2014

The paragon of unidestanrdng these issues is right here!

11. Luke Hoersten - April 7, 2008

Ian, great paper! I’m constantly trying to get my research teams and other groups to use Mercurial but I always seem to hit a few snags. One: people don’t want to “waste” time learning a new system when SVN seems to work fine. And two: Git and Hg are still pretty young compared to SVN and CVS. To try and motivate people to learn on their own, I’ve compiled a list of resources that I give to my teammates:
http://humani.st/learning-distributed-revision-control-systems/

Also I think it’s interesting to note that Brian Fitzpatrick, a Subversion and Apache developer, told a group of us Purdue students that SVN will indeed be getting distributed features similar to “the Mercurial model.”

Have you talked to anyone with any particular clout about this? Perforce seems to be the other popular linear revision control system.

12. René Leonhardt - August 2, 2008
13. Ian Clatworthy - August 5, 2008

Thanks René,

This should be fixed now.

14. 分布式版本控制 | 花开的地方 - March 28, 2009

[…] is a distributed version control system that Just Works. While other systems require you to adapt to their model of working, Bazaar adapts […]

15. Lenz Grimmer's blog - November 6, 2009

Aspects and benefits of distributed version control systems (DVCS)…

This blog post is a by-product of my preparation work for an upcoming talk titled "Why you should be using a distributed version control system (DVCS) for your project" at SAPO Codebits in Lisbon (December 3-5, 2009). Publishing these thought…

16. 分布式版本控制 | Wang Jun's Blog - January 11, 2011

[…] is a distributed version control system that Just Works. While other systems require you to adapt to their model of working, Bazaar adapts […]


Leave a comment