Azure DevOps or GitHub Which Option Is Right For Your Organization?

Max Yermakhanov
ObjectSharp (a Centrilogic Company)
6 min readApr 1, 2022

Before we start, let’s get one important point clear: Azure DevOps is NOT dead! It’s very much alive. Microsoft continues (and will continue for foreseeable future) the support of Azure DevOps and Microsoft continues adding new features and improving the functionality of Azure DevOps product. Of course, it’s worth noting that the pace at which new features at been added to GitHub is considerably better than the amount of new features that Azure DevOps is getting. So, if quick(er) access to innovation is important to your organization, GitHub might be a better fit for you.

Now, let’s get started. First, let’s cover the easy scenarios:

Use Azure DevOps, if:

  • You require to host data in the countries other than the United States (unless you are willing to host GitHub Enterprise Server on premises, of course)
  • You require integrated Test Management solution
  • You require to integrate with non-Git code repositories

Use GitHub, if:

  • You require GitHub Advanced Security or Dependabot
  • You require GitHub Codespaces
  • Your require mobile app support
  • And, last, but not least, if you are starting from scratch

Next, let’s cover some fundamental differences between Azure DevOps and GitHub. We’ll start from the top:

  • Enterprise Account
    - Not present in Azure DevOps. There is no way to group your Azure DevOps organizations
    - GitHub allows you to group your GitHub organizations under Enterprise account and apply certain policies across all organizations.
  • Organization
    - Very similar concept in both.
  • Project
    - In Azure DevOps, project represents a fundamental container where data (repos, work items, pipelines, tests, dashboards, etc.) resides
    - In GitHub, projects as fundamental container as in Azure DevOps do not exist. In GitHub, projects (beta) are a customizable, flexible tool for planning and tracking work. So, projects are just for work planning.
  • Repository
    - Very similar concept in both. We will cover differences in the next sections.
  • Team
    - Very similar concept in both. We will cover differences in the next sections.

Azure Boards vs. GitHub issues

In short, I like Azure Boards better than GitHub issues at the moment. Azure Boards provide robust planning capabilities to developers and non-developer user roles while GitHub Issues (Projects and Discussions) provide developer focused project planning capabilities.

Azure Boards are just more mature as a product. Plus, business people seem to like Azure Boards better, which is very important. Not to worry, you can easily integrate Azure Boards with GitHub, if needed.

Having said that, the new GitHub Issues (beta) is VERY powerful and groundbreaking planning tool, which keeps getting better and better. I would not be surprised if in a little while GitHub Issues (beta) will catch up and surpass Azure Boards feature-wise. So, I’m definitely keeping my eye on GitHub issues.

Azure Repos vs. GitHub Repos

In short, I like GitHub Repos better (and faster). After all, code management is where GitHub has its roots. GitHub Repos offers features like Codespaces, dependency scanning and secret scanning that simply are not available in Azure Repos. Plus, GitHub Repos (thanks to GitHub Actions) allows you to build flexible and highly specific workflows. Also, GitHub Repos allows you to create internal repos which are accessible to all authenticated repos in your organization.

I feel I have to say that I find Azure Repos code review experience much cleaner and easier to navigate. And, branch policies experience is better in Azure Repos. I am sure these parts of GitHub repos will improve soon. It already got considerably better.

Azure Pipelines vs. GitHub Actions

There is a lot to discuss on this topic, so it will be a subject for another blog post.

In short, I like both products when it comes to CI (Continuous Improvement). Yes, GitHub Actions do not support templates at the moment, but they have reusable workflows and composite actions, which are not the same, but still very powerful. But, I have to say it again, I like how flexible and powerful GitHub Actions are and how they can be used to automate practically any aspect of GitHub, not just pipelines.

When it comes to CD (Continuous Deployment), I prefer Azure Pipelines. It’s just more mature and robust tool when it comes to enterprise release management. Having said that, GitHub Actions is rapidly evolving and now offers feature I wish Azure Pipelines had. For example, secure deployments with OpenID Connect.

Azure Artifacts vs. GitHub Packages

In short, I like GitHub packages better because it offers container support (Docker and OCI images) and Ruby gem support. Having said that both GitHub Packages and Azure Artifacts offer artifact storage that will make you pay a small fee if you go over allowable limits.

API, Integrations & Extensibility

Both products provide excellent well-documented API and extensibility support and myriad of integrations. I find GitHub REST API is a bit more flexible and better documented. GitHub has GitHub Apps to automate and improve workflows. The one thing that is missing from GitHub is Microsoft Office integration, which is available in Azure DevOps.

Azure DevOps Licensing vs. GitHub Licensing

I am not a licensing expert. Licensing scares and bores me at the same time. But, from what I can tell Azure DevOps is less expensive:

  • Azure DevOps is free for up to 5 basic users and unlimited number of stakeholders. Then, it’s $6 per user/month.
  • Azure DevOps Basic license is included with a Visual Studio subscription

while GitHub pricing seems more complex:

  • GitHub pricing has layers (free for the basics, $4 per user/month for Team edition, and $21 per user/month for Enterprise Edition.)
  • GitHub Advanced Security and GitHub Codespaces are extra

I am not sure if the pricing of GitHub will ever come down to Azure DevOps level. Or whether, it’s even a reasonable request. On one hand I want the prices to come down, while on another hand I want GitHub to continue to innovate and continue releasing new features. So… I am just happy that I have both Azure DevOps and GitHub tools available to me.

Note: GitHub Actions/Packages and Azure Pipelines/Artifacts might incur additional costs based on your consumption.

Honorable mentions

I have not mentioned a number features from Azure DevOps and/or GitHub that definitely worth having a conversation about:

  • CLI tools for Azure DevOps and GitHub. Both are great. Please look into az cli (devops module) and gh cli.
  • Wiki is great on both Azure DevOps and GitHub.
  • Dashboards and widgets are very useful feature of Azure DevOps. GitHub Insights is also nice, but just not as useful or customizable as in Azure DevOps.
  • Azure Test Plans provides rich and powerful tools everyone in the team can use to drive quality and collaboration throughout the development process. There is no alternative in GitHub for test management.
  • GitHub Pages is an excellent place to showcase your static website like docs site, or blog, or resume. There is not alternative in Azure DevOps for hosting static sites. Not sure, it’s a deal breaker though.

Conclusion

So, what would I choose? Azure DevOps or GitHub? Here are my thoughts:

  • If I am starting from scratch, I would go all in on with GitHub. There is just too much innovation going on in GitHub.
  • If I need more advanced planning tool, I would integrate GitHub with Azure Boards.
  • If I need more mature release pipelines, I would integrate GitHub with Azure Pipelines.
  • If I am already heavily invested in Azure DevOps, but need features unique to GitHub, I would move my code to GitHub Repos.
  • If I am already heavily invested in Azure DevOps, and do not currently need any features unique to GitHub, I would stay put.

At the end of the day, I do not think it should be about which tool is better than the other. I think it should be about which tool works better for me now in this particular scenario. And, it does not have to be one tool that magically meets all my needs (although that would be nice, wouldn’t it?) It’s the right tool for the right job. At the right time. So, perhaps we should not think “Azure DevOps vs. GitHub”, but instead we should think how we can use these tools together to be the most productive.

--

--