I received some questions from a local and very sophisticated development shop asking about Team Foundation Sever and figured if these guys were asking these questions almost certainly other people would be was well.

Their Questions:

1. What is Team Server? What does it cover - version control? build processes? bug tracking? task management?

2. What are the different configurations available and the differences?

3. Costs? Per server? Per user?

4. What plugin / extensibility API does it expose?

5. How does it integrate with other non-MS platforms?

6. How does it integrate with other software (eg custom task management software etc).

7. How does the version control compare to Perforce? Branching, merging, change lists etc.

8. How does the version control handle large binary assets (typical asset size would be approx 1 - 16 MB, typically 10 - 20,000 assets per project).

9. Automated build system?

10. Notifications - email to users when builds are broken? How configurable is this?

11. Any support for distributed build tools? Eg integrating our custom data build tools into the system throughout a network?

12. Documentation support - eg integrating documentation with code check-ins etc.

13. Does it send data compressed over the network?

14. Security model - what is the granularity of access rights?

15. Exclusive check-outs?

16. Working from home / remote location?

17. Working offline? If the server is offline?

Answers:

1. What is Team Server? What does it cover - version control? build processes? bug tracking? task management?

Team Foundation Server is defined in the documentation as:

Team Foundation is a collection of collaborative technologies that support a team effort to deliver a product. While the Team Foundation technologies are typically employed by a software team to build a software product, they can also be used on other types of projects.

As the customer already noted three of the core deliverables of Team Foundation Server:

1. Build Process

2. List/Work item Tracking

3. Source Control

This is leaving off probably the two most import features of Team Foundation Server. By integrating the build process, source control, policy and work item tracking you can get a deep insight into what teams are doing and some analytics for future trends which leads to the 4th core deliverable of Team Foundation Server

4. Reporting

Having insight into how a team is tracking is really only half the answer their also needs to a mechanism to share this information which brings us to the last feature of Team Foundation Server:

5. Collaboration (Typically enabled through the Team Portal, Team Project and Process Guidance)

Interestingly it is the two missing categories that set Team Foundations Server apart from other offerings.

2. What are the different configurations available and the differences?

Team Foundation Server can be installed in one of four configurations:

1. Trial Edition

2. Workgroup Edition

3. Team Foundation Server Proxy

4. Team Foundation Server

a. Data Tier

b. Application Tier

An addition to these team foundation configurations you can also break out some of the services onto separate computers:

1. Build Server

2. Test Server and Test Rigs

 

Costs? Per server? Per user?

I am not in the sales cycle so probably not the best source of information but there is an entire whitepaper dedicated to this topic. If you are in Australia we also have some great licensing folks:

Stuart White

Arabind Coomaraswamy

Chris Birmele

4. What plugin / extensibility API does it expose?

The Team Foundation Server component model for modifying both the Process Template and creating plugins is built on to be entirely open(in many cases the entry points are defined in XML configuration files). In addition to the having this the development team and community is quite active in supplying samples of this:

Brian Harry

Buck Hodges

Rob Caron

This open platform has also enabled a ecosystem of add-ons like Teamlook, Teamprise, Teamplain, Teamword, TFSPermission Manager.

5. How does it integrate with other non-MS platforms?

Team Foundation Server uses Web Services for cross machine communication therefore the Team Foundation Server functionality can be made available to any computer. (see MSDN Team System Article on how to use these web services) This is exactly how companies like Teamprise, Teamplain, have built their clients to run on non windows computers.

6. How does it integrate with other software (eg custom task management software etc).

In addition to the integration methods mentioned above Team Foundation is also a popular platform for other software manufacturers to host themselves in. Examples of this is Borland with their Together and Caliber Products and Compuware Testing with DevPartner.

7. How does the version control compare to Perforce? Branching, merging, change lists etc.

Team Foundation Server supports all normally expected Source Control features such as branching, merging, exclusively locking, remote disconnected scenarios, labeling, searching on various properties high fidelity reporting (how much code churn per person per project per iteration etc) plus a couple of newer paradigms like shelving and optimization for things like branching scenarios (many version control systems do a full copy for branches). I would have some performance comparisons but most systems don’t allow this.

8. How does the version control handle large binary assets (typical asset size would be approx 1 - 16 MB, typically 10 - 20,000 assets per project).

Our internal servers Team Foundation Server are maintaining over 33 million assets including some of our games like Mechwarrior. Unfortunately I don’t have a breakdown of the file sizes but have asked the dev team for this information until then you might check out the numbers for our internal Team Foundation Server.

