The Power of Open Source

This blog uses Pelican, a python static blog generator. It is open source and all the source code is on github.

An open source success case!

There was an irrating bug (for me), where articles weren't being sorted chronologically. I wanted a recent blog post to show up on my OpenStreetMap category. About 2 hours (on a Sunday evening) after I submitted this issue, it was fixed! I pulled that change into my fork of github, pip installed that, re-ran it, rsynced the files, and my blog was fixed!

Aside: Also fixed some other bugs

I had also encountered a few other little bugs with pelican (here and here). I could work around them. However as a python programmer I was able to dive into the code and fix this myself. I commited fixes for these bugs, and I was using my local fork as my pip target, so I could use this code myself. I was able to quickly tell the original author Alexis Metaireau (via github's pull requests) that there was code that would benefit their project. They quickly included it in their code.

Software keeps getting better at making it easier to make better software

This story shows (a) cases where open source methodology ("release early, release often") has benefits and (b) how software development is getting better, and how it is getting better at making better software.

I'm a firm believer that things you want to see more of should be made quicker to do. If things are easier to do, and require less mental work, then people will do them more. I think the number of times you'll see something done is a product of how important people thing it is, and how easy it is.

Contribution to open source is getting like this. Thanks to github (and the distributed source code methodology), it's easier to contribute code.

How easy it is to contribute to open source now

Here is how I fixed some little pelican bugs:

  • On the github page, I pressed fork. This made the pelican source on my github.
  • On my local machine, I copyied my own git URL, and did a git clone .... The pelican source is now copied onto my machine. This made it really easy to get the source code on my machine. I didn't have to find or download a tarball, or unzip it.
  • In my python virtualenv, I did a pip install ./pelican/. This meant that the pelican source code was 'installed' and I could use the pelican programme without having to think about module paths, or how to import it.
  • I used python print and pdb to figure out how to fix the bug. This is the hardest part, since it's something you need a human being and programmer to do.
  • After fixing it (by pip installing it again and testing that the bug was fixed), I git add ..., git commit ..., git push origin. This put my changes onto github and off my local machine.
  • I went to github and press 'send pull request'. The original author now has to option to easily include these changes.

Here are the things that I didn't have to do (and hence didn't have to think about), in order to fix these little bugs:

  • Make a patch file
  • Find the author's email address, and send them the patch file
  • Figure out how to install this programme so I could test it (pip took care of that)
  • Figure out how to install my hacked version of the software (again pip and virtual env did that)

Software keeps getting better at helping us make software better.

Comments !

blogroll