Dennis Forbes on Pragmatic Software Development
Subscribe to RSS
 
Wednesday, March 07 2007

We've been using Microsoft's Team Foundation Server for version control and basic work item/requirements/bug tracking for about 9 months now. All in all it's a good tool, though really it still feels like a version 0.8 beta that got pushed out the door a little early.

Lining Up For The Landing

The Good

  • It's a world better than Visual SourceSafe
  • Superb integration with Visual Studio
  • Performance is great locally, but also over a low-speed pipe
  • Security is well-defined and adequate
  • Branching and merging works well
  • Multiple files are checked in as a changeset, rather than individually
  • The requirements/work items/bugs functionality is half-decent, albeit very unpolished and feature-poor

The Bad

  • Some basic functionalities, such as rollback, are missing (which is why I say that it seems like a pre-release beta in ways). There is a powertool hack that lets you rollback a changeset, in which case it checks out all of the affected files, does a get of the pre-checked out files, and then checks in the old file(s), leaving the "rolled back" version in the history.
  • burlington The application tier is incredibly fragile. If an enterprising team member decides to do some clean-up directly in the TfsVersionControl data-tier database (getting around missing functionality in the tools -- for instance there is no way to permanently delete, aka destroy, in the tools, remarkably, so if someone checks in a 500MB file and you want to remove it, you're forced to do it directly in the database), you will discover that a single missing related record -- the database doesn't define or enforce foreign-keys, so it isn't going to block the DELETE command there -- will cause the application tier to die a hundred deaths, excepting out on null values and other inanities. This is made far worse by the fact that the application tier caches a lot of lookup data, so check-ins/outs will work for a while after these related records were moved, making a simple database rollback impossible. Instead you need to go through every database manually rationalizing all of the data, determining where the application tier is dying.

    The worst part is that many of the unfound lookups should be complete non-events, either not displaying the unrelated records, or putting in placeholders while indicating that an error occurred. The idea that it takes down the entire version control system is completely unreasonable, and it really made me question the implementation.
  • Offline support is non-existent in the front-end tools, with it expecting a constant connection to the source control web services. There is a dubious powertool that manually works by removing the project from source control, and upon reconnection you tell it to reattach and then do a sync.

The Ugly

  • The application tier won't install on a domain controller, or on a 64-bit system, both limitation being entirely unreasonable and hindering for small shops.

All in all it's pretty decent, but I think they called it done a little early.

Reader Comments

Did you consider options like CSV, Subversion, and other more widely used, non-Microsoft solutions?
John Harrum @ 3/7/2007 10:48:30 AM
thanks for the great entry

we are investigating options for my shop right now and this good information to consider

strangely few sites talk about tfs at all
Doug @ 3/8/2007 11:14:25 AM
Dennis, you've confirmed my hunches about TFS. When I heard about how horrendous it was to install back in the betas - I thought it sounded as though it was poorly-engineered, bloated (not necessarily with features) and over-complex. And to cap it all: the bloated licensing...

Subversion is just fabulous for us. Even non-coders are using it for versioning stuff like Word docs (the TortoiseSVN client goes from strength to strength) You say TFS is 'pretty decent'? It looks a bit lame from here :-)
DuncanS @ 3/8/2007 2:19:38 PM
Addressing the other commenters: TFS is *far more than source control*.

It's like six or more open-source tools rolled up into one cohesive, integrated package. It encompasses building on a build server(ant), continuous integration, project management (trac), bug and work item tracking (bugzilla), along with enterprise-class source control (subversion). Furthermore, all of these things are integrated together and understand each other on a fundamental level, unlike six different open-source projects.

Not that TFS is necessarily *better* than those six products individually, but we're comparing apples and oranges.

Also, Dennis: "If an enterprising team member decides to do some clean-up directly in the TfsVersionControl data-tier database". This is an completely irrational statement. What product, ever, allows users to merrily go into the internal structures of the application and start mucking around with it?

Nothing that I'd want to support.. and I also question the rationale of ever allowing permanent deletions in a source control system.
Jeff Atwood @ 3/26/2007 4:35:44 AM
"What product, ever, allows users to merrily go into the internal structures of the application and start mucking around with it?"

I would hardly call them internal structures. It's a front-end atop a database, just like thousands of other products, and yes--it is *completely* normal to expect and anticipate that a given application will not be the only venue of access to the data.

And without exonerating the team member -- they should have been more careful -- the way that TFS crashes to the ground when its imaginary data integrity is broken (usually when some of its unbelievably redundant data design isn't quite redundant enough) is amazingly amateurish. This is the sort of complete lack of anticipation or error handling that you see in a, err, TDWTF submission. It is grossly inexcusable.
Dennis Forbes @ 3/26/2007 9:26:17 AM
"Not that TFS is necessarily *better* than those six products individually, but we're comparing apples and oranges."

Is it apples and oranges, though? Source control is the most critical element of any software development shop, and no one is going to use TFS without using its source control. If the source control is fundamentally broken, and missing basic features, then the whole product is of dubious value.

I think TFS is half-decent, and maybe eventually it'll be great (presuming that it isn't abandoned, which is a very real possibility), but as a pure source control tool it is very second rate. In fact, every facet of the product is second rate as well (the work items, bug tracking, and so in is just so terribly implemented. There are far superior options in each realm).
Dennis Forbes @ 3/26/2007 9:28:34 AM

Add Comment

Name *:

Email Address:

(your email address is not displayed)
Website:

Comment *:


Dennis Forbes - Dennis Forbes is a Toronto-based software architect and technology writer