Skip to content

Distributed Agile Development - 3: Central Source Control System

October 8, 2007 by Vaibhav

This is part 3 of a series of posts about using agile methodologies in distributed development scenarios.

One of our readers (Deven) posted a comment emphasizing the importance of a well organized collaboration system when doing distributed agile development. In his list of essentials, he mentions the need for a "Central Globally Available Source Control System". He is correct and so in this post I will talk about the various tools and techniques that can be used to manage a central source control repository.

What are the considerations?

First of all, what are the various issues that need to be addressed by such a system?

  • Synchronization Efficiency - Since most of the code that is committed or fetched from a repository will happen over an Internet connection of some kind, the source control system should be efficient in how much data it needs to send back and forth every time an operation is carried out on it.
  • Security - It needs to be secure. There are at least two possible considerations here. Either it should be able to operate over a VPN connection for security; or if it is available over an unsecured connection, then it should have built-in mechanism for encrypting transmitted data.
  • Development Environment Integration - You can gain a productivity boost if the source control client is integrated in your development environment.
  • Branch Management - How easy the support for branching and merging is?
  • Advanced Features - What are the extra features available that can help bring more efficiency to the development process? For example, a rules engine can automatically create a task for code review, whenever a developer commits code.
  • Cost - How much is the server? How much are the clients?
  • Proxy/Caching - Does the source control system have an ability to manage replicated servers on distributed sites. This speeds up operations when interacting with the source control system.

These are some of the considerations (although there can be many more).

What are the options?

I will talk about the solutions that I have worked with, though there are MANY out there.

  • Visual Source Safe + Source Offsite - If you are a Microsoft developer then you have probably used VSS. VSS is a very limited ability solution especially when it comes to using it over a distributed scenario. It performs very miserably over a VPN connection. This is where Source Offsite comes in. It acts as a wrapper over VSS and enables remote access over the Internet. It's secure, it's fast, and it's not very expensive. It integrates well with Visual Studio.
  • CVS/SVN - These are two excellent and exceedingly popular source control solutions. They have a large variety of client software available and integrate with most major development environments either natively or through plugins. Both are open source and have an acceptable performance over a VPN connection.
  • Team Foundation Server - In my opinion, it's one of the best solutions although the price makes it prohibitive for most developer shops. It's much more than only a source control system (though that is a topic for another post). It has the ability to communicate both over a VPN and over unsecured Internet and is fairly efficient.

There are a large number of other options available ranging from free to extremely expensive. What different solutions have you used? How have your experiences been with the above mentioned solutions?

About the Author:

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <b> <i> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <br> <blockquote>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.

Best of AgileSoftwareDevelopment.com