Getting Social at Github
Version control is something that developers are going to have to embrace eventually. Whether it is to automate repetitive tasks, as in the case of deploying Rails applications, or because a team of developers needs to collaborate on the same project without fear of overwriting each others work. Eventually the benefits of version control start to outweigh the intimidation involved with learning a new way of doing things.
For me, that decision led me to Subversion, which I still primarily use today. Subversion is a nice piece of software that allow multiple developers to "check out" code from a master repository. Known as a "working copy", each developer can then work their magic and when they are ready, they can "check in" their changes back to the repository. This is a very simplified explanation, but Subversion helps to make sure that there are no conflicts between different developers, and provides a means to resolve those conflicts.
Then, just when I was becoming slightly less stupid with Subversion, along comes Git. Actually, the real story is that Git was around, it just exploded in popularity recently due to sites like Github. But one thing at a time. Git is another version control application that (in my experience) is much easier to use than subversion. I find it easier to create repositories, and a bit easier to get up and running on. Not to mention that it is a lot easier to ignore files using Git and it is with Subversion.
However, Git isn't as universally recognized yet (if that is the right term), and most of us are still straddling both applications. In the Rails community anyway, things are quickly moving towards Git, and Github has a lot to do with it.
What is Github? For lack of a better explanation, it's a social networking site for active developers. Github provides a place where you can create an account and then create Git repositories. So at the very least, you have an online place for your code repository, which is a good thing, but that is just the start. You can choose to make your repositories "public", which means that they can be viewed by others. Then throw in the ability for other developers to "pull" from your repository, make changes (hopefully improvements) and then "push" them back to Github, and you now have a truly collaborative environment for open source projects.
As an example, the image on the left shows the network timeline for work done on the exception_notification plugin for Rails. In addition to allow developers to collaborate, Github integrates a wiki for each repository to allow for documentation, support notices and anything else that someone wants to use.
To get an idea of the impact of Github you just need to take a look at some of the projects that have been moved there recently. The Rails framework is now housed at Github, and as of Rails 2.1 most plugins are beginning to migrate their from their Subversion repositories of old. The MERB project, which is similar to the Rails framework, is also being housed at Github. Not to mention Rubinius, Protoype, Scriptaculous and a whole host of other projects.

Connect with us