I need to get in a quick plug for GitHub. This is my kind of social software. You want to “friend me”? Send me a patch.

Fork me.

I've been wanting to dig into git for some time but I kept putting it off. Alex hooked me up with a GitHub invite last week so I took it as an opportunity to dive in and start migrating my smallish Bazaar branches over to git repos.

First, the tree browsing interface is beautiful and functional: syntax highlighting, link to line number in source file, plain text URLs, etc. I also love how they dump out the README* file for whatever directory you're in with link detection. It’s a small touch but something I always loved in httpd’s mod_autoindex.

The history browsing and diff views are also nicely done. There isn’t a side-by-side view but I've become so accustomed to reading unified diff that I haven’t really missed it.

Where things get really crazy is when you get into the collaboration aspects. You can “fork” any project at any time to create a clone of someone else’s repo. The idea of cloning isn’t all that interesting — its basically at the foundation of git and you don’t need a GitHub account to do it — but what GitHub adds is visible linkage that shows the clone took place. The project owner is notified that his repo has been cloned and can see the forked project on his Network page and the person doing the forking has the clone on their project page.

Forking on GitHub is like friending on Myspace (or Facebook or whatever crazy ass social networking site that is) inasmuch as this is the point where a line is drawn from one node to another in the social graph.

Once you've forked a project and made some changes, you can then send someone (usually the person you forked from) a pull request, asking that they grab your changes and integrate them into their upstream branch. Again, “pull requests” happen every day over email without GitHub but, by sucking those interactions into a web application and recording certain bits and pieces as they transact, GitHub is able to 1.) guide git newbies in using fairly advanced concepts, and 2.) record that the interactions took place, which makes it possible to build entirely new types of tools.

The last thing I wanted to mention is that the folks at GitHub have done a terrific job at keeping things simple. Git is a conceptual beast with tremendous depth. It would be easy to wander down a few dark alleys and make these interfaces really “advanced” and “sophisticated” (see: launchpad.net) but they've somehow abstained. Let’s hope it stays that way.

Oh, I almost forgot… Who wants an invite?

UPDATE: Sorry, folks. Those invites went quick. I'm all out.

This entry has been tagged coding, tools, git, github, webapp, vcs — follow a tag for an archive of related essays, weblog entries, and bookmarks.

