I know that a lot of people have had bad experiences with TFS over the years, and so does the TFS development team. The team at Microsoft is very intent on learning what it is that people find irritating, problematic, or difficult, and correcting it. Some major headway was made with the 2010 release of Team Foundation Server to make it easier to setup and administer, and also to improve the usability of several of its key features.
That said, there is still room for improvement and both the team and I understand there are still opportunities to improve. In all seriousness, the team at Microsoft wants to make TFS an approachable, no-brainer install decision for .NET teams, even small ones. This means they want to be able to compete for your attention with the likes of SVN, Git, Jira, Perforce, and anyone else making collaboration tools for developers.
The point of this post is for you to help me know what feedback I can give the TFS product development team as they look ahead to the next release of TFS. I am looking for legitimate feedback I can give the team on how to improve the TFS product.
Please bear in mind that I am interested in your feedback on TFS 2010, as TFS 2008 was improved upon 10 fold in the latest release. Also, I am not necessarily looking for feedback on Visual Studio, just the TFS side of the house. Please realize that the team who makes this product at Microsoft is just as committed and passionate about making great software as you are. They just really need your feedback to make the thing you want. In fact, they want to make a tool that every developer loves to use. Really. So what needs to change to make that the case?
Recall that TFS functionality is broken into the following major areas and I am looking for feedback on the 2010 version.
- Version Control
- Work Item management
- Team Foundation Build
- SharePoint integration (optional)
- Reporting and SSRS Integration (optional)
Thanks for anything you have. Thank you also for being respectful and not making this a bash-fest.
I can only give you feedback on TFS 2008. Not sure if that’s useful?
Version Control:
With SVN I can:
– create a repository in any folder, on the fly.
– copy the whole repository to a memory stick.
– on any computer, install SVN if necessary, read from my repository.
– delete the folder, and the repository with it, when I am done.
This is not the typical developer scenario, but is exactly what I do when I prepare a coding session / presentation with live demos.
I use SVN tags to annotate special versions. That makes it easy to jump forward when I screw up. Or cheat, when I run out of time.
I can’t do that with TSF.
It’s also comical that checkin-policies are running client side. Uninstall the policies and you can check-in what you want.
Work Item management:
Two things:
– I can’t delete work items I added by mistake. I can always close them, but the noise add up.
– They are too hard to work with. It takes longer to add a user story, split it up in tasks, and update the estimates than the actual job. The current UI inhibits any attempt on collaboration as we spend too much time fighting the tool.
– I have seen screencasts demonstrating the new Excel woorkbook for agile planning. But I have never seen it in real life. Rumors has it is a part of the SharePoint integration.
Team Foundation Build:
If you tell me that the build is set up by magic, I believe you. The one time I opened a build definition, I closed it as fast as I could and prayed I didn’t change anything.
To make it worse, my company uses inhouse developed extentions. If they are not installed, parts of the definition is unreadable.
There should be some kind of a plug-in architecture making it possible to install any missing part on the fly.
Documentation! Not on installing, but on actually using the templates provided, work item tracking, setting up automatic build scripts, creating/running reports, etc… It would be great if I could just install and have some tutorials front and center on how to use the system, without having to pay for training from skilled, but exspensive resources.
Also, the sharepoint integration needs a little work. The most annoying thing is when I create a Team site, but I have to add permissions to the sharepoint seperately. I have already set my security/permissions on the Team Project, I should not have to duplicate that step on the SharePoint team site.
Definitely need a Delete work item operation.
Need a way to easily override a checkout. Example, someone who has files checked out leaves the company. I need those files checked in, even if I loose the ex-employee’s work. It would be nice to have an easy way to accomplish this.
Thats all I got for now.
Thomas: Maybe I’m missing something but I’d think you can use labels in TFS to annotate special versions (should be an equivalent of SVN’s tag).
Brian: To override a checkout, use tf.exe command line tool… Details are here… http://blogs.msdn.com/mrod/archive/2007/01/08/undoing-a-checkout-that-belongs-to-another-user.aspx
To delete a work item, use tfpt.exe command line tool from TFS Power Tools…
I think it’s about time you scrap the exclusive checkout model. File checkout is a slow nonsene operation. Why does the server need to know our intention to modify a file?
TFS server url in the sln file – BAD idea.
Get Latest results in one dialog pop-up per project asking would you like to reload?
Get Latest doesn’t get the file if the server thinks you already fetched the latest version? WHAT?
Work item stuff is in bad shape.. too slow, poor usability. Why do these tools force me into using the mouse?
Maybe the question should be, what do you like about TFS? Put some of your team member using SVN, Git, Hg, then you’ll know what is good.
One of my main complaints with VS/TFS is related to the checkout/checkin model. In a multiple-checkout environment, I don’t see the point of making everything readonly, and giving the user a view of ‘what have I checked out’. Svn instead gives me a view of ‘what have I actually changed’ since my last commit, which is much more useful, IMHO.
@Jaroslav, I am aware that I can use labels. My point is that creating a temporary repository in TFS is hard, you can’t delete it when you’re done (I believe), and you can’t just copy it to a memory stick.
Source control is definitely my biggest point of pain. The changes in TFS2010 at least bring us a step closer to where we were with Subversion 1.4, with server-side branching and graphical views of branch histories. However, as already mentioned above, the exclusive checkout is really unnecessary, as is making local copies read-only by default. If the price of tracking changes is hidden folders a la .svn folders, than I would be happy with that. And please – when showing files to be checked in, please can we only show those that have actually changed?!
It’s time to make a break from Sourcesafe, and catch up with what the rest of the world have been doing.
Oh, and related to the read-only checked-out files, I really wish Team Build would stop copying everything to Output/$(Configuration) – the number of builds I have which have failed because one of the several thousand files that are in the solution and being copied failed is ridiculous. Just leave the files where they are in the repository; it saves time and resources!
@Jaroslav Klumpler
I am aware there are command line tools to accomplish this. The point is that I don’t want to have to go and run a command line tool and know all of the arguments to pass it. I want an integrated solution, right-click and perform action. I don’t want to leave my IDE, because the second I do, I am a little less productive.
After 3 versions of Team Foundation Server, one thing that is missing is a decent Project Management Tool on top of TFS. A tool such as TargetProcess, VersionOne, Rally, … Telerik is working on such a tool named TeamPulse.
From the viewpoint of the developer when you are in Visual Studio you see all the Work Items and it seems like you are always in “big view” mode. This is not a nice experience, a better experience would be if you would for example have different views on top of the Work Items:
– Default view: show only your work items in the current sprint
– When you “zoom out”: show the teams work items in the current sprint
– when you “zoom out”: show all the sprints
…
Now, it is a bit a mess to navigate through all the work items and it would be nice if the Team Queries could support more macro’s such as @currentiteration or custom macro’s.
Most of these are great feedback, folks. Thank you for the serious comments and keep ’em coming.
TFS sync issues and questions
http://social.msdn.microsoft.com/Forums/en/tfsintegration/thread/8001497c-75f1-402a-a72b-aaf67bc349ce
Even with the beta release of the TIP, this still is an area that desperately needs addressing in the next version of TFS…err Dev11.
I hate, hate the workitem workflow editor in the TFS Power Tools. It’s overly complicated, doesn’t allow us to have the flexiblity we need(parallel assignments/multiple areas/multiple interations/etcs), and simply is too difficult to use (why oh why do I have to have my admin people launch Visual Studio?!?!)
I also want to have Dev11 give us the ability to assign multiple people to work items.
Button to show/hide deleted objects. I’m constantly having to go to tools->options… to show/hide deleted items. By default I don’t want to see them, but to toggle it back and forth is a pain.
I’d like to see some distributed features such as in Mercurial. Given the non version control role that TFS plays on many teams, I get that it probably can’t be a true distributed version control system, but perhaps it could give some of the benefits. For example, I’d love to be able to create a local clone of a project without having to branch on the server. The ability to revert/commit to a local clone before checking in to the real source control system would aid my workflow a lot.
One thing i find annoying is that there is no simpler search option. we often search for work items and its painful using the queries. the other thing that is a bit painful is understanding what items are linked to what.
for example if a Product backlog item could show all of its child and its items this would give us a better idea of the state and makes for easier navigation.
I would like to get state model within the source control that developers can do their changes in one state and promote changes to another review state and afterwards promote this code to a state where the build process uses them at a nightly build. that would be cool
1 that checkout and read-only isn’t needed, and rather let it figure out what has actually changed. This will help with offline mode as well, and integration with other tools as they don’t have to know how to check out files before modifying.
Merging can be quite painful, and sometimes messes up and keeps the wrong version. It shows a conflict when two files are changed from the base version, even though both branches have made the same change.
The shelving stuff is really lacking a lot. It doesn’t even merge the changes when unshelving.
Please add a local/personal commit that doesn’t check in to the branch on the server, but still records my changes and allows me to undo back to that point. Now I have to reach a stable point before checking in, and in the meantime work without a history (and only save using shelvesets).
Please open up the licensing to allow external bugtracking apps to use TFS as the backing store, so everything can go into work items.
Please create a streamlined UI for work items. Something that isn’t one-size-fits-all table views, but optimized for some process, like scrum or other.
Please let the unit test results appear directly in the build report, at least the failed ones. Now I have to grab the test results file and open it in VS.
AFAIK, communication between the main server, build server and sync servers isn’t firewall friendly. It’s using several ports, and initiates connections in both directions, making it hard to use with subnets and DMZs (and an IT dept with Option Strict turned on).
Work item controls:
– multi-item selection drop down (are values updated in cube properly)
– Ability to add a print screens in the description field (like a rich text fields in outlook)
– Being able to add a hook to auto Calculate fields (currently have to write (and deploy/maintain) a web service or use excel)
I don’t like the way TFS controls file in the source control. It treats it like it they are no text files, which they are. TFS opens it, adds un-necessary metadata to it so it can do his thing. Why doesn’t it just treat files like files?
Same thing happens with merge. Create a branch, delete a file in the branch, merge it back, create the file again with the same name, rename it and try to merge it back. There you got a problem because TFS tries to “understand” what you are doing and thinks that you want to undo the first deletion. I don’t want it trying to figure out my thoughts. I just want it to merge a Source with a Target.
Merging in Visual Studio is dangerous!
When a merge conflict occurs, the merging tool refers to “Theirs” and “Yours”, while the conflict dialog has buttons like “Take target version” and “Take source version”.
But what is source and target in a merge?
In our case, we chose the wrong button and had to fix the broken code manually.
David,
Please send me your email so I can send you the ‘list’ I have compiled. It is quite extensive as we just finished a huge TFS 2010 upgrade with the Agile and SCRUM for Team System templates. I have many areas I would like to give you feedback on and so would our team.
Regards,
Kris Giorgetti
[email protected]
2010 is my first TFS experience in production use and I’ve use VSS for years, so forgive me if I missed existing functionality…
Pinning. What happened to pins? I know they can be hard to maintain and good branching schemes should replace the need, but sometimes you just need a quick temporary revert to get a build out.
Work flow visualization for Work Items. It would be nice to get a graphical view of a set of work items that shows the Work items’ current state relative to the overall work flow.
Source control / Changeset reports. There seems to be extensive reporting for work items, but how do I go about creating reports to see all changesets since a certain date, or to see all the files a certain developer modified on a certain day?
Lack of Robustness in new Team Build. I love the new Team Build using xaml, but the tasks that ship with 2010 are quite limited. I found myself having to shell out to MSBuild for seemingly simple things like deleting all files in a directory vs. having to delete the entire folder. MSBuild has this problem in general until you add in 3rd party task libraries.
These are minor issues, as far as I’m concerned, and overall TFS 2010 is a fantastic product. I’ve encouraged all our developers to use the TFS platform as an example of how to build n-tier systems using MS products.
@Jaroslav Klumpler
I think the command line tools are great to have, but It seems like an attempt at “Security though obscurity” since all of the functions that are outside best practices seem to fall in the tf.exe and other tools. I agree that rollbacks and checking in code belonging to others should be avoided, but When I do need those features it’s usually not a good time to be digging through google and /? commands to figure out how to get it done.
Here’s another one I just hit today…
If you delete a folder in the trunk.
Forward merge that into a branch. (It should include the delete?)
when you reverse merge the branch into the trunk. (It should not try to re-create the folder)
TFS, uses a LOT more resources on the server part. We have a small installation that is used by an average of 1 person. We ran TFS 2008 on a 1.6 Ghz cpu with 2GB of RAM and it worked great. Going to TFS 2010 (same hardware), everything is considerably slower. Also, I now have to bounce the server once a day because it now sucks up ALL of the ram. Quite frankly I don’t know if this is a bug in sql 2008, reporting services, or the tfs code itself, but I think you guys need to figure this out.
@chris lively
What version of Sharepoint are you using? When I was running TFS 2010 using the default WSS 3.0 I was running fine on 2 GB, but after installing SharePoint 2010 It’s sucking all 6.5 GB I was able to allocate to the VM and screams for more. (I think sharepoint 2010 wants 8GB minimum)
Microsoft Developer User Research wants to hear your feedback on a wide variety of iniatives and tools. Sign up for our usability studies by filling out our survey at the link below and let us know what you think!
http://bit.ly/9eIf7H
Thank you for your consideration and please email us at [email protected] with questions or comments!
Microsoft Developer User Research would love to hear your insight and feedback on our tools and initiatives.
Fill out our survey and sign up to participate in User Research studies.
Questions? Email [email protected] for more info.
SURVEY LINK: http://bit.ly/9eIf7H
Build Automation is my biggest pain point. I’m currently using CruiseControl.net, but I’m trying to move to TFS, and it just isn’t working. I cannot find any easy way to publish a clickonce application to a UNC path on our network. Visual Studio 2010 will let me publish easily, but I can’t seem to translate that into an automated build process with the current templates in TFS 2010. This should be a no-brainer for Microsoft – why is it so hard?
To get TFS 2010 to publish upon build, add the following to the build definition. Go to the “Process” section. Open the “Advanced” section. In the “MSBuild Arguments” field add
/t:Publish /p:PublishDir=\\YourServer\FolderToPublishTo
That should perform the publish required for a ClickOnce App. Now that being said, I have found that TFS does not increment the publish version. So, every version published from TFS will have the same version number unless manually changed in the project properties beforehand. And because the version number never changes, it doesn’t know to re-download the version. To force that you have to clear the application cache on the user’s machine.
1) Build. I hate it in 2010. I absolutely hate it.
2) Lack of migration information for converting 2008 scripts to 2010
First of all, I’m a CM person and not necessarily a developer. I learned XML for MSBuild/TFS 2008 and that worked fine. In 2010, not only do I need to learn Windows Workflow, but also an additional language if I want to customize any build script.
There are tons of tutorials on how to “create” a build script and how to use Windows Workflow, but these are not at all practical from my point of view. I have not yet found any decent help on:
1) Which language should I learn to customize MSBuild? VB.NET or C#? Most of the tutorial on the web are in C#, but when customizing a build definition TFS is reads, “Enter a VB expression”. So which is it? No one has addressed the pros and cons of which language to learn if one knows neither. If one is not a developer, how would one know which direction to go?
2) How the heck do you translate things like $(WorkspaceName), $(BuildDefinitionName), etc., to TFS 2010? This syntax will not work when creating a build definition. How the heck do you get this information? I have not seen any decent information on this, thus I’m pulling my hair out trying to get what I believe is very basic information.
3) Common code – how is this done in TFS 2010? No one is talking about this. We have two target files – DEVCommon.targets and Common.targets, where the majority of our common code lives. This allows for each build script to be very streamlined. How is this handled in 2010 using the workflow? Where can this information be found?
4) I realize that Visual Studio / .NET started out as strictly a development tool. However, as TFS has progressed it’s become an ALM tool. Yet with each new release of TFS the entire suite is becoming more developer centric, meaning one must have a sound coding skills to be able to tweak it. As mentioned, I’m a CM / Release Management person and lack solid skills in theses areas. The TFS suite is getting more difficult to use because of this. And as most non-developers will probably attest, the last group / person you want doing CM / RM related tasks is a developer.
5) No CM / RM Training. The TFS Admin class is rather useless unless you are completely new to TFS. There are NO training classes specifically related to MSBuild, or how to effectively do CM / RM with the TFS suite of products. Again – developer centric. There’s a lot of people who want to take advantage of the rest of the suite but you’re making it near impossible due to lack of non-developer training for TFS.
I am frustrated beyond description. I’m not above learning languages or anything else to do my work. But Microsoft is excluding too many other folks to accommodate developers, and I feel this is a shame. And there’s almost no decent, usable training if one is not a developer.
I read that as ‘recall that TFS functionality is broken IN the following major areas’…
Multi-solution builds, distributed over multiple agents (we have a large application with multiple solutions, we had to stop our migration to TFS team build because of out-of-the-box support for this).
Source Control is awfull, Working with shared libraries is too complicated. Documentation on it is poor. It’s far too easy to end up with circular references. You really shouldn’t have to read a manual in order to use source control. After reading through the documentation you still find you have no idea what it had done half the time. It’s just too unpredictable.
Source Control is awfull, Working with shared libraries is too complicated. Documentation on it is poor. It’s far too easy to end up with circular references. You really shouldn’t have to read a manual in order to use source control. After reading through the documentation you still find you have no idea what it had done half the time. It’s just too unpredictable.
One of my biggest pain point: No ability to change process template of a project, without affecting source code in version control. This is a design deficiency. Source code should always be preserved with 100% history/fidelity, regardless of whether we change process template.
Nice information, many thanks to the author. It is incomprehensible to me now, but in general, the usefulness and significance is overwhelming. Thanks again and good luck.
Queries aren’t automatically pointed to the new iteration name when renaming an iteration. You have to manually go through each query and point it to the new iteration which takes a lot of time.
Other bug trackers allow you to enter in release notes when you resolve the bug. Then you can generate a report to display all of the release notes. However, I don’t see any way to do that out of the box with TFS 2010.
I almost like TFS 2010 for it’s several features and I know that it’s very complicated experiences with TFS over the years. Thanks for well writing!