Source code is the biggest asset of every development team because it encompasses valuable information about product functionality.
During a software development life cycle (SDLC), many participants have a hand in the source code, modifying the existing and adding new source code.
Because developers work on different parts of software at the same time, their activities are concurrent. Code modifications may conflict with each other and newly added code may introduce bugs. As software evolves, the risk of an error and unplanned consequences grows.
Version control protects the source code from these kinds of issues. Relying on version control systems (VCS), development teams can track all changes in the source code files made by each contributor throughout an entire SDLC.
Gitlab and GitHub are commonly used VCS, which have become an essential part of the daily practice of development teams.
Now, how are GitLab and GitHub connected to Git? As a VCS, Git is at the heart of both GitHub and GitLab.
Before exploring GitHub and GitLab, let’s clarify what Git is. During an SDLC, the source code undergoes multiple changes. New versions of it are created by the development team every day. Just like with video games, in programming, every decision you make can be consequential.
If you make a bad decision, the entire course of the game may go in the wrong direction. How to avoid that? Instead of playing the game all over again, players usually revert to a saved checkpoint and start again from there.
Git is the tool that ensures those checkpoints are in place. During the development process, developers can roll back to the previous version of source code and make changes if needed. Additionally, Git makes it possible for developers to find code added by them or other developers at any point of SDLC.
Thus, Git is a version-control system for tracking changes in the source code during an SDLC. It was initially designed by the Linux creator, Linus Torvalds, in 2005. Version control systems weren’t a new concept. But since then Git took a major leap, becoming the preferred solution for many projects, both commercial and open-source. Today, it’s an open-source, free tool.
Git can be initialized in a project to create a Git repository. After you install Git, you will see that a Git repository is a folder inside a project that contains a history of changes made to files in a project over time.
VCS usually have branching support. Creating a Git branch means deviating from the main branch to continue working without making changes in the main branch. The main branch is called “master,” and it’s also known as a lightweight movable pointer to one of the commits.
GitHub is a collaboration platform for developers based on the Git version control system. It hosts and reviews code, manages projects, allows remote access to work on code collaboratively in a distributed environment.
GitHub was launched in 2008 by Tom Preston-Werner, Chris Wanstrath, and PJ Hyett. The company was acquired by Microsoft in October, 2018.
Today, GitHub has 26 million users. What is the reason behind its popularity? It’s all about networking. GitHub simplifies work for large software development teams. It allows to collaborate with developers from different parts of the world, plan their work, and track the progress in projects. GitHub also boasts controlled access, bug tracking, task management, and Wiki space.
GitHub was the cause for other version control systems to sink into oblivion. It happened for a reason: The creators of GitHub put a lot of effort into meeting the demands of modern technology teams.
GitHub offers pricing plans for individuals and teams based on the number of collaborators. Because the company intends to get a substantial bulk of their profit from collaborating with large companies, the pricing for smaller teams is rather loyal.
GitLab is a web based repository, which in addition to the collaborative capabilities is focused on DevOps and CI/CD. GitLab boasts almost all features GitHub has, allows teams to collaborate on code, and provides project management tools.
GitLab was launched in 2011 by two Ukrainian developers, Dmytro Zaporozhets and Valery Sizov. In 2018, the company raised $100 million in Series D round funding, joining the unicorn club.
Even though the company is relatively young, GitLab open source platform is leveraged by well-known enterprises, including IBM, Sony, NASA, Oracle, Boeing, SpaceX.
GitLab is written in Ruby and Go and includes functions like project planning, source code management, and CI/CD. GitLab has an open source nature, which allows developers to run it on their own servers. For detailed information on how to use GitLab, take a look at GitLab Documents.
GitLab drew a lot of attention after Microsoft had acquired GitHub, as many developers started contemplating moving away from GitHub due to distrust to Microsoft. In 2018, Gitlab was listed among top DevOps tools.
Some say GitLab is the clone of GitHub, but we see it as an enhanced version of it. Both platforms offer free plans, so you can try out each of them to see which one works best for you. Below, we have pulled together key similarities and differences between GitHub and GitLab.
Both systems have great reporting tools about collaborators’ work, including monitor status changes, assigning owners, and bug reporting.
GitHub and GitLab offer features like setting the issue status, assignees, milestones and allows to filter them easily.
Select a description template to the issues when creating or merging requests.
Assigning of an informative title to easily categorize issues, merge requests and epics.
Wiki-based project documentation
The two systems offer Wiki, a special system for documentation available in every project that comes with its own Git repository.
Free private repositories
Both systems offer unlimited private and public repositories. However, GitHub comes with a limitation of 3 collaborators for private repositories.
Merge Request Commit Discussions
Merge requests can be commented based on information about merge request itself.
Deep integrations with the product for a wide range of features.
Both GitHub and GitLab offer enterprise solutions for large teams and organizations.
GitLab has free built-in CI/CD to build, test and deploy websites and web applications. GitHub leverages 3d party integrations for CI/CD.
In GitLab, users have different levels of access based on their roles, while in GitHub, developers can grant access (read, write, and administrate) to repositories.
With GitLab, internal projects allow developers to promote innersourcing of internal repositories. GitHub doesn’t offer this feature.
GitLab is capable of importing projects from lots of sources as compared to GitHub, including GitHub, Bitbucket, and from any Git URL. With GitLab, developers can export projects to other systems, while GitHub puts certain limitations on this feature.
GitLab allows to set the weight on an issue, which resonates with the Agile methodology. This is something GitHub doesn’t offer.
Milestones and due dates
With GitLab, milestones can be created in projects and groups. You can easily view all issues for a milestone. GitLab also allows to set due dates for issues, which is convenient for small tasks.
Gitlab has Сonfidentiality Issues, meaning ones that can be made visible for project managers with Reporter status or above.
GitLab allows to use Web IDE to contribute to projects faster and avoid switching in a local development environment. It’s integrated with merge requests and GitLab CI.
GitLab offers a dashboard that provides analytics about the time it takes from planning to monitoring.
To sum up, both GitLab and GitHub are web-based repository managers that allow to collaborate on code. While GitHub remains the most popular Git repository, GitLab keeps gaining track due to enhanced issue tracking, CI/CD, and user experience.