Tools for Transparency: GitHub



With 97 Sunlight software projects hosted on GitHub, we’re clearly fans of the service. GitHub, launched in July of 2008, is a website for hosting source code kept in the Git revision control system and is currently home to over one million projects.

If you’re looking for a home to host your transparency related software projects, GitHub is a great choice; it will provide visibility, encourage collaboration, and offer useful tools, it’s also free for open source projects.

Sometimes GitHub gets all the credit, but it is important to acknowledge that much of the service’s impressiveness comes from its underlying revision control system, Git. We like Git for three broad reasons:

  • it embraces non-linear development. This boils down to two simple things. First, developers can work on different branches of code but still easily bring them back together. Second, Git allows flexibility in project collaboration styles because it supports various workflows. Teams can choose any workflow that makes sense for their situation. Git workflows range from centralized (like Subversion) to decentralized.
  • it is distributed. (Yes, another technical term that needs to be explained!) Every copy of the repository contains the full history of the project. This means that a developer can work with a repository even without network access, making it great for working in areas with spotty or missing network connectivity. It also makes common operations (such as committing changes or creating new branches) very fast. Also, if one copy of the repository is lost, another can be used instead.
  • it is fast, even for large projects. (For example, Git is considerably faster than Subversion.) This means that searching the project history and making changes do not slow you down. As software developers know, making a tool fast and responsive is not merely a luxury. It allows tools to melt into the background and become intuitive parts of your workflow.

Simply put, GitHub is a web-based collaboration tool for Git projects. This may sound dry, but GitHub is a well-praised hero of the tech community for good reason. GitHub makes it simple to share your projects and find other interesting projects. In short, it helps build community around software projects.

What really sets GitHub apart from earlier web-based source control tools (such as SourceForge and Google Code) is its social focus and user base. GitHub enables social networks centered around projects and users. It facilitates various forms of collaboration: users can follow activity streams, send free-form messages, comment on source code on a line-by-line basis, create and edit wiki-based documentation, and report and track issues.

Last but not least, if a developer wants to tweak an existing project, she does not have to wait for approval from the owner to make changes. The developer can simply fork the original repository, creating a new repository that she can change. When ready, the developer can send her suggested source code changes to the project owner (these are called pull requests). (Pull requests are polished UI features that are made possible by the distributed nature of Git.)

Sunlight has taken advantage of GitHub’s social networking features and tooling to roll out a number of Labs projects. You’ll find repositories for Transparency Data, the National Data Catalog, Poligraft and Real Time Congress amongst many others. GitHub is definitely worth checking out if you need a place to host your project’s source code.

(Thanks David and Tom from Labs for helping with this post!)