In recent years, Microsoft has been becoming more friendly to Linux, even going so far as to say that they love it. Now, Microsoft announced that they were adopting the version control software originally created for the development of Linux.
Microsoft moves to Git for Windows development
Git is a version control system used to keep track of changes made to files. It was originally created by the Father of Linux, Linus Torvalds. When Linus started work on the Linux kernel, he used the free version of a (then) proprietary source control management system named BitKeeper. In 2005, Larry McVoy, the owner of BitKeeper, accused Andrew Tridgell, the creator of Samba and rsync, of reverse engineering BitKeepers protocols and revoke the free use of BitKeeper.
As a result, Linus Torvalds, creator of the Linux kernel, looked at the source control management software available. Since none met his criteria, he created his own and called it git. About the name, Linus said, “I’m an egotistical bastard, and I name all my projects after myself. First ‘Linux’, now ‘Git’”. Git is British slang for someone who is pig headed and always sure that they are right.
300GB Repo Full of Windows Data
Microsoft announced that they would start moving the Windows development team to Git back in February. This is all part of their OneCore project to unify the Windows development process to make it a modular and layered platform.
Microsoft’s previous version control system, SourceDepot, could not support the huge size of Windows development in one repo. Before the switch, it was divided up into 65 repos containing overlapping parts of Windows.
So far, 2,000 Microsoft engineers have switched over to git with 500 more to move over in the next couple of months. Here are some of the stats from the new git repo:
- There are over 250,000 reachable Git commits in the history for this repo, over the past 4 months.
- 8,421 pushes per day (on average)
- 2,500 pull requests, with 6,600 reviewers per work day (on average)
- 4,352 active topic branches
- 1,760 official builds per day
How Does That Compare to Linux?
I’m sure there are a number of people from the Linux community who are wondering how these numbers compare to Linux development. The short answer is that they are difficult to compare because they are developed differently. Every piece of Windows is written by Microsoft engineers and programmers. On the other hand, each Linux distribution is made up of a collection of pieces of software created by different people and groups.
For example, Windows Explorer, the Start Menu, Control Panel, Windows Media Player, and Wordpad are all created and funded by Microsoft. In the Linux world, important pieces of the OS, such as the Calamares installer, the MATE desktop, and PulseAudio are all created by different individuals but are combined by developers to create a distro.
Since I can’t give you the size of a Linux distro, I’ll give you what I can, the size of the Linux kernel repo. (I’d like to thank Ikey of the Solus Project fame for cloning the Linux kernel repo and telling me the size because I’d still be downloading it with my slow connection). As of the 27th, the Linux kernel repo was 849MB in size and consisted of 59,804 files.
I was able to find an open source operating system to compare the Windows repos to size wise. The Haiku operating system follows a monolithic design similar to that of Windows, ie they build everything themselves. As of the 25th, the Haiku repo was 342MB. Please note that while Haiku is missing some bells and whistles, it is a functioning OS.
Microsoft Adds to Git
As Microsoft started to implement git, they realized that they would have to make some changes in order to make it work for them. The first change they made was the creation of the Git Virtual File System. The problem with having such a massive repo is that not everyone needs to clone (copy) the entire repo to their local machine. The Git Virtual File System allows each programmer to only download the files that he needs access to.
The second problem they had to fix was tweaking the algorithm to keep track of which files had been accessed by the Git Virtual File System. Otherwise, running a simple command like
git status to check to see which files had been modified would take half an hour to sort through 3.5 million files.
Finally, Microsoft had to build a git proxy server to handle the needs of employees in areas with lower bandwidth. Their North Carolina was encountering higher git response, but after installing the git proxy, they see better results than those in Redmond.
Microsoft plans to make these improvements available upstream so that other developers can take advantage of them. Currently, Git Virtual File System is not supported by any Linux git clients.
When I heard that Microsoft was moving Windows development to git, I had to check to make sure I hadn’t ended up on The Onion. After reading about it, it seems like the move is a good fit for Microsoft. It would help improve their development efficiency and hopefully help their code quality.
It’s good to hear that they will be releasing their changes to the community. Maybe this will inspire them to release Windows as open source. Well, now I’ve just traveled into fantasy land.
Overall, I think this will give a boost to the open source community and may inspire other companies with huge development teams to consider git as their version control software.
What do you think of this news? Do you work for an organization would benefit from Microsoft’s additions to git? If you are a Linux developer, could you weigh in on your thoughts about the size of the Windows repo?
If you found this article interesting, please share it with your friends and family on your favorite social media sites.