Once vehemently opposed to open-source software, Microsoft has warmed to the development model over the years and will now take the unusual step of incorporating an open-source program developed by Linus Torvalds into its own development tools.
Microsoft is integrating the widely used Git, a distributed revision control and source code management (SCM) system, into its Visual Studio IDE (integrated developer environment) and Team Foundation Server (TFS), two of the company's main tools for enterprise developers.
"TFS is a very popular tool in the enterprise, and Git has grown up in the open-source community," said Brian Harry, a Microsoft technical fellow and the TFS product unit manager. "By embracing Git, we want to bridge that gap, so it can be a great tool for both the open-source community and for the enterprise."
TFS is software for managing the application development lifecycle, including requirements management, project management, configuration management, testing and deployment. Microsoft also offers a hosted version of TFS, called Team Foundation Service.
TFS already has a built-in SCM to document and store changes in an evolving code base. But given that development teams are increasingly scattered across different locations, Microsoft wanted to offer a distributed SCM, in which developers can work on local copies of the code, and synchronize their changes to others on the project.
Instead of building a distributed SCM from scratch, Microsoft decided to deploy one already in wide use. "Git was the right answer for us," Harry said.
Microsoft has already recognized the growing popularity of Git among its users. Last year, it released the Git TFS Bridge, which allowed developers to use Git on a local machine, while pushing changes to TFS.
Torvalds started work on Git in 2005 after a licensing disagreement over BitKeeper, the commercial code repository that was used to manage the Linux codebase.
Torvalds designed Git specifically to manage software projects as large as the Linux kernel, which currently has more than 15 million lines of code, is updated every two to three months, and is built collaboratively by thousands of developers worldwide.
Torvalds and his team built the software as a globally distributed repository that would not slow in response times as the code base grows.
The incorporation of Git in TFS will be "a true adoption of Git. It is not 'Microsoft Git,'" Harry said. The company will be using libgit2, the most widely deployed version of Git, written in C.
When creating a new project, users of TFS will now have the choice to use either Git, which will be included in the TFS software package, or TFS' own centralized version control system.
"Our goal with TFS is to let users have both the best centralized version control system, and the best distributed version control system," Harry said.
TFS can execute a range of functions with a Git repository, such as automated builds, testing and work tracking. Over time, Git will have feature parity with the centralized TFS repository, and will also have tie-ins to Active Directory and other Microsoft enterprise security and auditing tools.
The Team Foundation Service will also offer a hosted version of Git for customers to use, starting Wednesday.
Microsoft is dedicating engineering hours to help further develop libgit2. It'll work with GitHub and other community programmers who devote time to the software.
Some of the work that Microsoft engineers will do will be around making the Windows version more usable. Harry admitted that the Windows version of Git has trailed behind the Mac OS and Unix versions, in terms of ease of use. "We will help rectify that," Harry said.
In addition to including Git with TFS, Microsoft is also linking Git with its Visual Studio IDE. The company has released a plug-in that will allow users to commit finished code directly to any Git repository. The Git Community Technology Preview (CTP) plug-in works with Visual Studio 12, and Microsoft plans to support Git natively in the next version of the IDE .
Visual Studio can communicate with a Git deployment on TFS, to one on the Team Foundation Service, to the GitHub hosted service, or to any other Git deployment, Harry said.
In effect, Visual Studio can become the primary interface for Git, for developers. "I can connect, clone a repository, and open the project in Visual Studio, edit files and commit," Harry said.
Developers will also be able to see the code changes committed to Git, review the changes made to the code, switch to another branch of code and merge code into the project's mainline.
"Git has had an issue of getting pretty darn complicated," Harry said. "We've been trying to codify the most common patterns of using Git, to create a simple workflow in Visual Studio that makes Git approachable."