Discuss

  1. Here Here. GitHub rocks my world!

    Simon Harris on Tuesday, February 26, 2008 at 09:03 PM #

  2. I would accept an invite – steven.romej at gmail. Great post btw

    Steven Romej on Wednesday, February 27, 2008 at 12:42 AM #

  3. nice overview.

    I can has invite plz :)

    Pradeep on Wednesday, February 27, 2008 at 12:51 AM #

  4. Yay github!

    yesmar on Wednesday, February 27, 2008 at 01:53 AM #

  5. Looks super cool. Invite please! joshua@reverberate.org

    Joshua Haberman on Wednesday, February 27, 2008 at 01:54 AM #

  6. Sounds cool, I'd like an invite

    cstejerean [at] gmail

    Cosmin Stejerean on Wednesday, February 27, 2008 at 01:59 AM #

  7. I'd love an invite: andrei.shindyapin at gmail…

    Andrew S. on Wednesday, February 27, 2008 at 02:04 AM #

  8. Looks like what I've been looking for – creinman A gmail if you could.

    Charles R, on Wednesday, February 27, 2008 at 02:12 AM #

  9. Mm, most excellent. jdknezek at gmail? Most appreciated.

    jdknezek on Wednesday, February 27, 2008 at 02:20 AM #

  10. Looks cool: gates.plusplus@gmail.com Thanks!

    Sharma on Wednesday, February 27, 2008 at 02:40 AM #

  11. I would love to try this out.

    Paul Tötterman on Wednesday, February 27, 2008 at 02:43 AM #

  12. Very cool; just starting using git to push changes to the Arc “wiki.” I signed up for the GitHub beta, but don’t know what kind of response time they have… An invite would be awesome: max_maxwellterry.com

    Maxwell Terry on Wednesday, February 27, 2008 at 02:49 AM #

  13. Invite please! That would be awesome. Signed up for one 2 weeks ago, but havn’t had anything yet.

    Simon (bloodearnest@gmail.com)

    Simon Davy on Wednesday, February 27, 2008 at 02:55 AM #

  14. Yeah, we really need something like this for Mercurial…

    Manuzhai on Wednesday, February 27, 2008 at 03:08 AM #

  15. Thanks Ryan, your a star :)

    Simon Davy on Wednesday, February 27, 2008 at 03:40 AM #

  16. I'll name my next dog after you if you send an invite my way. (s.clay.smith at gmail.com)

    Clay Smith on Wednesday, February 27, 2008 at 04:12 AM #

  17. What about http://gitorious.org which is the same as github without the invitation part.

    Sure the interface is not similar, but you can fork gitorious project from http://gitorious.org/projects/gitorious and show your design skills :)

    Alex on Wednesday, February 27, 2008 at 05:39 AM #

  18. GitHub is fantastic – I've been in for about a week, and I'm loving it so far. One social aspect of it you didn’t mention, though, was the ability to follow other users, which adds their activity to the feed on your account homepage.

    Ben on Wednesday, February 27, 2008 at 06:07 AM #

  19. Alex: I played with Gitorious briefly a few weeks ago but didn’t realize how much it had in common with GitHub for some reason. Did a bunch of features land recently or something? It looked like it was pretty much git repo hosting + a project info page. And tags. The link you left to the gitorious project gives a much better demonstration of features than what I experienced since there’s a bunch of clones and active users on that project.

    Also, the about page does a really good job of describing the aspects of these apps that I find most intriguing:

    Gitorious provides a way of keeping track of these clones easily by:

    • Seeing what they're doing
    • Knowing where they can be found
    • Allowing anyone to contribute without being blessed with “commit bits”
    • Making it easier for maintainers to accept contributions

    The *forge era is over. This is going to get interesting.

    … you can fork gitorious project from http://gitorious.org/projects/gitorious and show your design skills :)

    I might do that, actually. I won’t be hacking on the design (it looks good to me!) but I have some ideas on how content negotiation should be implemented and some others on exposing trees, branches, and diffs via a clean and consistent URL space.

    Maybe I'll take a crack at pull requests.

    Ryan Tomayko on Wednesday, February 27, 2008 at 06:22 AM #

  20. sounds so tempting, I just want to try it. I was crying around 5 minutes ago for the poor integration of git/trac. If you can, please send my an invite for dev_eddie at yahoo

    eddie on Wednesday, February 27, 2008 at 07:25 AM #

  21. If anybody on this list has an invite, I'd like one.

    Issac Kelly on Wednesday, February 27, 2008 at 08:26 AM #

  22. Ooh, yes please!

    Keith Gaughan on Wednesday, February 27, 2008 at 09:06 AM #

  23. If you have any invites left, I would love one.

    dave@davemerwin.com

    Dave

    Dave Merwin on Wednesday, February 27, 2008 at 12:44 PM #

  24. Great blog post! One of the most awesome things about GitHub is the public news feed.

    Chris on Wednesday, February 27, 2008 at 04:04 PM #

  25. How about only sending invites to people who intend to make contributions to your projects? That sounds like a better plan. =)

    (If anyone wants to help out with Bus Scheme or Augment, I'd be happy to send an invite their way. technomancy at google’s mail service.)

    Phil on Thursday, February 28, 2008 at 12:45 PM #

  26. Did a bunch of features land recently or something? It looked like it was pretty much git repo hosting + a project info page. And tags. The link you left to the gitorious project gives a much better demonstration of features than what I experienced since there’s a bunch of clones and active users on that project.

    You've been able to create clones/forks for any project since day 0. It says a lot about the dscm workflow that both github and I got roughly the same idea and launched each others things a few days apart. I am however fully convinced that OSS projects needs something to center around (the “project”) in order to form a good community around itself, that’s the main reason Gitorious doesn’t take the semi-fractured approach Github seems to take, but rather centers the clones around the same goal. Of course, part of that is realising that one size doesn’t fit all, and thanks to the distributed nature of git there’s plenty of room to do things in whatever way you like.

    I might do that, actually. I won’t be hacking on the design (it looks good to me!) but I have some ideas on how content negotiation should [..]

    Can’t wait! ;)

    Maybe I'll take a crack at pull requests.

    I've been having something like that (I'm guessing, haven’t used Github, my inspiration is git-request-pull) cooking in my local repos for a weeks time, I need to wrap that up

    Johan S on Thursday, February 28, 2008 at 03:43 PM #

  27. One more please: vladimir@uberVU.com

    Vladimir on Friday, April 11, 2008 at 03:03 AM #

Leave a comment





(syntax: markdown)