InfoQ

News

GitHub - Rails-based Git repository hosting

Posted by Mirko Stocker on Mar 18, 2008

Community
Ruby
Topics
Technology ,
Ruby on Rails ,
Open Source ,
Collaboration
Tags
Rails ,
Subversion

Git is a distributed version control system, originally written by Linus Torvalds to manage the source code of the Linux kernel. It has also become quite successful on other projects, especially in the Ruby world, where the list of prominent users includes Rubinius and Merb. Git can also be used by the deployments tools Capistrano and Vlad the Deployer.

As stated above, Git is a distributed version control system, which means that there isn't only one fully-fledged master repository, but every clone can be used stand-alone and changes can be merged between any two repositories.

GitHub hosts git repositories and provides a web interface to it, but contrary to other such services like SourceForge or Google Code, a unique selling point of GitHub is the easy forking of other projects. Contributing to a project is as simple as clicking the "fork" button on the project's site, checking out and committing changes to your forked repository and finally proposing a merge to the project owner via the built in "pull request" feature. GitHub has already been coined as being the MySpace for hackers:

Forking on GitHub is like friending on Myspace (or Facebook [...]) inasmuch as this is the point where a line is drawn from one node to another in the social graph.

Naturally, the GitHub project itself is hosted on GitHub, but in a private, non-public viewable repository. While open source projects are hosted for free, private repositories are not. Chris Wanstrath, one of the GitHub developers, confirmed that the plan is to finance the free repository hosting through paid, private repositories:

Yes, that's the plan. In doing client work, developing FamSpam, and even developing GitHub itself, GitHub's private repositories have been a real life saver. Anyone who values both their time and staying on the same page as the rest of their team should get some real value out of it.

Chris Wanstrath shared some information about the inner workings of GitHub with InfoQ:

GitHub is mostly implemented in Rails. The post-commit integration mini-apps we're working on are all written in Merb, we use the Python Pygments for syntax highlighting, and we use Ara T. Howard's Bj plus some Ruby scripts for our queueing system. And, of course, we use the Ruby Grit library to interface with Git.

GitHub already has a quite impressive list of features, along the mandatory repository browser, there's a project Wiki and even a GitHub gem to make working with GitHub from the shell even more comfortable. More features are planned for the future:

A lot of people want a ticketing system, so a simple one is in the works. We're also working on a RubyGems server and some pre-rolled post-commit hooks, as I mentioned. If you can't or just don't want to host a daemon on your own, you can use one of ours.

We're also working on some more features to help companies stay in sync when using Github.

Finally, we're working on an API. We'll be rolling out bits of the read-only stuff real soon now, followed by some awesome 'write' integration. You'll be able to post events to the news feed, send messages, and other cool stuff using the API.
Although no official release date has been set yet, GitHub is expected to officially launch around the end of March (it is online now, but registration is by invitation only). More information can be found on the official GitHub website or the GitHub blog. The list of open source projects hosted at GitHub is also available.

No comments

Watch Thread Reply

Educational Content

Brian Marick on 4 Challenges and 5 Guiding Values of Agile Software Development

Brian Marick takes us through a quick tour of the most important values and challenges to adopting Agile successfully (they aren't the typical challenges and values we hear in the community).

Are You a Software Architect?

The line between development and architecture is tricky. Does it exist at all? Is an ivory tower actually needed? There's a balance in the middle, but how do you move from developer to architect?

Agile – A Way of Life and Pragmatic Use of Authority

The word 'authority' sometimes produces an allergic response in hard-line agilists. Freedom and authority – both are bad if misused and both are good if used in right spirit for a noble cause.

Getting Started with Grails, Second Edition

"Getting Started with Grails" brings you up to speed on this modern web framework. Companies as varied as LinkedIn, Wired, and Taco Bell are all using Grails. Are you ready to get started as well?

Using ITIL V3 as a Foundation for SOA Governance

Those familiar with only ITIL V2 often scoff at the thought that ITIL could serve as a governance framework for SOA. With ITIL V3, the focus of the framework shifted towards service-orientation.

Adrian Colyer on AspectJ, tc Server and dm Server

SpringSource CTO Adrian Colyer discusses AspectJ, SpringSource's dm Server and tc Server products, OSGi and Scrum.

Adam Wiggins on Heroku

Heroku's Adam Wiggins talks about Rails, Background Jobs, Add-Ons, Ruby, and how Heroku manages to work around Ruby's inefficiencies using Erlang and other languages.

SOA as an Architectural Pattern: Best Practices in Software Architecture

For Grady Booch the foundation of a good architecture is patterns, SOA being just one of many patterns. In this Second Life presentation, Booch attempts to bring more clarity on what architecture is.