--- layout: markdown_page title: "GitHub" --- ## On this page {:.no_toc} - TOC {:toc} ## Overview
<%= partial "includes/sdlc_comparison_tabs_vue" %>
## Summary [GitLab vs.GitHub](https://www.youtube.com/watch?v=s8DCpG1PeaU&feature=youtu.be) - a comparison video created by an independent external source (LinuxHint.com). GitHub is a collaborative code repository to host and review code, manage projects and build software. It offers all of the distributed version control and source code management (SCM) functionality of Git as well as adding its own features. It provides access control and several collaboration features such as bug tracking, feature requests, task management, and wikis for every project. In November 2019, GitHub announced general availability of GitHub Actions for all users. GitHub Actions feature enables code snippets to be run in a container upon a wide variety of GitHub API calls. This has the promise of enabling users to orchestrate their workflows based on any event. With GitHub Actions, workflows and steps are just code in a repository. Actions enable GitHub to offer CI/CD, which makes it easier to automate how you build, test, and deploy your projects and includes runner support for Linux, macOS, and Windows. It runs your workflows in a container or in a virtual machine. Similarly, GitLab has integrated CI/CD, but also offers additional capabilities such as application performance and server monitoring. GitLab also includes static and dynamic security testing and container scanning. GitHub does not come with a deployment platform and needs additional applications, like Heroku, in order to deploy applications. GitLab leverages [Kubernetes](/solutions/kubernetes/) to create a seamless deployment experience in a single application. GitHub offers plans for both private repositories and free accounts which are commonly used to host open-source software projects. As of September 2019, GitHub reports having over 40 million developers. Although Developers are defined as "Developers are individual user accounts on GitHub, regardless of their activity." and 100 million repositories (including 28 million public repositories), making it the largest host of source code in the world. GitHub is also offered in a self-managed version called GitHub Enterprise (GHE). Microsoft acquired GitHub on June 4, 2018. ## GitHub Strengths - Large user base of developers using GitHub. - Many Open Source projects hosted on GitHub, although GitHub itself is not Open Source. ## GitHub Gaps - End to End DevOps: GitHub requires multiple tools stitched together to provide an end to end DevOps solution. GitLab provides a single platform for DevOps, with tools for different stages pre-integrated and working seamlessly. - Scaling: Feedback from GitHub customers is that GitHub Enterprise (GHE) has trouble scaling. essentially is in a single box.  The only way to scale the system is by adding more CPU and memory.  This taps out at some scale.  Data suggests GitHub is unable to scale beyond 2000 users in many instances.  After maximizing CPU and memory in a single box, the only way to scale is to add separate boxes or decentralize. This leads to code fragmentation. [GitLab is enterprise class](/solutions/enterprise-class/) and scales to > 32K users. - High Availability: GitHub HA solution is at best a warm-standby. This approach could lead to more downtime and even information loss if backups are not made frequently. - Zero Downtime Upgrades: GitHub does not provide Zero Downtime Upgrades, with downtime for upgrades lasting as many as four hours. This is a major requirement for most enterprises. GitLab provides Zero Downtime upgrades. - As a large repository of Open Source projects, GitHub itself is not Open Source. Making customers dependent solely on GitHub for product improvements. ## GitLab Scaling, HA and Zero-Downtime Upgrade Capabilities - Scaling: GitLab [GitLab is enterprise class](/solutions/enterprise-class/) and scales to > 32K users. Here's a link to the architecture when deployed in [Amazon](https://docs.gitlab.com/ee/install/aws/).  This feature when used with Amazon's AutoScaling feature ensures that you can have nodes turned on and off as needed based on demand.  This leads to significant cost savings, while maintaining the developer experience from a performance standpoint. GitLab runners are also mutable, one can spin up runners as needed and only pay for what one needs to use. - High-Availability: GitLab provides HA from two standpoints. First the Application itself is Highly Available through seamless failovers into remaining nodes. Second, the data is highly available through the use of [Gitaly](https://docs.gitlab.com/ee/administration/gitaly/index.html). Gitaly is a service that provides high-level RPC access to Git repositories. GitLab fails over seamlessly - if a Gitaly node or another node drops there is no downtime. In case of a catastrophic event, GitLab can fail over to another Geo. This process in case of catastropic failure takes only 5-20 minutes. Business is up and running at full speed without problems. - Zero-Downtime Upgrades: Due to the strong HA architecture GitLab is able to provide zero downtime upgrades. ## Comments/Anecdotes - 2018-09-10 - GitHub announces that [Microsoft Azure Pipelines are available in the GitHub Marketplace](https://blog.github.com/2018-09-10-azure-pipelines-now-available-in-github-marketplace/). This is in parallel with Microsoft (who recently acquired GitHub) announcing their Azure DevOps (rebranded VSTS/TFS). Related? Yes! - 2018-09-10 - Microsoft announces the [addition of GitHub Pull Requests integrated directly into Visual Studio Code](https://code.visualstudio.com/blogs/2018/09/10/introducing-github-pullrequests). Visual Studio Code is [Microsoft's lightweight (but still not web based) code editor](https://azure.microsoft.com/en-us/products/visual-studio-code/). - Statement from GitLab PS on 2018-11-12 - For scaling the fact that GitLab is so open makes it much easier to scale - especially for specific workloads. For GitHub Enterprise it’s a black box - only way to scale is “add another box”. Whereas GitLab can utilize cloud native technology - like Kubernetes or AWS tooling to scale. - 2019-05-10 - GitHub recently announced a limited public beta for [GitHub Package Registry](https://github.com/features/package-registry). From the website: "With GitHub Package Registry you can safely publish and consume packages within your organization or with the entire world." - GitLab has been embarking on a single application for the entire DevOps lifecycle since combining CI with SCM in 2012, and released integrated packaging back in 2016 - starting with a Docker registry - and adding Maven and NPM in 2018 . Our public direction for adding RubyGems, Linux packages and Helm Charts is available [here](https://about.gitlab.com/direction/package/). The private, secure container registry and artifact repositories are built-in and preconfigured to work seamlessly with GitLab source code management and CI/CD pipelines. ## [A GitLab user’s guide to GitHub’s new features - 2019-05-23](https://about.gitlab.com/2019/05/23/gitlab-features-compared-github/) On May, 23, 2019 at the GitHub’s Satellite developer conference, GitHub announced a number of new features. Here is a [blog post summary](https://about.gitlab.com/2019/05/23/gitlab-features-compared-github/) of what GitHub announced today and how that relates to GitLab features that already exist or are on the public GitLab direction page. ## Resources * [GitHub Website](https://www.github.com/) * [How GitLab is Enterprise Class](https://about.gitlab.com/solutions/enterprise-class/) - written with GitHub Enterprise claims in mind * [GitHub Package Registry](https://github.com/features/package-registry) * [GitHub Actions page](https://github.com/features/actions) ## GitHub Actions Pricing * Public repositories - free * Private repositories - 2k hosted CI minutes and up * Additional hosted minutes * Linux - $.008/min * Windows - $.016/min * macOS - $.08/min * https://github.com/features/actions ## Comparison