On Team System, Eclipse, and Teamprise

Sun, 1 June, 2008

A diversion from Unix-y posts. I've been part of a pilot at work to Teamprise, an Eclipse plug-in for managing TFS. Here's an excerpt from my feedback:

In summary, we've had a bad time but not because of Teamprise in particular.

We've taken on three major changes with this effort:

  1. Team System for source control instead of Subversion
  2. The Schwab branching strategy
  3. Teamprise

While Team System's other features (work items, etc.) may have merit, it's a poor source control system. Some offenses:

The default merge stategy is two-way (simple for users) instead of three-way (more accurate). This contributed to one incident where one developer's changes were needlessly overwritten by another developer

Branching is a local (not server) activity, and the user must check in a new branch before editing, an unintuitive step that's easy to forget

The branching strategy has been abandoned by all developers on the team (lastly by me). Checking out 900+ source files and doing our involved project set-up for every requirement is busy work with no explainable benefit. Then, after editing, check into the task branch, merge into dev, then check in the same edits a second time - this is very error-prone and doesn't promote the best practice of pulling the latest code updates before performing a check-in (we experienced a big source control snafu because of this). The principles behind the branching strategy are industry-standard, but TFS makes it too clumsy.

Team System doesn't play nicely with Eclipse, which is no one's fault. A TFS workspace expects a certain directory structure, while an Eclipse workspace expects all projects to be nested in a flat, top-level directory. Therefore, to implement the branching strategy correctly with task branches and a non-sibling dev branch, a minimum of two TFS workspaces must be set up (one for tasks, one for dev).

Teamprise itself has been fairly solid for small tasks like check-ins. Honestly, though, I open Visual Studio to handle branching, merging, and Workspace management. I remember several times where Teamprise would not allow specific actions (renames and check-outs), but then switching to Visual Studio allowed me to move ahead. I lean toward a thumbs-down for Teamprise, but I wonder, what are the alternatives? Using Visual Studio for all the little source control tasks is unreasonable, especially for Java developers who otherwise may never open VS, so in that case, Teamprise does the job.

About Me

Erik Mackdanz is a software developer in Austin, Texas, along with everybody else.

Links