GitHub
Introduction
GitHub is an Internet hosting service for software development and version control using Git. It is a web based platform where users can store their code and collaborate together on a coding project. GitHub has a lot of great tools/features like github desktop, actions, project management, teams, etc.
Brief History
GitHub was founded in 2008 by Tom Preston-Werner, Chris Wanstrath, P.J. Hyett, and Scott Chacon. GitHub has had an enormous growth since it was founded and today it is one of the most popular platforms for web hosting and code sharing. GitHub’s headquarters is based in San Francisco in the state of California, in the united states of america. The CEO of GitHub is named Thomas Dohmke. GitHub currently has about 2500 employees and in 2018 it had about 200-300 million USD of revenue.
From the beginning to the present time (2023)
github blooming
- (year 2010) Two years after its launch, GitHub was hosting over 1 million repositories.
- (year 2011) In the period of January to May 2011 ReadWriteWeb reported that GitHub had surpassed SourceForge and Google Code in total number of commits.
- (year 2013) It was hosting 5 million repositories and had over 3 million users. Before this year ended the amount of repositories had doubled again and it was now hosting over 10 million repositories.
Finance
- In 2012 Andreessen Horowitz invested 100 million USD in GitHub with a valuation of 750 million USD.
- In 2015 GitHub raised another $250 million of venture capital in a series B round. Investors were Sequoia Capital, Andreessen Horowitz, Thrive Capital, and other venture capital funds. This round valued the company at about 2 billion USD
International Expansion
- In 2015 GitHub opened its first office outside of the United States of America. The office was opened in Japan.
- In 2016, GitHub was ranked No. 14 on the Forbes Cloud 100 list. It was not featured on the 2018, 2019, and 2020 lists.
major attack In 2018 GitHub fell victim to what was considered to be the third biggest DDoS (Distributed Denial of Service) attack in history. The attack’s traffic peaked at about 1.35 terabits per second. As a respond to this GitHub expanded its GitHub Education by offering free education bundles to all schools.
Acquisition by Microsoft Microsoft has since 2012 been using github to host open-source projects and development tools such as .NET Core, Chakra Core, MSBuild, PowerShell, PowerToys, Visual Studio Code, Windows Calculator, Windows Terminal and most of its product documentation (now to be found on Microsoft Docs). Microsoft announced on June 4Th 2018 that it intended to acquire GitHub for 7.5 billion USD. Only months later on October 26, 2018. the deal was closed. Under Microsoft GitHub continued to operate independently as a community, platform and business. This acquisition was in line with Microsoft’s business strategy under CEO Satya Nadella, which focused on cloud computing services, alongside the development of and contributions to open-source software. Concerns over the sale bolstered interest in competitors like: Bitbucket, GitLab and SourceForge. they reported that they had seen spikes in new users intending to switch from GitHub to their respective services. In 2019 GitHub acquired Semmle, a code analysis tool, and in 2020 GitHub launched in India under the name GitHub India Private Limited. In 2020 it also acquired npm (Node Package Manager) for an undisclosed sum.
Features
This is GitHub key features:
-
Version Control: version control is also known as revision control, source control, or source code management. It allows developers to monitor changes to their code and they can revert to previous versions if needed.
-
Team-Collaboration: Users can work together on the same project, inspect each others code, raise issues and make plans for the project.
-
Branches: A user can start a new branch either from the main branch or a different branch. This allows the user to write new code for the project without adding it to the project itself. When new code is written on a new branch it can be merged into the main project. Usually users make a pull request before merging. This system enables users to develop code on different versions of a project at the same time.
-
Pull requests: When a user have made changes to a project’s code on a separate branch, he can make a pull request. This is an important step in quality control where other developers can inspect the changes in the code. They do this to make sure that the code is bug free and has no issues. When it is determined that the code is safe it can be merged from this branch to it’s parent branch or to the main branch.
-
Issues: GitHub Issues can be used to track ideas, feedback, tasks, or bugs for work on GitHub. Issues can be an important part of development as bugs and problems with the code arises developers can raise an issue and also assign the issue to specific developers for fixing.
-
Merging: Is adding new code to a project from a separate branch. usually this is done after a pull request.
-
Integration: GitHub allows for developers to use other programs in combination with github. examples are: continuous integration systems, tools for project management and several IDEs.
-
GitHub Actions: Is a feature where you can add automated tasks to a project. The automated tasks can either be run manually or be set to run at specific points of development such as when a pull request is made. GitHub actions is very flexible and allows for lots of different programming languages and tools to be used with it. examples of GitHub actions usage: deploy to static pages, end to end testing and unit testing.
-
GitHub Pages: Can be used to host a web project directly from GitHub. It is an easy way for developers to host a project and/or share details for a project.
-
GitHub Enterprise: Allows businesses to run their github projects on their own servers with additional security and access to more features like GitHub Enterprise API.
Strengths
-
Web-based platform/ease of access: Being web based can be seen as a plus. New users can easily create an account especially when they can sign in via google.
-
Popularity: Being one of the most popular development platforms do make it easy for people to choose github for their projects, as many developer already know how to use it. And new users can easily be integrated in projects with help from more experienced users.
-
GitHub Actions: A powerful tool for automation in your own repositories.
-
Security: GitHub has many good safety features that keeps the projects safe.
-
Mobile app: GitHub has an app developers can use to manage their code trough their mobile phones. A good tool on when you are on the go and don’t have a laptop or computer available.
-
Desktop app: Is superb for better workflow.
-
Integrations: The fact that github can be simply used together other products like IDEs, management tools etc.
-
Easy to find resources: It is easy to find resources for learning how to use github, both from GitHub itself and the large community of users.
-
Free of charge up to a certain point: GitHub is Free for personal accounts. GitHub enterprise is affordable for bigger enterprises.
-
GitHub pages: You can host your own website directly from github free of charge.
Weaknesses
-
Limitations: GitHub has its limitations, not everything can be done trough GitHub and some developers may look for other platforms if GitHub cannot provide for their needs.
-
Overwhelming to new users: It can be difficult for new users due to its complexity, i can personally relate to this.
-
Performance on big repositories: Free user accounts are limited to GitHub’s servers, this can cause issues when there is a high amount of traffic on the servers.
-
Storage capasity: Storage capacity is limited for free accounts. at a certain point the user may have to pay for more storage capacity.
-
Expensive enterprice: Upgrading to enterprise may be costly, but it depends on the size of the enterprises and revenue. It is certainly something to consider before upgrading or choosing github at all.
Comparison
There are other platforms similar to github:
-
GitLab: GitLab is open source and can be self hosted for free. It launched in 2014 and it is a web-based platform for collaboration and version control. gitlab has built-in continuous integration and testing capabilities. gitlab has about 200-500 thousand users and is owned by gitlab inc. it has a limit of 10 GB of repository storage, which is ten times greater than github.
-
Azure DevOps: Is owned by Microsoft and is a cloud based platform that focuses on enterprise customers, it is a good option if you use a lot of Microsoft products and services as it integrates well with many of their products. Azure devops is a fully integrated set of services that provide all the tools necessary for building and maintaining a backlog.
-
Bitbucket: launched in 2008 and is owned by atlassian. It is a web based platform for collaboration and version control. It has about 10 million users. It has a storage limit of 2 GB repository storage, which is twice the limit of github. It provides integration with other Atlassian tools. But it is much more limited in its capabilities than the other alternatives.
Summary
GitHub is one of the best (if not the best) platforms for open-source projects, you can also use it for private repositories. It has a great community, is easy to use, great security and many features and tools for collaboration. But everything has it’s limits. It can be scaled up but only up to a certain point where other alternatives might seem like a better option for enterprises, in that case azure devops might be a better alternative.
Credits
- Andreas Jakobsen (volvojakobsen)