Git and GitHub in the Open-Source Development World

Jun 23, 2020
7 min read

Agile was formally launched in 2001 in the Agile Manifesto with the goal of better developing software by collaboration, improving documentation, interaction over processes and tools.

Today agile development is embedded in almost every software development organization of an innovative company, as well as in a data science pipeline of a data-driven Company. Agile is an iterative approach to software development based on steps that afford easy changes on the project, continuous interactivity with stakeholders, reducing production costs, etc.

Git and GitHub are embedded in this process, focusing the attention on how to collaborate on code launching a new era of open source development.

What is Git?

Launched in 2005 by Linus Torvalds, Git is a distributed version control system, it works for many services, such as GitHub and GitLab, but you can use Git privately or publicly and without other services.

A version control system is a software package that helps you to keep track of a file or a set of files (word document, excel spreadsheet, piece of HTML, etc.) over a time period in such a way that it allows you to tag all the changes that are happening on the file or a set of files. It allows you to look back to the original file or every previous level tagged whenever needed.

When a version control system is installed and launched, it builds a local directory at the same place where your files are stored, which it exploits to manage the whole chronology of the switches made to your files.

There are three types of version control systems at disposal.

The first one, the local version system, works through a locally installed database that records all file changes. It can then reproduces the file's contents to the user's workplace exactly at any given point in time by adding up all the relevant patches. However, if the computer holding the data is experiencing issues, it won't be possible to recover them.

With the second one, the centralized version control system, users are able to work on the same project, because there is a commonplace (server) that contains all the files stored with any changes that everybody enters from their local machines (clients). However, if the server were to run into issues, no one can collaborate and save their changes.

The third one, the distributed version control system, is a combination of the previous two options described above. It combines the advantages of the local version control system and the advantages of the centralized version control system.

All users working on the same project have a complete copy of the repository (the whole history of the various files). In this way, each team member seems to have a backup without having the need to connect to the server to view the history of a project.

This third approach is the system used by Git, and it is, for this reason, it is safer and faster than the other systems. Safe because the complete copy of the repository is saved on the server and is owned by all users working on the project. Quick because it runs locally, so you can connect to the server only to perform a data update.

Why should you use Git?

First of all, it’s free and open-source, Git is released under the GNU General Public License version 2.0, which is an open-source license.

You have the opportunity to check out a complete history of all the changes that happened in your project, so if you make a mistake, you can bounce back to recover an earlier version of your job. Not only that, but you are also confident of your changes because, with commit messages in Git, it’s easy to document for future reference why you’re making a change.

It's useful in a collaborative job, as well as for programmers in sharing their code because it gives you the opportunity to have multiple streams of your history. It means you can create many branches of history to try several changes to your topic or to build out several features independently. Then, you can merge those back into the main project history (the master branch) once they are ended, or delete them if you don't use.

Moreover, Git has the ability to solve conflicts in a programming job. It means when many people are working on the same file at the same time, and Git is able to merge changes automatically. If this does not happen, it means there are some conflicts, and Git will show the reasons.

Thanks to these and other features, Git has become extremely popular and it's used by all the biggest Silicon Valley companies (Google, Facebook, Apple, etc.).

What is GitHub?

GitHub, launched in 2008 by Tom Preston-Werner, Chris Wanstrath, and P.J. Hyett, has reinvented the collaboration on code and web. It's a website where you can upload a copy of your Git repository. More specifically, it's a web hosting service of the Git repository and allows you to collaborate much more easily with other people on a project. GitHub provides a centralized location to share the repository, a web-based interface to view it, and features which allow you to consult and review changes with your team more effectively.

GitHub's interface is quite friendly to use, so even newbie programmers can take advantage of Git's features. Without GitHub, Git generally requires more technical experience and also the use of the command line. GitHub is so easy to use, that does not require any programming knowledge, you can use it for any types of files.

Why should you use GitHub?

First of all, GitHub is much more than just a place to store your Git repositories. It provides some benefits as you can either report bugs or define new features to develop by your team.

The opportunity to collaborate on several branches or features allows you to review all the different features being worked on and latest changes, moreover looking through the commit history allows you to see what the team has been working on.

GitHub can be considered between a social network and a file repository. It offers solutions both for private projects and for open source projects.

GitHub gives you the opportunity to develop and implement a management strategy because you can manage the collaboration with colleagues in different locations in the drafting of documents or reports and in the same way it's a social platform where professionals, from all sectors, meet to collaborate remotely on projects of all kinds.

Given GitHub is a repository, it allows your work to get out in front of the worldwide, providing exposure for your project and for yourself. Moreover you have the opportunity to have your code reviewed by the community.

Like any other social platform, GitHub allows you to meet new people and build relationships with them. Once an account is opened, it will be possible to upload projects and works to be shared with other users; look through the various repositories in search of an interesting project with which to collaborate; get in touch with other people and share projects and ideas with them.

GitHub is also a source to find talent to bring on board in a company because you can find programmers working on similar projects or who have skills that offer a good fit for your organization.

Many companies and organizations are moving to open-source solutions because these technologies allow for greater flexibility in a continuously changing environment and are able to satisfy more rapidly to market demands. GitHub is a community where programmers are working to solve current issues and making solutions available to the public.

It's not surprising, in short, if GitHub ended up attracting the attention of the big names in the hi-tech space, and this attention blurred in the acquisition of it by Microsoft in 2018, paying $ 7.5 billion.

GitHub is a large repository of codes known among companies that are hosting their own projects, documentation, and codes, such as Apple, Amazon, and Google. Microsoft has increased the investment in open source technology since Satya Nadella took over as CEO. Moreover, Microsoft is the website's main contributor, and GitHub even hosts the original Windows File Manager source code and is using the open-source Git version control system for Windows development.

This acquisition probably marks a point from which will probably begin a closer integration between Microsoft's development tools and the GitHub service.

What about GitHub with competitors?

Now have a look at some GitHub features and competitors.

GitHub is able to offer several accounts:

-basic free account for team and developers with unlimited number of repositories/unlimited collaborators and 500MB storage per repository.

-then other payment accounts for team and enterprise.

GitLab is the main competitor of GitHub, offering similar services and, both GitLab and GitHub are a web-based Git repository.

GitLab offers free and payments accounts as GitHub, and it is the cheaper option; moreover, GitLab offers 10 GB storage per repository.

Bitbucket is a web-based version control repository hosting service. It is suitable for software projects that use Mercurial or Git. Bitbucket is a part of the Atlassian software suite, so it can be integrated with other Atlassian services such as Jira. Also, Bitbucket offers several plans and is cheaper compared with GitHub and GitLab, and offers 1 GB storage per repository in the free account.

Helix TeamHub is another web-based version control repository hosting service and is suitable for projects that use Mercurial, Git, or SVN (Subversion). It offers free plans for limited users with 10 GB storage per repository or payment plans.

Overall, these systems give quite the same services, but the GitHub developers community is more popular.

Happy sharing documents & coding on GitHub!