InfoQ

News

GitHub - Rails-based Git repository hosting

Posted by Mirko Stocker on Mar 18, 2008

Community
Ruby
Topics
Collaboration ,
Technology ,
Ruby on Rails ,
Open Source
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

Rails in the Large: How Agility Allows Us to Build One Of the World's Biggest Rails Apps

Neal Ford shows what ThoughtWorks learned from scaling Rails development: infrastructure, testing, messaging, optimization, performance.

Stuart Halloway on Clojure and Functional Programming

Stuart Halloway discusses Clojure and functional programing on the JVM in depth, and touches on the uses of a number of other modern JVM languages including JRuby, Groovy, Scala and Haskell.

Orion Henry and Blake Mizerany on Heroku

Orion Henry and Blake Mizerany talk about the technology behind Heroku and the benefits of the new add-on system.

Security for the Services World

Chris Riley presents security issues threatening service based systems, examining security threats, presenting measures to reduce the risks, and mentioning available security frameworks.

Navigating The Rapids:Real-World Lessons in Adopting Agile

This talk investigates technical issues encountered when moving to an Agile process.

Codename "M": Language, Data, and Modeling, Oh My!

Don Box and Amanda Laucher present “M”, a declarative language for building data models, domain models or external DSLs. Don Box's demos show some of M’s features and latest changes of the language.

SOA Manifesto - 4 Months After

It is four months since the SOA manifesto was announced; InfoQ interviewed the original author’s to get insight into the motivations and the process behind the initiative.

Memory Barriers and JVM Concurrency

This article explains the impact memory barriers, or fences, have on the determinism of multi-threaded programs.