GitHub - Rails-based Git repository hosting
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.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.
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.