One of the (good) things that came out of the IIT Hackfest was me hanging out on the #hackers-india IRC channel. It is wild, swingy and usually fun. Usually.

So yesterday night, ideamonk casually mentioned that he was working on something called pymos. It was a python script that made mosiacs. Now that was something I was totally interested in – I tried making a similar ‘script’ a long time back (in C#), and totally utterly failed, simply because I was so caught up with the part that downloaded pictures from flickr that I didn’t do the part that generated the actual Mosaic. Since ideamonk’s code already generated the mosaics (and since it was in Python), I forked it, and began to work on the to do items.

Note that ideamonk and I don’t know each other (we were apparently sitting next to each other at PyCon India ’09, but that doesn’t count!). We were on the channel, he’s commented on my blog once, and that’s about it. But still, we worked together all night fixing code. I could bore you with details of the work that was done within the next five or so hours (1 AM – 6 AM), but I will just point you to to this commit graph generated by GitHub. There was a flurry of commits, and there should be a tagged version up for download (and on PyPI) soon.

If not for github…

Let us, for a moment, assume that this code was on, say, Google Code instead of GitHub. How could I have contributed?

  1. Checkout the code via SVN
  2. Fix one thing
  3. Send ideamonk a patch file (I can’t commit anything anywhere!)
  4. Wait for him to:
4a. Open up his mail client
              
4ai. Get lost in [proggit][7] (or [FaceBook][8])
              
4b. Grab the patch file
              
4c. Apply patch
              
4d. Test things to make sure I didn’t break things
              
4e. Wonder if the code is good enough to be merged in
              
4f. Commit code with my patch in it
              
4g. Notify me that my patch is in, so i can do an svn up
  1. Go to 2

No code gets committed, simply because step 4 is a huge involvement for ideamonk. Knowing that step 4 is a huge involvement for ideamonk is a huge block for me too. Obviously, he’d rather be coding than dealing with patches. Who wouldn’t? Being a developer > Being a maintainer. One of the reasons I respect maintainers of projects a lot.

Now, how does it work with github?

  1. I fork it (1 click)
  2. Fix one thing
  3. Commit, Push to my repo
  4. If there is something significant in, notify ideamonk to pull from me. Else go to 2.

Much simpler, and note that all four are things I could do myself. Nothing depends on ideamonk. Maintainence works is almost zero. Nobody has keys to the cathedral, since this is not one.

Please put your code on GitHub

It has the least amount of friction for developers looking to contribute, and the least amount of work for you as maintainer. Thanks!