Exploring Visual Studio Team System Plumbing...

I've been getting a lot of questions from customers and partners when showing VSTS, particularly when they see the process guidance components. While the Dec CTP ships only with MSF Agile (the only one that appears), I decided to do a little more digging (as Beta 1 shipped with some others). Here's what I found.

The process guidance that you pick from the list is backed by a manifest of sorts, an xml metadata file that describes all the components the process guidance provides. In the case of MSF agile, you'll see a file called MsfAfile_MetaData.xml . You'll also see a compressed folder (.zip file) associated to it. That's where the meat is.

Here's the contents of the metadata file:

- <metadata>

<name>MSF Agile</name>

<description>Choose the MSF Agile process for projects with short lifecycles and results-oriented teams who can work without lots of intermediate documentation. The MSF Agile process is a flexible guidance framework that helps create an adaptive system for software developement. Agile methodology anticipates the need to adapt to change, and focuses on people as the most important component to the success of a project. Agile methodology also emphasizes the delivery of working software and promotes customer validation as key success measures. Roles performed are adaptable. </description>

- <plugins>

<plugin name="Microsoft.Pcw.Css" wizardPage="false" />

<plugin name="Microsoft.Pcw.Rosetta" wizardPage="false" />

<plugin name="Microsoft.Pcw.wss" wizardPage="true" />

<plugin name="Microsoft.Pcw.gss" wizardPage="false" />

<plugin name="Microsoft.Pcw.currituck" wizardPage="false" />

<plugin name="Microsoft.Pcw.scc" wizardPage="true" />

</plugins>

</metadata>

 

What is apparent from looking at this is that if provides the descriptive text for the wizard, as well the individual steps that need to be set up during the project creation. Notice that some steps provide wizard pages, some do not.

In the .zip file, I see the following:

 <DIR> Css
<DIR> Currituck
<DIR> Gss
1,118 MetaData.xml
3,520 MethodologyTemplate.xml
<DIR> Reports
<DIR> Scc
<DIR> Wss

Hmm, more metadata, as well as the MethodologyTemplate.XML file. Looking at it gives is the following:

- <methodology>

- <metadata>

<name>MSF Agile</name>

<description>Choose the MSF Agile process for projects with short lifecycles and results-oriented teams who can work without lots of intermediate documentation. The MSF Agile process is a flexible guidance framework that helps create an adaptive system for software developement. Agile methodology anticipates the need to adapt to change, and focuses on people as the most important component to the success of a project. Agile methodology also emphasizes the delivery of working software and promotes customer validation as key success measures. Roles performed are adaptable. </description>

- <plugins>

<plugin name="Microsoft.Pcw.Css" wizardPage="false" />

<plugin name="Microsoft.Pcw.Rosetta" wizardPage="false" />

<plugin name="Microsoft.Pcw.wss" wizardPage="true" />

<plugin name="Microsoft.Pcw.gss" wizardPage="false" />

<plugin name="Microsoft.Pcw.currituck" wizardPage="false" />

<plugin name="Microsoft.Pcw.scc" wizardPage="true" />

</plugins>

</metadata>

- <groups>

- <group id="CSS" description="Structure definition for the project. " completionMessage="Project Structure uploaded. " failureMessage="Project Structure upload failed. ">

<dependencies />

<taskList filename="Css\CssTasks.xml" />

</group>

- <group id="GSS" description="Create Groups and Permissions. " completionMessage="Groups and Permissions created. " failureMessage="Groups and Permissions failed. ">

- <dependencies>

<dependency groupId="CSS" />

</dependencies>

<taskList filename="Gss\GssTasks.xml" />

</group>

- <group id="WSS" description="Creating project Site" completionMessage="Project site created. " failureMessage="Project site creation failed. ">

- <dependencies>

<dependency groupId="CSS" />

<dependency groupId="Currituck" />

<dependency groupId="Scc" />

</dependencies>

<taskList filename="Wss\WssTasks.xml" />

</group>

- <group id="Rosetta" description="Project reports uploading. " completionMessage="Project reports uploaded. " failureMessage="Project reports upload failed. ">

- <dependencies>

<dependency groupId="CSS" />

<dependency groupId="WSS" />

</dependencies>

<taskList filename="Reports\ReportsTasks.xml" />

</group>

- <group id="Currituck" description="Workitem definitons uploading. " completionMessage="Workitem definitons uploaded. " failureMessage="Workitem definitons creation failed. ">

- <dependencies>

<dependency groupId="CSS" />

<dependency groupId="GSS" />

</dependencies>

<taskList filename="Currituck\CurrituckTasks.xml" />

</group>

- <group id="Scc" description="Creating source control. " completionMessage="Source control created. " failureMessage="Source control creation failed. ">

- <dependencies>

<dependency groupId="CSS" />

<dependency groupId="Currituck" />

</dependencies>

<taskList filename="Scc\SccTasks.xml" />

</group>

</groups>

</methodology>

 

AHA!!! This file links all the project setup actions together for the methodology, including Source Control setup, Work Item definitions (these may be different depending on the methodology), the setup for the Windows Sharepoint Services project site, and project reports.

 

Now that this seems really clear, it seems that the system has indeed been made to be very extensible and customizable. Indeed, drilling into each individual component reveals even more goodness.

 

This is very good news indeed, paricularly in the fact that the team system can indeed adapt to whatever type of process or methodology an organization needs.