Understanding the different GitHub editions

2020-04-06    

GitHub is the home of millions of open source developers. That's how I use GitHub most often: to share my code and contribute to other projects and learn from all the open source projects. But GitHub is much more than just another Git repository. In addition to all the open source features, GitHub also has products for small teams to large enterprises.

I was looking at all the features that my brand new GitHub Enterprise organization offers but somehow I couldn't find the option to create an internal repository in my organization. This led to a search across the different pricing models and feature sets that GitHub has. Putting it all together cost me some time so I thought I would share what I learned in this blog post.

Free for open source

The cloud hosted SaaS version is located at https://github.com. You can easily create a free account and start sharing your open source code or contribute to existing projects.

With a free account, you can create as many public repositories as you want and work with an unlimited number of contributors. You can also create private repositories but you're limited to 3 contributors on those private repositories. I have some content that I want to keep private but sometimes I start with a private repo to get my project up and running and then make it public once it's ready for the world.

What's great about public repositories is that you get all the features of GitHub. Here are several that I really like (see https://github.com/pricing for all the features):

  • GitHub pages to easily publish a website directly from the content of your repository. For example, the very simple repository at https://github.com/WouterDeKort/wouterdekort.github.io gets published as a website at https://wouterdekort.github.io/. You can use Jekyll if you want more complex websites.
  • A Wiki that you can use to host documentation for your project such as the VS Code wiki.
  • Support for protected branches to help you enforce pull requests and status checks. You can also specify code owners to make sure that changes to certain parts of your code need to be approved by the people responsible for that area.
  • Repository insights graphs that show you who is using your repository and why.
  • Planning features such as Project boards, Milestones and Issues allow you to track work.
  • Security features such as token scanning (helps you to avoid accidentally sharing secrets in a public repository), automated security updates on dependencies your code has and other detected vulnerabilities are amongst the most powerful features of GitHub.

When you want to work with multiple people on an open source project, you can use the free GitHub Team for Open Source. GitHub Team for Open Source gives you a free organization and unlimited public repositories plus the features to manage teams and contributors in an easier way across all those resources.

When you want the complete feature set of GitHub to work on private repositories, you will need to pay for one of the other editions of GitHub.

GitHub Pro

The next step up from a free GitHub account, is GitHub Pro. You can choose this edition if you want the same feature set for public repositories for your private repositories. At the time of writing GitHub Pro is $7/month.

GitHub Team

Where GitHub Pro gives you advanced features for your account, GitHub Team gives you the tools to work successfully as a team and organization. For example, GitHub Team gives each Team its own place for discussions, be it public in your organization or privately within your team. You also get security features like Two Factor Authentication and access control for managing groups of users. This is a great place to start for many organizations that want to build there software with GitHub.

GitHub Team is $9 per user/month.

GitHub Enterprise

GitHub Enterprise takes GitHub Team one step further by adding even more security, compliance and deployment controls. You can for example integrate GitHub Enterprise with (Azure) Active Directory and offer single sign-on for your team members.

When you have multiple organizations, you can combine them into a single point of visibility and management: GitHub Enterprise Cloud. You currently can only pay for GitHub Enterprise Cloud by invoice. GitHub Enterprise Cloud gives a Service Level Agreement of 99,5% uptime and a target eight-hour response time for priority requests on working days in your local time zone.

GitHub Enterprise Cloud also gives you the feature I was looking for: internal repositories. So although I have a GitHub Enterprise organization, this is only one organization. GitHub Enterprise Cloud allows you to work with many organizations and create internal repositories for inner open source scenarios!

GitHub Enterprise is also the only edition of GitHub that you can install on-premises (see the GitHub Enterprise faq for more information). Some organizations may want to use this to be able to control their data sovereignty or integrate with other on-premises products.

GitHub doesn't offer direct pricing for GitHub Enterprise on its website but suggests that you contact GitHub sales.

Where should I start?

You can learn about all GitHub features by using a free account and working on open source code. That's the easiest way to learn what GitHub while collaborating with millions of open source developers. GitHub Learning Lab is a cool way to explore GitHub features by completing assignments given to you by the Learning Lab Bot.

If you want to take your personal account one step further and work with private repositories, you should look at GitHub Pro.

For organizations, I see most customers I work with look at GitHub Enterprise because it supports even more security features, of which AAD support is the most asked for. If you don't need those and want to work with GitHub as a company, GitHub Team is a good start.

More Info