Twice a year the entire version control team meets in a big conference room, full of breakfast goodies, to talk about our current strategy, release execution and market challenges. The meeting lasts for around 1.5 hours and it gives us a chance to step back and see how our day to day activities and decisions are aligned with the bigger picture.
What I want to do today is tell you a bit about our mission and the high level principles which control a lot of what we do as a team. Lets first start with sharing our mission statement, not to be confused with our vision which can be a topic for a later blog post.
Mission: Transforming Version Control
Our mission is short and centered on the fact that version control tools and the SCM field are due for a significant shift. We say this because if you look at the last twelve or so years we have only seen incremental innovation on the market with no radical blue ocean changes. Looking into the future we believe that version control will transcend from predominantly versioning source code items to being a service on an integrated server which is able to version any type of asset and with enough smart to track and enable workflow's that provide rich and immersing experiences on the "right" consumer scenarios. If you read a lot about the SCM market you might say that we share a similar view with one of our competitors, as evidence by this published article: http://www.ddj.com/architect/188500238 . I would say partly yes and the part that separates our views is that for us is not only about versioning items and understanding their extension semantics, but really about versioning, recording and tracking the behavior/ interaction of these items with outside entities and integrating those worlds together.
Lets provide a simple example to make this a bit clearer: take a service that keeps track of the routes you have taken between two points (e.g. your house to a restaurant of a new friend's house). A normal version control system will version the routes from the different origination points and allow the user to retrieve that information with a request. For us that information is not not enough, so we would want our system to understand why you took that route and then attach that behavioral metadata automatically. Was it because there was an accident and you had to take a detour? Was it because it was raining and you felt the highway was faster? etc. We want to bring these outside entities into the picture so we really get the full picture of what we are versioning. This will take some time but we believe that is attainable and will be an integral part of the SCM shift that will take place over the next seven years.
With our mission statement briefly explained lets quickly go thorough our High Level Principles which are responsible for steering us in the right direction:
- Innovation: this is the area where we need to lead and really show what you can do with a powerful version control service that is part of an integrated server experience. The first release of Team Foundation Server I think showed the market the potential of that strategy, now we need to continue to execute and bring the most innovative features to market with each release
- Ease of Use: this principle speaks to the fact that we can put a lot of features and technology in the product but if people cannot use them effectively there might as well not be there. This is an area where we have increased our focus so I can't wait to see what you guys think of our progress when we release our next version.
- Collaboration: no significant amount of work or big accomplishment gets done by only one individual, hence team and team collaboration are an integral part of the version control experiences. This principle is about leveraging the current systems available (Sharepoint sites, Wikis, IM, email) and building rich experiences on top of architectures (i.e. Office Unified Communications) in order to allow all members of the team to effectively collaborate on the project
- Community: Open Source showed and proved on a mass scale the power of communities. For us to succeed we need a healthy community that is not only providing great feedback to us but also contributing value to the SCM industry; only like this would we increase healthy competition and drive up innovation
- Enterprise Ready : This is really about scale / performance and in today's world compliance
There you have it, a short detailed look at our mission and principles. You will see our team executing on them on different levels throughout the course of the next release and hopefully at the end we can look back and see how much closer we are from fulfilling the mission.
Last week we released a Channel 9 video discussing a new concept, which we call Visualizing Change. Over the coming months you will see the Version Control team talk more and more about this concept and what it means for us and the ALM space.
In short, Visualizing Change is a set of experiences that utilize the power of our data integration to provide rich, innovative, and highly interactive visualizations in order to help our users achieve end goals with increased velocity and insight.
Its pillars are the following:
· Information overload
· Information complexity
Information overload is already a common problem for the information worker and now we have numerous search tools to help us apply the necessary filters in order to remain productive. On the other hand, for software development shops, not only is there the enterprise overload but also the overload of many projects, with code that is constantly changing. No tool in the market is effectively helping this user base and it will only get worse.
This information is sometimes hard to obtain but even tougher is the analysis and context necessary to be able to drive a decision or action from it, and there is where complexity comes into play. You add to this the many new compliance requirements and team processes and you get traceability.
Enjoy the video and as always feedback is welcomed and encouraged. That is how we learn.
As a Version Control Program Manager, I am frequently asked for branch and merge guidance. This thirst in the field for content drove us to create a special project with the Rangers team where we worked over the last quarter to fill that gap. I am happy to announce that we have released our first edition of the document and it is now available in CodePlex for everyone to see and download: http://www.codeplex.com/BranchingGuidance
Here's the high level overview:
· Parallel Development
· Branching Defined
· Creating Isolation in Team Foundation Server
· General Branching Structure Guidance
· Branching Strategies
· Broad Areas of Branching Isolation
· Creating Your Branching Strategy
· Defining Your Code Promotion Model
· Feature Crews: How Microsoft Does It
· End-to-End Implementation Scenario
We are excited that this is available in CodePlex because it means that we can now gather your feedback and make the contents of the document better with a very quick turnaround. Please take a second, download the pdf from the releases tab, and give us feedback if you get a chance.
Enjoy the guidance.
The Visual Studio "Orcas" March CTP is available and now contains TFS. In this, you will find the majority of the feature work we plan to do for our Orcas release. I appreciate those of you who can look it over and give us feedback. Use http://connect.microsoft.com to give us the feedback (or, if you want, you can comment on this post and I will forward it but Connect is better). This CTP is being released as both a Virtual PC (VPC) image and Installable Bits for both VSTS and TFS.
If you wish to use the Virtual PC image, you will need Virtual PC or Virtual Server to run this image. You can use Virtual PC 2004 or Virtual PC 2007 (2007 required to run the VPC on Windows Vista). If you wish to use the self-extracting install, we advise that you do not install this on a production machine. If you have Vista as the OS on your box, please only download the VPC. In either case, depending on your hardware the download files make take between 30-60 minutes to decompress.
Use the following links for step-by-step instructions on installing and using the VPC images or installable bits, links to the ReadMe and provide feedback.
- VSTS Team Suite Virtual PC Image
- TFS Virtual PC Image
- VSTS Team Suite Self-extracting Install
- TFS Self-extracting Install
See Readme document for important notices and information about the CTP.
Here is some detail on the new stuff you will find in Team System.
- Top-down service design - Top-down system design allows an application architect/lead developer to perform the design of a business solution without having to be confronted with technology decisions. It enables the user to progressively refine a high-level system design, designing new sub-systems and applications in the context of the system in which they are to be used.
- Architectural Roles on System, Applications and Endpoints - Enables an architect, while working on the high-level design of a system’s architecture using the System Designer, to introduce elements into the design that play a specific pre-defined architectural role(s) within architectural patterns.
- Profiler Support for WCF Applications - Enable profiling of WCF based applications to improve application performance
- Customize and extend code correctness policies - Code Analysis Check-in Policy improvements to communicate to a developer why the check-in policy failed and to provide guidance on how to pass the policy requirements.
- Performance tune an enterprise application - Enables developers to run profiling during load and test procedures for a system, to see how it behaves, and use integrated tools to profile, debug and tune. This also enables performance base-lining, so that users can save a baseline profile and then, if the performance degrades, compare up-to-date traces to identify the source of the regression
- Unit Test Generation Improvements - Improvements to unit test generation provide an easy way for the user to specify what methods to test, and generate test methods and helper code to do unit testing, as well as providing unit test support for generics.
- Web Test Validation Rule Improvements - Web Test rules improvements enable testers to create more comprehensive validation rules for the application being tested. These improvements include the following functions:
- Stop test on error
- Search request and response
- Add validation rule for title
- Redirect validation
- Provide test level validation rules
- Expected HTTP code
- Warning level for errors on dependents
- Better Web Test Data Binding - This feature allows users to data bind .CSV and XML files, as well as databases to a web test, using a simple databinding wizard.
- Improved Load Test Results Management - With this feature user can open or remove an existing load test result from the load test repository. User can also import and export load test results files.
Team Foundation Server
- Team Build
- Support multi-threaded builds with the new MSBuild.
- Continuous Integration – There are many components to this, including build queuing and queue management, drop management (so that users can set policies for when builds should be automatically deleted), and build triggers that allows configuration of exactly how when CI builds should be triggered, for example – every checkin, rolling build (completion of one build starts the next), etc.
- Improved ability to specify what source, versions of source, etc to include in a build.
- Improved ability to manage multiple build machines.
- Simplified ability to specify what tests get run as part of a build
- Version Control support
- Destroy- The version control destroy operation provides administrators with the ability to remove files and folders from the version control system. The destroyed files and folders cannot be recovered once they are destroyed. Destroy allows administrators to achieve SQL server disk space usage goals without constantly needing to add more disks to the data tier machine. Destroy also facilitates removing versioned file contents that must be permanently removed from the system for any other reason.
- Annotate - Annotate is a feature that allows developers to inspect a source code file and see at line-by-line level of detail who last changed each section of code. It brings together changeset data with difference technology to enable developers to quickly learn change history inside a source file.
- Folder Diff - Team Foundation Server now supports compare operations on folders, whereby the contents of the folder are recursively compared to identify files that differ. Folder diff can compare local folders to local folders, local folders to server folders, and server folders to server folders. It’s a great way of identifying differences between branches, files that you’ve changed locally, and files that have changed between two points in time.
- Get Latest on Checkout - As an optional setting on a team project or on an individual basis, you can have Team Foundation Server always download the latest version of a file when you check it out. This helps ensure that you don’t have to merge your changes with somebody else’s when you check the file back in.
- Performance and Scale
- This release includes numerous improvements in performance and scalability of Team Foundation Server.
Today I am going to give you a sneak peek at our TFS Query Tracker gadget. Currently is in Alpha, if such state exists for a PowerTool, but we plan to give it to you in Beta form probably in the March-April timeframe.
The functionality of the sidebar is very simple: Allows users to track Priority, State and AssignedTo counts for any query that is on the server. What does it look like? Here is a pick of the main UI (art subject to change):
In here, you are seeing all of the bugs assigned to our team Active for Orcas. The Breakdown at the top is for Priority1, Priority2, and Priority3 bugs. The arrow and channel on the bottom is to navigate to State and Assigned to views of this query.
Here is what the settings page looks like:
As you can see, in the settings page you can specify which channels you would like to track and select either our default query or pick any query on the server. In case anyone asks, it does enforce security so you will not be able to spy on other people.
Internally the entire team loves this type of gadgets because it allows you to track multiple things without requiring an instance of VS opened and constantly hitting refresh on the query. That alone to our testers is worth the price in gold J
Hope you enjoyed the sneak peek and stay tuned for more details and the Beta.