GitHub is a web based social platform that allows for the collaborative development and sharing of source code. GitHub is built around the use of the open source version control software Git. Founded in 2008 and based in San Francisco, GitHub currently employs 160 individuals, many whom work remotely from all over the world. The site currently has over four million users and hosts 11 million source code repositories, making it the largest source code host in the world (GitHub, 2013).

GitHub offers its services free of cost to individuals that desire to host their open source projects publicly. For individuals and businesses that wish to keep their source code private, GitHub offers two fee-based options. The first fee-based option is a Software as a Service (SaaS) model where customers pay to have a set number of private code repositories hosted by GitHub. These private repositories leverage the same infrastructure and offer the same features as the company’s free public service. The other fee-based service option is a licensed Enterprise version of GitHub’s software. This version is directed towards customers whom wish or are required to host their own source code. This hosting model allows customers to leverage GitHub’s collaborative tools, while still maintaining strict control over the security and access of their source code.

The typical usage of GitHub focuses on the sharing and collaboration around source code. A common scenario is setting up a new project to be shared publicly on GitHub. The user initiates the creation of a new project by first creating a new local Git repository. They then work with the source code within the local repository until they feel comfortable making it publicly available. At this point, they create a new public repository on GitHub and push the local repository to it. Once the push is complete, the project’s source code is publicly available for other users to view and work with. The user can then continue to work from their local repository until they wish to push their next set of code changes to GitHub.

Another common usage model is around users that wish to contribute to existing projects. The user initiates this process by creating a fork of the original project’s repository. A fork is a complete copy of all of the original project’s source code. The user now owns and has full control over this forked copy. The user is now free to make changes to the code in their forked version of the project. If the user feels that the changes can benefit the original project, they package the changes together creating a pull request to the original project’s owner. The original project’s owner is notified of the pull request and determines whether to merge the changes into the original project.

Users that are not familiar with development also have the opportunity to participate and contribute to projects on GitHub. Each hosted project has an issue tracking system associated with it. Anyone can submit issues or potential feature requests to the project using this tracker. The project’s owner can then prioritize and hold discussions around the submitted items.

The most visible change GitHub as brought about since its introduction is in the way users share and contribute to open source projects. GitHub has helped lower the barriers in which to garner participation in open source projects. The force behind this change is the workflow GitHub incorporates into their tools. Driving this workflow is the ease in which developers can fork an existing project, make their changes, and submit the resulting pull request back to the original project. Another change driven in part by GitHub and its popularity has been the overall acceptance of Git as the standard version control tool for open source projects (Dabbish, Stuart, Tsay, & Herbsleb, 2012).

Going forward, GitHub could possibly expand its services into more areas of a project’s development lifecycle. A couple key areas would be around project and artifact management. For project management, the ability to track and assign work items through the tool would provide added value. For artifact management, the ability to track analysis and design items through a project would provide an added level of traceability to the existing source and issue management systems. These additions would allow GitHub’s service to be used from end-to-end on more formal projects, allowing them to compete in the ALM (Application Lifecycle Management) tool space with other vendors.

In conclusion, GitHub has created a platform in which strives to promote the acceptance of open source software while at the same time creating a sustainable business model. As GitHub continues to focus on meeting its users’ needs by expanding its core services, its future as a company continues to look promising.  


Published: May 3, 2013