Brian Harry has posted up to his blog soliciting feedback about what features would everyone like to see in the next version of Team Foundation Server vNext now that Team Foundation Server 2005 is almost out the door.
The features that I would like to see in Team Foundation Server vNext are:
Better support for occasionally connected developers.
Better ad-hoc collaboration tools.
Better integration tools.
Better query tools.
More Process Templates
Better Support for Occasionally Connected Developers
One of the features that I would like to see improved is the support for offline development. As a roving consultant I tend to need to work away from TFS quite regularly, but I still want to be able to work on my code. I’d like to see some work done around making Workspaces a management unit for disconnected access, not only for source code but also for work items.
I see it working something like this. I start out in the office (or atleast connected to the TFS server) and I am preparing to go onsite at a client where I will not have high speed Internet access but where I need to be able to edit code. I bring up the Workspaces configuration screen and select Offline. When I click OK it asks me whether I want to select individual work items (or a query for work items) that I want to take offline with me. I select some and click OK.
What happens next is it flags all the items in my workspace and the work items as being offline in the repository. In the offline state other machines which are connected to TFS will be warned when they try to change them.
With work items that are in offline mode, I can edit them while I am disconnected from TFS, and even associate them with check-ins (which just run locally, really just a change log).
When I finally get connected again I just go back into the workspace tool and select Online and it goes through a merge process, calling out any conflicts that I need to deal with.
Better Ad-Hoc Collaboration Tools
One thing that Visual Studio Team System with Team Foundation Server really rocks at is what I would call structured collaboration. That is – collaboration which is guided by the process template through work item workflows.
For teams adopting a particular process, especially when there might be an ocean between team members. But it doesn’t really do anything for teams that might be trying to use extreme programming practices when they are geographically distributed.
There are two features that I would love to see:
Collaborative text editing.
The scenario is that I might be working on a piece of code and one of my co-workers interstate sends me an instant message saying that they are having a problem with a piece of code I wrote. Rather than me wasting about 10–15 minutes setting up my environment to help them they can simply “host” a collaborative session and share out the source files they are working with.
I then connect to them (wouldn’t it be cool if this was an Office Communicator invite option) and I can see the source file in my window. Both of us can edit the document at the same time (their document is the source of truth but when I type into my document the update is routed to their text service).
We can annotate the code and even start debugging. When they run the program and hit a breakpoint I can see the code that gets hit and I can inspect things like the callstack and locals window collaboratively.
I don’t have a really good example of an application that does collaborative debugging at the moment, but here is a Mac application that does collaborative text editing.
Better Integration Tools
I think that there could possibly be another SKU that ships with TFS, probably a free one which is part of the bundle targetted at configuration managers. Here are some ideas for the kinds of things I would like to see in it.
With MSBuild we now have some extensibility in the Visual Studio build system, and Team Build gives us the ability to do builds on a build server at the click of a button but the experience of editing MSBuild files isn’t really all it could be.
I’m mostly referring to the lack of a graphical editor, and while this is probably in the domain of the MSBuild team I think that VSTS has room for another SKU for configuration managers which includes DSLs to deal with things like Build Scripts.
Other things that this SKU could enable (easily) are:
Building TFS event listening services (wizard driven type stuff).
Building check-in policies.
Building and editing Process Templates (basically an integrated version of PTE).
Better Query Tools
The work item query tool that comes with TFS is really functional, but I would like support for parameterised queries. For example, lets say as a team leader I want to query what work a particular team member has outstanding. At the moment I have to create a query for each team member, but if my team has a bit of churn its a pain to maintain these. When I pop up a dynamic query like this it should prduce a little UI up the top (just like in reporting services).
I’d also like to see user affiliated queries. At the moment all queries are tied ultimately to a particular project. But if I am working across multiple projects and I have a set of queries that I like to use on all of them I should be able to just add them to my own personal set of queries, independent of a project.
More Process Templates
This is a bit of a no-brainer. But you should be able to install Process Template packs. For example – you should be able to install a medical industry vertical for building medical software which includes process steps for HIPAA compliance.
One that I would find useful in the consulting business is a utility process template, and even a process template for ISVs which includes things like marketing guidance (I think that there is a vast untapped market here).
Sub Work Items
One of the things that I find frustraiting about the way work items currently work is that all work items are created equal. There is no support for sub-work items.
What is a sub-work item? Well a sub work item is a work item that is created under the auspices of another work item and affects the accounting of time for that work item. For example, if I have a high level task for which I have allocated four days. As a team leader I might like to keep track of the allocation of time at a finer level. So I might split that task out into say four smaller tasks.
When I do this that smaller task should have a special relationship with the parent task such that the time allocated to the sub task is deducted from the parent tasks total alotment of time.
I’m not exactly sure how this would work but it would definately allow more natural representation of work breakdown structures which are used in some methodologies.
While you are at it the process template could also define what types of sub-work items can be created from other work items. For example, from a scenario task I should be able to create a sub-scenario, or a sub-task, but not a bug (necessarily). I’m sure you get the idea.
Thats about all I’ve got for now, given enough time I could probably come up with some more.