Version control systems like Git are essential tools in software development that allow tracking of code changes and collaboration between programmers. Git repositories provided by GitHub and GitLab are two of the most popular options. While GitHub is mainly used for code sharing and includes social features, GitLab provides additional DevOps capabilities like integrated continuous integration and deployment. Both tools have similar features for code review, issue tracking, and documentation, but GitLab offers more robust project management and security features for enterprises. Version control systems streamline development and allow easy reverting of mistakes or changes, improving productivity and reducing errors in software projects.
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Git tech
1. Taj Nehme
Technology Lead
September 16, 2020
Git Technology
The Software Development Lifecycle is an essential role in any technology company and
encompasses pretty much everything that has to do with a systematic work
fl
ow for
designing, developing, and delivering software applications. End to end. SLDC describes a
series of stages in which a software reaches its desired outcome.
Version control repositories is one of the most essential key player in SLDC and the proof
lies in GitHub’s and GitLab’s position as their number 1 DevOps tools that play a role in
software delivery.
Version control systems are essentially software management components that handle and
track changes made to software, programs, and code bases. When you have several
programmers working at once on one software project, a version control system ensures
there are no code overlaps or con
fl
ict. It enables the enhancement of code and the
harmonious growth of complexity without having too much side e
ff
ects.
2. Changes in requirements which we see along all business development life cycles require
modi
fi
cation in code bases to accommodate them. Any software development project that
involves technical and business requirements, while bringing together a collaborative team,
absolutely requires a version control system.
The key bene
fi
ts of using Git repositories are:
1. Streamlining the development process
2. Management of code for multiple projects at once
3. Upkeep of a clean history for code changes
With version control, all changes are kept and tracked in a repository, which enables us to
revert back to di
ff
erent code at di
ff
erent points in time. Hence if a mistake was done or we
broke something in the code, we can just revert back and undo mistakes instantaneously.
It greatly reduces any human error and also integrates easily with software development
tools such as IDEs and build automation tools.
Build automation tools are tools that build your app on the spot and pushes it to whoever
you specify, whether testers or stakeholders.
“To sum up, version
control systems are
essential to the
success of highly
collaborative software
development
work
fl
ows and there is
virtually no scenario in
any modern SDLC
setting where it is
bene
fi
cial to skip their
use. ”
3. Github and Gitlab are both web-based Git repositories. Now Git is a version control system,
the most common and basic one. If you’re not using Git then Git the F out of here. Let me
tell you why, it is the standard solution and most commonly used version control system
today, worldwide.
With its distributed version control system nature, it tracks code changes throughout the
SDLC and allows several projects and features to be developed in parallel without a
ff
ecting
the main app development on the master branch. Designed and developed by the same
guy who brought us Linux, Mr. Linus Toryalds, it is now a full-
fl
edged repository that is
mature, open source, and free.
Key properties of Git involve:
• Toolkit-based design
• Distributed development
• Support for non-linear development (as mentioned above several feature
development in parallel)
• E
ffi
ciency for handling large projects
Now that we know a little bit more about Git and version control repository management
services, let’s explore GitHub and GitLab.
GitHub vs GitLab? What to do next?
GitHub is a code hosting platform or development platform that developers use to store
projects and codebases. GitHub is mainly used for code due to its built-in tools to review
and improve it.
“GitHub and GitLab are
the #1 go to tools ”
4. GitHub is open source and a free service that provides remote access to code repositories.
It helps manage the software development lifecycle. Additionally, it includes features such
as code sharing among multiple people, bug tracking, wiki space, and other tools for what
is called social coding.
GitLab on the other hand, which I am coming to believe is the underrated Git service
version management tool and is a bit more powerful if used correctly, is a GitHub-like
service that provides web-based DevOps internal management of Git repositories.
GitLab o
ff
ers two options:
1- a free community edition
2- a paid enterprise edition
GitLab includes a lot of the necessary features for successful management of the software
development process such as:
1- Wikis,
2- Jira integration
3- Continuous Integration runner that can be programmed to automatically test and
build you code binaries (or programs)
4- Release management, binary attachments, and more. That will allow us to release
to predetermined paths wether they be the app or play store, or local servers or
con
fi
gured test
fl
ights for internal test users.
GitLab’s popularity is due partly to its seamless integration with Continuous Integration
technologies. CI means quicker iterations, quicker tests, quicker deployment, quicker
auditing.
If you are worried that your code is too precious to be on the cloud, then look at the beauty
here:
5. GitLab o
ff
er Self managed on premises installations. We can literally install Gitlab on servers
and give access to the developers to coordinate and code and do their CI pipelines on the
instance running on our server.
“With over 100,000
organizations and users
leveraging GitLab, it
became the 4th fastest
growing private software
company in 2018."
6. Here are some of the key similarities between GitHub and GitLab:
• Tracking. Both GitLab and GitHub o
ff
er fantastic issue tracking capabilities that
enable status changes and the ability to assign owners to each issue. Additionally,
bug reports can be sent instantly to both GitLab and GitHub.
• Issues. Both GitLab and GitHub are capable of quickly setting up the status,
assignees, or milestones for multiple issues at a time to easily
fi
lter them based on
any type of property.
• Integrations. Both GitLab and GitHub have a wide array of 3rd party integrations
available to strengthen work
fl
ows and boost productivity. GitHub has a marketplace
of 3rd party integrations for specialized tools and applications. GitLab o
ff
ers
numerous integrations for development and DevOps teams.
• Support community. While GitHub’s support community is considered slightly
bigger, both solutions o
ff
er a strong community of developers who contribute to the
update and upkeep of GitLab and GitHub.
• Labels. Both GitLab and GitHub provide easy inclusion of labels to provide a simple
method of categorizing issues, merge requests, or epics based on descriptive titles
such as “bug” or “documentation” which are very helpful for tracking.
• Description templates. Developers can add a description template to issues or
merge requests in both GitLab and GitHub by selecting a template for e
ff
ective
communication.
• Enterprise solutions. GitLab and GitHub o
ff
er enterprise-level capabilities for
development teams and organizations. While GitLab is better positioned in the
enterprise environment, both solutions fare well in enterprise settings.
• Wiki-based project documentation. Both GitLab and GitHub keep a separate
system for documentation that is called Wiki and is built right into each project as a
separate Git repository.
• Edits. Both platforms allow upstream maintainers to collaborate on a source branch
and edit into a fork. This way, maintainers can make small
fi
xes or rebase branches
before merging, which reduces iterations of community contributions.
7. • Merge approvals. Both platforms enable developers to ensure merge requests are
approved by one or more people. These approvals allow the development team to
pre-de
fi
ne the list of approvers for every merge request in a project to improve
coding quality.
• Revert commits. GitHub and GitLab are capable of reverting commits or a single
merge request via each platform’s UI.
Other key features that are shared between GitHub and GitLab include pull request, fork/
clone repositories, code review, and markdown.
Here are some of the key di
ff
erences between GitHub vs GitLab:
• Built-in Continuous Integration/Delivery. GitLab is known for its built-in
Continuous Integration/Delivery for free, which is something that GitHub does not
o
ff
er. Instead, GitHub’s o
ff
ering lies in 3rd party integrations that enable Continuous
Integration/Delivery.
• Inner-sourcing. With GitLab, internal projects allow developers to promote inner
sourcing of internal repositories - this is something that is not o
ff
ered by GitHub.
• Authentication. In GitLab, permission is granted based on people’s roles while in
GitHub developers can grant read or write access to speci
fi
c repositories.
• Data import/export. GitLab o
ff
ers far more detailed documentation on how to
import/export data from external vendors while GitHub’s documentation is not as
detailed. GitLab is capable of importing projects and issues from more sources than
GitHub can. With that being said, GitHub does o
ff
er a tool called the GitHub
Importer to bring in data. With regard to exporting, GitLab o
ff
ers a comprehensive
solution to export wikis, project repositories, project uploads, webhooks and
services, and issues. On the other hand, GitHub is slightly more restrictive in terms
of export features.
• Deployment platform. GitHub does not come with a built-in deployment platform
and requires a 3rd party integration with an external application to deploy
8. applications. On the other hand, GitLab leverages Kubernetes for a seamless
deployment experience.
• 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
fi
le export. GitLab is capable of exporting CSV
fi
les of issues to default
noti
fi
cation email addresses as attachments.
• Con
fi
dential issues. GitLab’s Con
fi
dential Issues module creates con
fi
dential
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. (It proves to have some project management features)
• Burndown charts. Unlike GitHub, GitLab o
ff
ers 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.
• Monthly new features. GitLab is known for its monthly updates of new features
and improvements that are made religiously on the 22nd of each month.
• Bare metal servers. GitLab can run on bare metal servers for full control of disk I/O,
CPU, RAM, and more for easy horizontal scaling.
9. Besides the ones we just pointed out, the main di
ff
erence between GitHub and GitLab rests
in the philosophy each platform presents. 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.
CONCLUSION
In highly competitive environment and with the speed of advancing technology, staying
ahead is vital for your business. Being #1 and staying there will need a lot of work, or else
someone else with the right Tech will come and beat you to it. Hence it is utterly vital that
the step for the success is to easily manage changes within the SDLC while fostering a
collaborative and full-on environment that is able to come up with idea, implement, and
deploy on the spot. As well as revert or rollback the ideas that prove to be a failure or loss
to the business with utter speed, hence being in control of risk aversion and mitigation for
the business.