Microsoft officially released the preview of Vnext i.e. VS 2011, TFS 2011 and TFS Azure (also known as TFS Service) at the Build conference on 13th September 2011 @ California. It wasn’t too long ago I remember helping customers set up ALM processes using TFS 2010, so what are the compelling reasons these customers who have heavily invested in TFS 2010 should consider moving on to TFS 2011. In this blog post I’ll try and answer what exactly is new in TFS 2011, how TFS 2011 is different from TFS 2010. Note, that the product has been released in preview and may considerably evolve before the final release. This blog post is my independent assessment of the features and is not influenced by my employer or Microsoft.
A little over a year and a half back when Microsoft started working on VS TFS 2011, the team closely analysed the feedback fed through from different channels such as Visual Studio UserVoice Site and the Visual Studio Connect Site. The TFS 2010 feedback was aggregated and classified into a number of buckets that Microsoft could use to build the theme around VS TFS 2011.
“Yes, i am a big fan of the metro style UI’s ”
1. Refresh and Modernize – TFS 2010 was about features – infrastructure improvements, scalability, disaster recovery, reliability, you all will agree that VS TFS 2010 was a completely revolutionary release with the introduction of workflow in builds, Microsoft Test Manager, Lab Management, Linked Work items, dashboards, integration with project server, power tools, etc Microsoft managed to deliver an end to end Application Lifecycle Management solution. The theme for TFS 2011 has been around simplification of those features to enable easy access and implementation of those features in your ALM processes. For example, the new team web site has been build refreshed and modernized and now uses MVC and JQuery!
2. Productivity – Major investments have been made to streamline the day to day workflow and addressing long standing wish list of users around performance and ease of use. Some of the most common complains have been “Why is the merge window a modal window! It blocks me from getting answers I could only get by accessing Visual Studio.”, “Why do i need to install third party tools to get the improved search and replace experience, why does VS not offer that experience natively?” and the all time favourite “Why can’t i work disconnected from TFS…?”
3. Processes – The Microsoft team has made further investments to enhance the ALM processes in TFS 2011. With introduction of tools such as Feedback Manager, code reviews, Exploratory testing, storyboarding Microsoft simplifies ALM implementation.
4. Integration – Bringing teams, tools, processes together! Teams often complaint that there is a disconnect between teams managing software in production and developing software. With the introduction of Integration between System Centre Operations Manager and tools such as IntelliTrace in production the MS team has made a best effort to integrate teams managing operations and team developing software.
This slide is clearly the most famous slide that came along with TFS 2010. This view is also known as the Auditorium view of TFS 2010.
TFS 2011 builds on top of TFS 2010, colour coded as orange, you can see the introduction of new features such as code reviews, storyboarding, exploratory testing, feedback manager and colour coded as blue, you can see the introduction of TFS as a service.
Though the offering of hosted TFS has been out in the market for quite some time now, leading players such as Praktik hosting, TeamDevCentral, DiscountAsp, … have been offering basic plans almost as cheap as $5 per user/month but one would always expect Microsoft to raise the game by offering the experience natively. Not to deny that Microsoft with Codeplex has been doing something similar but free of charge.
So, this begs the question, “How is TFS as a service different from hosted TFS?” Microsoft has ported TFS to the Azure platform. This enables Microsoft to offer TFS SAAS. Porting to Azure had its set of challenges. This involved porting the TFS data tier from SQL Server to SQL Azure, the ASP.NET application tier (running as a Web Role), the TFS Job Service and the TFS Build controller/agent (running in an Azure VM role). SQL Azure databases are capped at 50GB at present so rather than storing the attachment, work item, source code, etc data as a SQL server blob this has to be moved to Windows Azure blobs.
1. Architectural changes for TFS Azure - http://blogs.msdn.com/b/bharry/archive/2010/10/28/tfs-on-windows-azure-at-the-pdc.aspx
2. TFS as a service, preview – experience - http://geekswithblogs.net/TarunArora/archive/2011/09/16/tfs-azurendashtechnical-access-preview-experience.aspx
It would be hard to summarize each of the new features introduced in TFS 2011, but below i have tried to classify the important ones by role. Some of the features span across multiple roles as well but i have tried to pin them down to the role i thought they were most relevant to.
Let’s get started with Developers, found this video that i could not resist from posting here,
Developers, Developers, Developers!!!
Team Explorer in TFS 2010 was.
- Not extensible
- It loaded everything, every time when most of the time you did not need reports/documents, etc.
- When ever there was need to introduce new features in Visual Studio, MS had to resort to adding a new window for example, Pending Changes, History.
Welcome to the new Team Explorer in TFS 2011,
To name a few of the improvements,
- Navigation friendly
- Data on Demand (Async calls)
- Context driven
- Easy to extend
- And yes, finally, it has its own integrated search bar, at present only work items can be searched through this, but in the future MS may look at extending this to work as a search plug in for searches in the context of Team Explorer.
I am yet to edit the demo videos i have recorded, till i get around doing that, I’ll leave this slide to remind me that i need to revisit and attach the demo videos of Team explorer 2011 here.
If you are enjoying this blog post, don’t forget to subscribe to http://feeds.feedburner.com/TarunArora I’ll be exploring this space and posting further solutions…
But in the demo I discuss,
=> My Work
- Assign task to In Progress and Remove from In progress, this auto updates the work item without you having to go in and edit the work item state.
- Suspend tasks, the suspension saves your VS TFS session as is, retains windows positions, breakpoints, traces, etc, so you can come back at any later point to resume the task from where you left off.
- Add work item by Id – This is one of my favourites. In TFS 2010 i sometimes knew the work item id i would like to check in against but until I ran the query to retrieve the work item I would not be able to check in against the work item. I think adding work item by Id really enhances the check in experience.
- Request Review – Code reviews are an integral part of development. VS TFS offers a great experience for request and response to code reviews, it is simple to track and implement against code reviews, the entire process is tracked against a work item so its easy to go back and analyse the review later as well.
- My work query is customizable.
=> Pending Changes
- Multi line check in comment
- Include exclude changes with drag and drop experience.
- Option to chose between rich tree view of pending changes or flat view and option to see pending changes of the current solution open in solution explorer.
- Associate / Resolve Work Item: This feature was available in TFS 2010 as well
- Work disconnected from TFS – explained in detail in the section where local workspaces are explained.
- Shelve window in Pending changes context is still a modal window but it certainly has new features in it to show the pending files in tree view or flat view and from current solution rather than all pending files.
=> Code Review – Some of the changes made in the TFS operation database to accommodate the code review feature has been highlighted in the slide below. There has been an introduction of two new work item types, namely CodeReviewRequest and CodeReviewResponse in TFS 2011. This has been accompanied by two new tables tbl_Comment and tbl_Discussion to store the code review discussion and workflow logging. Please note, it is not advisable to query the TFS operational database directly, it is recommended that all interactions made with the TFS operational database is done using the TFS API.
- Workflow driven code review feature, code reviewer notified by adding a new task in myWork.
- Accept code review at ones availability
- View code changes to be reviewed using new TFS 2011 diff tool that shows inline before and after changes
- Add comments for code review at code level, file level or in general.
- Code review process tracked end to end against the code review work item and can be revisited later as well.
- Code review can be done against pending changes as well as against a checked in change set.
- Easy to extend using TFS API using the IDiscussionService
- No nesting of code reviews, it is not possible to link two code review work items to each other.
- File in review once associated to the code review cannot be modified and reattached to the same code review request.
To recap the changes we saw in the demo on Team Explorer in TFS 2011
1. Team Explorer 2011 - http://blogs.msdn.com/b/bharry/archive/2011/09/19/the-new-team-explorer-in-tfs-11.aspx
2. Database changes between TFS 2010 and TFS 2011 - http://www.codeproject.com/Articles/257062/Database-changes-between-TFS-2010-and-TFS-2011
1. Developer Collaboration with TFS 2011 - http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-811T
Moving forward i would like to discuss the Version Control Improvements. The one thing that was most frustrating in TFS 2010 was not being able to work disconnected. But having said that you cannot take the credit away from Microsoft for the swift server response experience you had dealing with Version Control while working connected with TFS. But why is that?
Conceptually, I like to think of a TFS workspace as a container that bridges the gap between your local computer (acting as a TFS client) and the server. TFS is able to map the folders on the servers against your local and smartly store the last changeset id associated with that file in your local workspace cache. By using workspaces to remember files and versions downloaded TFS can use this information to massively optimize the network traffic between your computer and the TFS server. When you ask the server to “Get Latest”, it already knows what versions you have of everything so it can simply send you what has changed. This is one of the design decisions that the team at Microsoft took to optimized for distributed teams working over wide area networks. However, this meant that every time you wanted to check out a file your workspace details stored on TFS server would need to be updated, but if TFS was down, you would not be able to check out the file at all!
Microsoft has introduced Local Workspaces,
- Local workspaces: Those of you who have worked with SVN in the past would be familiar with the “Modify – Merge – Commit” model. In simple terms the client copy of the workspace becomes the master copy. This removes the need to keep any read only flags on the files, the user can simply open the file in any editor, make changes to the file without having to check out the file. You can create new files in the workspace and TFS 2011 will detect and notify that a new file is available in the workspace and you then have the option to promote that file by deciding to add it to the source control or to simply ignore it. Local workspaces are enabled by default in TFS 2011, you however have the option of disabling the default on Local workspaces at individual workspace or at the Team project level as well. Local workspaces certainly improve the whole offline – come back online and working disconnected experience with no clutter causing friction between the developer and visual studio.
- Diff & Merge enhancements: What was the one thing that you have asked Microsoft for since TFS 2005, well don’t know about you but I have always been voting up for including Baseless Merge from the Merge UI. For those who are unfamiliar with baseless merge, it is the process of merging two branches that do not have a parent child relationship. Though baseless merge was available through the tf.exe command line but being able to perform this from the Merge UI makes it so much easier. Good work Microsoft!
Along with Baseless Merge you now also have the option of performing a roll back on a faulty check in right from the TFS UI in the folder/file/branch history view. This has been made available in TFS 2010 in the August 11 power tools. It is now as easy as right clicking the change set from the history view and selecting the roll back change set option in the pop up menu. This again was possible to do using the tf.exe command line but being able to perform this from the UI makes it so much easier.
Now you will be able to relate to this, most of the times when you edited a file and performed a get latest this resulted in the user having to select even though the editor identified that this was a case that could be auto merged. Microsoft in VS TFS 2011 has by default enabled auto merge, so when ever the editor identifies that it is able to self address the conflict and resolve it by auto merge it will go a head and do that on your behalf. You however have the option of disabling this if this is not your preference.
TFS 2011 boosts of a new Diff tool, this build in diff tool gives you inline file comparisons as well as the option to select from various views.
Database changes to accommodate Local workspaces
And to summarize what we discussed so far about the improvements made to Version Control and Merge in TFS 2011,
1. Diff between Get latest and Get Specific Version - http://geekswithblogs.net/TarunArora/archive/2011/07/24/tfs-get-latest-vs-get-specific-version.aspx
2. Workspace Improvements - http://blogs.msdn.com/b/bharry/archive/2011/08/02/version-control-model-enhancements-in-tfs-11.aspx
3. Merge Enhancements - http://blogs.msdn.com/b/bharry/archive/2011/08/31/merge-enhancements-in-tfs-11.aspx
4. Roll back change set from tf.exe - http://geekswithblogs.net/TarunArora/archive/2011/06/27/how-to-undo-a-changeset-using-tf.exe-rollback.aspx
1. Local Workspaces Demo: http://www.youtube.com/watch?v=g8Hf067fKUU&feature=channel_video_title
Next, lets discuss what’s new with the Build in TFS 2011.
TFS 2008 and TFS 2010 introduced major improvements in Build process, with TFS 2008 introducing CI and TFS 2010 introducing the ability to customize the build process in the all new WF experience as well as Gated check-ins putting a full stop to the loss of productivity because bad check in to source repository breaking the source code compilation. TFS 2011 does not introduce too many ground breaking evolutions in the build process, however introduces several enhancements.
- The biggest improvement for me is that the build process for gated check ins allows for more than one check in at a time.
- The build process can run unit tests from multiple frameworks, including MSTest, NUnit, xUnit, etc.
Apart from this you will notice that there have been some changes done by introducing new tables tbl_BuildBatch and tbl_BuildQueue in the TFS Operational database. This has been done to accommodate some of the new features introduced in the build template
- Enabled – When the build template is set to the enabled flag, users can requests for new builds.
- Paused – The users can request new builds but these will be added to a queue and will not start unless the build administrator forces them to start.
- Disabled – Same as the disabled option in TFS 2010, does not allow builds to be triggered from the build template.
Apart from this the user now also has the option to re-queue a completed or failed build, which will take the queue parameters of the original build. This is quite nifty if you have a lot of custom parameters to pass for a specific build.
So to recap Builds in TFS 2011,
Now, the biggest investment area of TFS 2011. Productivity! With Power tools build right in to Visual Studio 2011, its like IDE on steroids.
1. Private Extension Galleries - http://blogs.msdn.com/b/visualstudio/archive/2011/10/03/private-extension-galleries-for-the-enterprise.aspx
2. Preview Tabs in TFS 2011 - http://blogs.msdn.com/b/visualstudio/archive/2011/10/07/improving-developer-productivity-with-visual-studio-11-developer-preview.aspx
3. Quick Launch bar in TFS 2011 - http://blogs.msdn.com/b/visualstudio/archive/2011/09/27/visual-studio-11-developer-preview-quick-launch.aspx
4. New find and replace in TFS 2011 - http://blogs.msdn.com/b/visualstudio/archive/2011/09/22/find-amp-replace-in-visual-studio-11-developer-preview.aspx
5. TFS 2011 built in Power tools - http://blogs.msdn.com/b/visualstudio/archive/2011/09/14/visual-studio-11-developer-preview-announced.aspx
6. Visual Studio Toolbox - http://blogs.msdn.com/b/visualstudio/archive/2011/09/14/visual-studio-11-developer-preview-announced.aspx
1. What’s new in VS TFS 2011 - http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-820F
2. Architectural discover with TFS 2011 - http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-794T
3. Tips tricks, use Visual Studio to the fullest - http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-830T
And now to the final critical enhancement made in TFS 2011, IntelliTrace in Production. IntelliTrace – first released in Visual Studio 2010 – changed the game for debugging by allowing developers to step “back in time” to see how an application got into its current state. By exposing events such as file and registry access, exceptions, and method calls, an IntelliTrace file can provide a detailed view into application behaviour. Visual Studio 11 will extend the capabilities of IntelliTrace beyond the development and testing organizations by providing IT administrators with the ability to capture IntelliTrace files running from production servers. These files can then be analysed by developers to help diagnose production issues.
1. Hands on Labs and Demo - http://blogs.msdn.com/b/briankel/archive/2011/09/16/visual-studio-11-application-lifecycle-management-virtual-machine-and-hands-on-labs-demo-scripts.aspx
1. IntelliTrace in Production Demo - http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-792T
With this we have completed the new offerings for developers in TFS 2011. Microsoft has done a fantastic job with TFS 2011. If you have any recommendations on things that we could add to this or any questions or feedback, feel free to add to this blog post. If you enjoyed the post, remember to subscribe to http://feeds.feedburner.com/TarunArora. In the next post i’ll be covering the new offerings for testers and Business Analysts.
Stay tuned in!