Monthly Archives: October 2012

DVCS: The ultimate tool for a hackathon

A hackathon is a social event for programmers and designers with a clear goal: Develop an app in a specific time (normally 24-72h) in the language or platform chosen by the host. Time is a key factor, and 5 minutes can turn a stable project into a complete mess.

In this case is very useful to have a version control system to track the changes done in a project, keeping those changes under control.

Last time I went to a hackathon, I saw the frustration of some of my teammates, who were using the new Team Foundation Services Preview, a great tool with a huge potential, but maybe not the best option for this scenario:

  • It needs a stable Internet connection; otherwise the checkin and checkout operations are unavailable.
  • It’s centralized, so every time a check-in is done, all the source code its integrated, so if the client detects changes in the servers, It will be necessary to get the last revision, make a local merge, and afterwards, commit the changes back to the server, wasting time.

With this in mind the version control system becomes a sync tool, rather than a control tool. This scenario, using a distributed version control system (DVCS) could be performed this way:

  • A member of the team is able to commit the changes of his code independently, in a separate branch, and keep the history of the changes.
  • The rest of the members can replicate the changes, using the local network, saving bandwidth and avoiding the usage of external servers.
  • The access may be limited, even in the same network only authorized users may be able to see the code and replicate the changes.
  • The merge operations are less frequent, integrating finished components; therefore we avoid risks like introducing new bugs. Also, tools like PlasticSCM’s Xmerge can detect refactored code helping a simpler integration.
  • All changes may be integrated at the same time the code is being created, independently.

Plastic SCM, as stated before, is a distributed SCM that allows all the discussed features, but also Git or Mercurial will do the job.

In an agile development, the right tool can make the difference between a standard app, and a winner app. On your next hackathon, try a DVCS, and if you try Plastic SCM, leave a comment with your feedback.