Gitlab : is a GitHub-like service that provides web-based DevOps internal management of Git repositories. GitLab offers two options: a free community edition and a paid enterprise edition. GitLab includes a lot of the necessary features for successful management of the software development process such as wikis, Jira integration, CI runner, release management, binary attachments, and more.
GitLab’s popularity is due partly to its seamless integration with Continuous Integration technologies. Integration helps throughout different development stages to make it easier to cross-reference code, tests, and deployments while offering full visibility to developers for context and quick iterations as necessary.
GitHub: is a development platform that developers use to store projects, as it’s based on Git, is a service for version control that provides access control to features such as bug tracking, feature requests, task management, and wikis.With social networking-like features, GitHub enables users to access features such as feeds, followers, wikis, and more. GitHub is mainly used for code due to its built-in tools to review and improve it.
- Built-in Continuous Integration/Delivery. GitLab is known for its built-in Continuous Integration/Delivery for free, which is something that GitHub does not offer. Instead, GitHub’s offering lies in 3rd party integrations that enable Continuous Integration/Delivery.
- Innersourcing. With GitLab, internal projects allow developers to promote inner sourcing of internal repositories — this is something that is not offered by GitHub.
- Authentication. In GitLab, permission is granted based on people’s roles while in GitHub developers can grant read or write access to specific repositories.
- Data import/export. GitLab offers far more detailed documentation on how to import/export data from external vendors while GitHub’s documentation is not as detailed.
- Deployment platform. GitHub does not come with a built-in deployment platform and requires a 3rd party integration with an external application to deploy applications. On the other hand, GitLab leverages Kubernetes for a seamless deployment experience.
- Private repositories. GitLab offers free private repositories for open source projects while GitHub does not.
- Comment tracking. GitHub is capable of providing the full history of a thread of comment updates — GitLab does not support this.
- Issue transport. In GitLab, developers can easily move issues between projects — all links, history, and comments are copied to be referenced in the original issue and the newly moved issue.
- CSV file export. GitLab is capable of exporting CSV files of issues to default notification email addresses as attachments.
- Confidential issues. GitLab’s Confidential Issues module creates confidential issues that are visible only to project members with Reporter access level or above.
- Issue weights and milestones. In GitLab, developers can assign weight to issues to manage them via Agile practices, which is not something that can be currently done by using GitHub. Additionally, GitLab, unlike GitHub, allows developers to create and manage milestones at project and group levels to represent an Agile sprint or a release.
- Burndown charts. Unlike GitHub, GitLab offers Burndown Charts as part of milestones that allow developers to track progress during sprints or while working on new software versions.
- Application performance monitoring. GitLab collects and displays performance metrics for applications to determine the impact of a merge and monitor production systems.
- Cycle analytics. GitLab provides a dashboard to perform analytics about time, planning and monitoring activities.
Conclusion: GitHub is more focused on high availability and infrastructure performance while GitLab is more focused on including as many features in a robust and well-integrated platform for a complete and centralized DevOps process.