Git & Github: Collaboration in Software Development

github social codingA new data communication protocol that has emerged in recent years is the distributed version control system named Git and various online services built on it such as GitHub that allow for collaboration among software developers. It can have a large impact on software companies by streamlining the collaboration process between developers. Git works by creating a main repository for a project that developers can then branch off, make changes and merge back to the main branch. It also allows developers to easily pull in the latest changes made by others. Git is a very powerful tool that increases programmers productivity and helps advocate collaboration.

Git was started in 2005 by Linus Torvalds as the need for wanting a better version control system than the ones that already existed such as CVS and Subversion to use for development of the Linux Kernel (Loeliger 2). Some of the key features it aimed to address was the ability to aid distributed development, handle a large number of collaborators, reliability, accountability and efficiency. It was a radical improvement over other alternatives, and has since become the most popular  control system version in the world.
Git’s popularity opened the door for new online services to take advantage of its collaboration capabilities and provide the github ninjaability to host projects in the Cloud. Various online services exist today such as GitHub and BitBucket (with GitHub currently the most popular) (Finley). GitHub offers two tiers, free hosting for open source projects and a paid tier for closed projects. By providing an online interface on top of Git’s capabilities, GitHub has become the most widely used platform for open source projects on the internet (Finley). Some of the reasons it has become so popular in the open source community are the extra features it offers that aid collaboration such as an issue-tracking system, Gollum, a Git-based Wiki, and the ability to download files (Spinellis 101). It also offers various social features such as the ability to follow different users and watch certain projects giving the user a centralized feed showing the latest activity by these entities (Dabbish et al. 1279). The way collaboration works for open source projects is “developers without commit-rights fork a project, creating a personal copy of the code that they can change freely. They can then submit some or all of the changes to the original project by issuing a pull request. The project owner or another member with commit rights can then merge in their changes. Developers can also communicate around code-related actions by submitting a comment on a commit, an issue, or a pull request.” (Dabbish et al. 1279) By simplifying the workflow and process needed to contribute to a project, it helps foster collaboration.

This can have an affect on businesses in multiple ways, a company built on open source projects can have a central location to host their project and gain new contributors easier. It also allows everyone working on the project to get all the collaborative features that make Git so great. By maintaining a project with potentially thousands of contributors, you need a system that will allow collaboration in a simplified, smart process and that is where Git excels. It can also have an affect on software companies with private repositories as it advocates collaboration across a team, streamlines the workflow process, allows for the ability to do work remotely and addresses accountability.

Another way it can have an affect on businesses is by providing each user a profile and tracking their commits on each project; this can serve as a useful resource for employers when looking to hire new employees. It allows the employer to see the quality of work of the developer and make a better informed decision if they would be a good hire. Brian Doll, a GitHub engineer had this to say “The number one way of getting a job in any programming company right now is to have a GitHub account and show your work. Many articles describe how GitHub is the new resume for programmers.” (Begel 54).

Overall, Git is a very powerful tool that has since spawned a whole line of businesses built on top of it, and is great for developer collaboration either on a small scale or large scale project. By its ability to both simplify and smarten the process of collaboration it has become a very useful asset for businesses who need a tool that allows developers to work as a team on a project in a smart and efficient manner.
For more information, check out the Works Cited:

  • Begel, Andrew, Jan Bosch, and Margaret-Anne Storey. “Social Networking Meets Software Development: Perspectivesgithub politician from GitHub, MSDN, Stack Exchange, and TopCoder.” Software, IEEE 30.1 (2013): 52-66. Print.
  • Dabbish, Laura, et al. “Social coding in GitHub: transparency and collaboration in an open software repository.” Proceedings of the ACM 2012 conference on Computer Supported Cooperative Work (2012): 1277-1286. Print.
  • Finley, Klint. “GitHub Has Surpassed Sourceforge and Google Code in Popularity.” ReadWrite. Say Media Inc., 2 Jun. 2011. Web. 7 Sept. 2013.
  • Loeliger, Jon. Version Control with Git: Powerful tools and techniques for collaborative
  • software development. N.p.: O’Reilly Media, Inc., 2009. Print.
  • Spinellis, Diomidis. “Git.” Software, IEEE 29.3 (2012): 100-101. Print.

By Josh Cope, a Senior in Computer Science

Image 1 by Snip {link to}

Image 2 by Cameron McEfee on his blog {link to}

Image 3 by Lisa Williams on her blog {link to}


2 thoughts on “Git & Github: Collaboration in Software Development

  1. Pingback: What’s this? ASIS&T is hosting a Git Workshop! | The CCI Student Center Blog

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s