in

Redwerb

Tools, tips, and techniques for software developers.

Redwerb

Tools, tips, and techniques for software developers.

Team Foundation Server is Cool, but a Bit Underwhelming

I had the opportunity to evaluate Microsoft Team Foundation Server (TFS from here on) over the last week and I have to say, I'm not as excited about it as I was before. Don't get me wrong, I think TFS is compelling, it's got a lot of great features and they seem to be very well integrated with one another and with Visual Studio. However, it seems to be suffering from an acute case of versiononeitus (though I don't think it's terminal).

My main object was to evaluate the Team Foundation Build (TB from here on) for our product. TB is based on MSBuild. Anything you can do in MSBuild you can do in TB. As far as I can tell, TB is just a way to start a remote MSBuild process and report the results. It is well integrated into the IDE which makes it easy to know the status of the build at any given time.

Unfortunately, because it is based on MSBuild, it is very difficult to configure. MSBuild is a very powerful build system, however, it is not exactly simple to understand. For companies that have a full time, dedicated build engineer, MSBuild is probably great, otherwise, it is difficult to learn and it's easy to forget if you don't use it often (we tend to update the build process about once a year or so). I was not able to find a tool that would allow me to configure an MSBuild project, hopefully somebody is building one.

I have a love/hate relationship with the version control (VC from here on) in TFS as well. It has some very nice, advanced features that are missing from VSS. One of my favorites are shelves. A shelf is a place to put code before it is actually checked in. Other developers can access the shelf if they want (which is great for buddy testing).

Unfortunately, it is lacking in some basic usability features. For instance, depending on context, there are many different menu options that can be disabled and it's not always obvious why they are disabled. If you are used to VSS, trying to figure out how to create a directory in source control can be very frustrating. I think you have to map a workspace (which is similar to working directories in VSS, but slightly different), but it took me a few days to figure that out (and I'm still not sure if that's it or not). If this is the case, why do they have the menu option disabled? Why can't I just map a workspace when I'm creating the directory?

One of the nice things about VSS is that the directory structure in VSS does not have to match your directory structure on your local machine. Our VSS structure at work tends to be a bit deep for the local machine, so we map a couple of different VSS directories to the same directory on the local machine. When I tried to do that with VC, it refused to allow me to do that.

I did not evaluate the issue tracking, but I did glance at it. It certainly seems to be a much better issue tracking system then the one we're using at work now (it's a home-grown system).

If my company was more willing to spend a lot more time and money on TFS, I'm sure I would be able to get it working to suit our needs very well, however, they're not. I had about a week to evaluate it and put something together that would be functional.

Overall, I really like TFS. There are many products on the market that do similar things and are well integrated, however, none of them seem to do everything (most of them miss the build aspect). I am really looking forward for version 3 (the magic number in software) of Team Foundation Server.

Comments

No Comments

Leave a Comment

(required)  
(optional)
(required)  
Add

About Brian Brewder

I'm a software engineer in Kirkland, WA. I have been developing with .Net since 2002. My main area of focus has been designing and implementing a UI framework for an ERP system. Before I got into .Net, I developed for several years in a variety of languages and platforms including mostly ASP, though I've also developed applications for both Palm and Pocket PC devices.

I received my degree in Computing and Software System from the University of Washington in 1999. I have also completed a certificate course in Object-Oriented Analysis and Design Using UML, also from the University of Washington, in 2005.

Copyright Brian Brewder, 2007. All rights reserved.
Powered by Community Server (Non-Commercial Edition), by Telligent Systems