Why I develop open-source scientific software?

In my previous post about scientific software, I argued that it is not in your own personal interest to release scientific code. I argued that it is in society’s interest, but selfishly, you should not do it.

Now, you could accuse me of being a hypocrite (This would be a very modern form of hypocrisy, whereby we behave altruistically while professing to be selfish.) But I don’t think I’m a complete hypocrite.

I started writing open-source code well before I started doing science (when I was in high school) and I initially saw research, to some extent, as a continuation of the same ethos: you do a mix of what is helpful to others and what is interesting to you personally, you share, and you discuss it in frank and open ways (the open source world can be pretty harsh, but it is about the issues).

I once tweeted that the

I believe that the single biggest reason why scientists do not make their code generally available is that they are ashamed of it.

— Luis Pedro Coelho (@luispedrocoelho) August 23, 2012

This was a tweet and it was written in a way targetted to that medium and my twitter persona is often ha ha, only serious.

This led to some more discussion, which @iddux (Iddo Friedberg) captured for posterity on his blog (see also his follow up).

What I did not make clear at the time was that I was also talking about myself.

Releasing code publicly is a commitment mechanism to make myself write better code.

Look at my public code: it is well testedwell documentedrevieweddiscussed.

I wish my private code was always like that, but it is not; it is of lower quality. This is why I try to make as much of my research code public as possible.

  1. When I release new release of the code and in less than 24 hours I get a bug report on something silly, it is more than slightly embarrassing.
  2. The fear of embarrassment is a great motivator.
  3. By releasing code, I write better code.
  4. Therefore, I release code.
Advertisements