Users

  • Recent users: 944 (up 72)
  • Users with assigned work items: 2,458 (up 50)
  • Version control users: 1,759 (up 80)

Work items

  • Work items: 142,693 (up 11,000)
  • Areas & Iterations: 6,937 (up 300)
  • Work item versions: 1,167,246 (up 110,000)
  • Attached files: 46,468 (up 4,000)
  • Queries: 12,677 (up 500)

Version control

  • Files/Folders: 67,665,148/13,857,564 (up 5.5M/1.4M)
  • LocalVersion: 279M (up 35M)
  • Total compressed file sizes: 363.2G (up 35G)
  • Workspaces: 3,262 (up 220)
  • Shelvesets: 6,003 (up 2,100)
  • Checkins: 141,739 (up 8,000)
  • Pending changes: 993,915 (up 9,000)

Commands (last 7 days)

  • Work Item queries: 151,632 (down 420,000)
  • Work Item updates: 21,101 (down 125,000)
  • Work Item opens: 127,225 (down 210,000)
  • Gets: 93,721 (down 65,000)
  • Downloads: 15.7M (down 11M)
  • Checkins: 2,602 (up 30)
  • Uploads: 130,977 (up 21,000)
  • Shelves: 839 (up 100)

From Brian Harry’s blog: http://blogs.msdn.com/bharry/archive/tags/TFS+Dogfood+statistics/default.aspx

9. Automated build system?

Yes Team Foundation Server includes an Automated Build System. This system is based on MSBUILD and offers the additional functionality of automatically running tests, profiling, code analysis, verifying policies, collating the changesets and workitems for reporting.

For more information on MSBuild please see: http://blogs.msdn.com/msbuild/

10. Notifications - email to users when builds are broken? How configurable is this?

The user interface enables users to subscribe to set three types of “Alerts”. By default you can subscribe to three sets of notifications:

Additionally you can subscribe to these events event through a utility called BisSubscribe.exe:

AclChangedEvent

BranchMovedEvent

BuildCompletionEvent

BuildStatusChangedEvent

CheckinEvent

CommonStructureChangedEvent

DataChangedEvent

IdentityChangedEvent

IdentityCreatedEvent

IdentityDeletedEvent

MembershipChangedEvent

NodeCreatedEvent

NodePropertiesChangedEvent

NodeRenamedEvent

NodesDeletedEvent

ProjectCreatedEvent

ProjectDeletedEvent

WorkItemChangedEvent

For examples of creating a new notification please see:

http://blogs.msdn.com/jpricket/archive/2006/09/05/741260.aspx

http://blogs.msdn.com/darrenj/archive/2005/08/01/446068.aspx

http://blogs.msdn.com/buckh/archive/2006/04/10/event-filtering.aspx

http://blogs.gotdotnet.com/psheill/archive/2006/02/01/522386.aspx

11. Any support for distributed build tools? Eg integrating our custom data build tools into the system throughout a network?

MSbuild was written to be extensible and integrate with existing tools through easy to use XML configuration files. Many of the commercial build utilities are already using and/or integrated with MSBuild –such as Cruisecontrol.net. In addition to making these actions part of the build script I have found the generic tests set to run as part of the build to do just as good a job with a rich user interface and support for managing/filtering etc.

12. Documentation support - eg integrating documentation with code check-ins etc

This would typically be done through an entry to a work item (to be either associated or resolved) on time of check in and linked with this work item.

The links to the documentation can exist in a couple of ways.

1. Checked in as Files (ie doc, HTML etc) Team Foundation Server makes it trivial to link all object checked in (as well as other workitems.)

2. Process guidance files that exist on the Windows Sharepoint Site – Again making it easy for linking.

3. External files once again to linked in a Workitem entry.

13. Does it send data compressed over the network?

Team Foundation uses Web Services for cross machine communication and by default automatically configures IIS use Compression.

14. Security model - what is the granularity of access rights?

There are a couple permission areas:

1. Server basis (server-level permissions)

2. Project basis (project-level permissions)

3. Area-level permissions for viewing and interacting with work items on a project basis

4. Source Control

5.

I am assuming you are referring to Source control permissions which are specific to source code files and folders. In the screen shoot below you can see the permissions available to be set for an individual file.

15. Exclusive check-outs?
Yes this can be set at the project level via the team explorer

Or at the source code level via source control explorer (see below)

16. Working from home / remote location?

Since cross machine communication is accomplished through web services remote access is vastly simplified.

17. Working offline? If the server is offline?

Yes, you need to change the file property to offline via a command utility called TFPT and save changes your local workspace. Any subsequent check-in does a get latest which would resolve if there are conflicts to be merged.