Hark: here is a strange tale of two DevOps tools. Once upon a time, there was a Microsoft product called Team Foundation Server (TFS). The online version of TFS then became Visual Studio Online, which became Visual Studio Team Services, which is now Azure DevOps.
And then Microsoft bought Github in 2018, which is also a DevOps tool and shares a lot of the same features. I mean, what is that about?
Microsoft bought GitHub to heighten its focus on open-source development and bring Microsoft’s developer tools to new audiences, and now they have two very mature and very popular DevOps tools. Let me explain some of the differences and similarities between the two, and give you a clearer understanding of why there are two, and where each fits in. But first, a useful table of comparisons.
|Open Source||Preferred by the community.|
Offers both public and private repositories.
|Preferred by enterprise.|
Offers both public and private repositories.
|Even Microsoft hosts most of their open-source projects on GitHub.|
|CI/CD||New and relatively unproven, but easy to use.||Mature and feature-rich pipelines. Good integration with enterprise tooling.||Azure DevOps already has full integration with GitHub repositories, but GitHub Actions are neat and will improve a lot.|
|Project Management||Good if all your stuff is within GitHub||Mature and full-featured. Integrates with 1000+ extensions.||Azure DevOps is the choice here for any semi-serious project and beyond.|
|Code Repository||Spirit animal.||Third favorite child.||For hosting code repositories, nothing comes close to GitHub.|
|On-Premises||GitHub Enterprise||Azure DevOps Server||Either self-hosted version comes on 3872 floppy disks.|
|Reputation||GitHub has the community feels. Companies with open source projects on GitHub get free karma points.||The scent of TFS still lingers. This is enterprise territory.||Microsoft is definitely looking to borrow some reputation points from GitHub.|
If you want more details, just keep reading!
Closed vs Open Source
Traditionally GitHub has been one of the go-to places for open source communities and projects. Large, well-known projects such as Bootstrap and Node.js are hosted on GitHub, and even most of the Microsoft code base for developer tools and languages is also available on GitHub as open-source. While public projects are free on GitHub, they also offer paid private repositories.
Azure DevOps is more corporate in approach and while you can definitely host public projects, this is not what the platform is known for. A lot of enterprise-level companies use Azure DevOps as part of their approved product suite.
Continuous Integration and Deployment
Continuous integration, or CI, is the process of continually merging any new code into the master/common code base and building it to make sure nothing is broken. “Fail early” is one of the mantras connected to CI, the thought being that the earlier you find bugs, the easier and cheaper they are to fix.
GitHub has a relatively new feature called “Actions”. These actions can “automate, customize, and execute your software development workflows right in your repository”, including setting up a CI process.
Azure DevOps has an entire section of the platform dedicated to CI. Pipelines is a mature and fully featured service to handle both your CI and CD, continuous delivery. In fact, a lot of the GitHub Actions functionality is built on the same platform as Azure DevOps.
A big part of an effective DevOps process means having effective project management to keep track of tasks and timelines, issues, and schedules. Both GitHub and Azure DevOps have tools to help project managers, but are they equal?
GitHub Projects is a lesser-known part of GitHub, which offers a good project management platform for code projects already in GitHub.
The Azure Boards, as the project management side of things is called in Azure DevOps, has its roots in TFS, and is a very mature product. As well as working seamlessly with other parts of Azure DevOps, Boards has over 1,000 extensions too for integrating with almost any other system you need to. Get notifications on Slack, hook into AWS services, or create automated documentation.
Ask almost any open source project where their code is hosted, and it will be GitHub. Code management is where GitHub has its roots. It is its spirit animal. Everything you could possibly do with pull requests, branching, code reviews, and everything else is here.
Azure DevOps has a good code repository offering too, but it isn’t a spirit animal. More like a third favorite child. It works very well, and it does almost everything you want for your projects.
What if you don’t trust this new-fangled cloud stuff? You may have security concerns about hosting the code for your new Nicholas Cage image hosting service in the cloud. Good news! You can get a self-hosted version of both GitHub and Azure DevOps.
Azure DevOps came from TFS, possibly one of the Microsoft products with the biggest love/hate division amongst users. Azure DevOps has inherited some of that division. Throughout the many changes and rebranding exercises has emerged a modern tool that is a far cry from the old TFS days, but the memory still lingers at times.
GitHub on the other hand is the default platform for a lot of DevOps tasks, especially anything to do with code management. Most companies will have a development stack that somewhere uses GitHub.
Final DevOps Thoughts
All those comparisons are well and good, but being that the two products are so similar, why have two? Part of the reason is that GitHub was becoming both a huge repository of Microsoft code and also a competitor. The popularity of GitHub still endures today and now their audience also has access more directly to the, frankly, excellent developer tools that Microsoft produces.
So, which should you choose? The non-committal answer of course is “it depends”. What kind of project are you creating? Which DevOps features do you require? Which kind of systems do you need to connect and automate?
Hopefully, you at least now have an idea of where to start and which platform to try out first. They are both excellent in different ways.
Ready to dive deeper? A Cloud Guru has fresh, comprehensive Azure training, including this Azure DevOps course with Microsoft MVP Henry Been.