Today I started my new role, which initially involves configuring Team System/Team Foundation Server (TFS), and other build and release processes for a medium-sized company.
TFS is a Microsoft product that provides an all encompassing development environment solution including source control, issue-tracking, and workflow, and is integrated with Sharepoint and MS build products.
Last week I attended a TFS forum and was impressed with what it was demonstrated to be capable of. After speaking to the host, I have decided to document my experience with it and how it compares to open-source solutions.
For reference, a brief outline of an open-source system follows below for comparison.
Open source build environment solutions
Good build environment solutions include source control, issue tracking, build automation, wiki, document management, test tracking, and some sort of release management.
Companies often use a dedicated tool, which best meets their requirements, for each of these roles. There are numerous excellent open-source (and commercial) products that do this. However, the problem then becomes how to integrate them such that:
- Whenever a commit is made to the source code, the system triggers a build and sends out a notification of the outcome and information about the commit to all interested users.
- For any given bug, users can see exactly which lines in the source code were modified, by who, when, and whether it was tested.
- For any given file, project, branch, or version, users can see which bugs were fixed.
- For any given version, users are able to retrieve the necessary information on how to build it from scratch.
It is this integration that can be difficult and time-consuming. However, when configured correctly, provides excellent quality and traceability in the overall SDLC.
An all encompassing answer
Subversion is an open-source source control system commonly considered the successor of CVS. It is stable, reputable, very low maintenance, and offers all the key functionality typically required in source control. For Windows users, there is a nice little plugin called TortoiseSVN which integrates into the browser, eliminating any need to use a command line.
Trac is a web-interface that sits over top of SVN. It provides a navigable repository browser, basic issue tracker and wiki; all of which are tightly integrated.
Installation is as simple as doing:
apt-get install subversion trac
The primary drawback is that it is a simple solution. As the software grows, it will likely be insufficient, with the main deficiencies lying with the very basic issue-tracker.
Nonetheless, starting with nothing, or compared with using a convoluted system comprising something like Visual Source Safe for source control and excel spread sheets for issue tracking, Trac offers an excellent, easy, low cost and low maintenance solution.
An integrated solution
For larger software projects using a basic issue-tracker as provided in Trac is insufficient.
I recommend using the following configuration for a (mainly) open-source build-environment system.
- Subversion for source control, with viewvc, a repository browser, that sits over top.
- Knowledge Tree for documentation management.
- CruiseControl for build automation.
- Jira for issue tracking. This is not open-source and costs approximately $5000 for an unlimited license. However, it beats any open-source bug-tracker hands-down and is well worth the investment. It also by far surpasses some of the considerably more expensive (and bloated) issue trackers available.
- MoinMoin for the wiki (or, if using Jira, possibly Confluence, an excellent low-cost commercial wiki that is tightly integrated with Jira)
- Mailman, or an equivalent mailing list manager for email notifications.
- Magic scripts for release management.
Installation and configuration of each of these applications is relatively straight forward, and I won’t cover here. Gluing them together however, can be more time consuming, and (partly for my own reference, lest I convert to the dark-side) I’ll briefly outline in Part Deux.