Saturday, August 29, 2009

Open-source as a self-regulating society

Maybe community open-source projects have social advantages over projects developed by organized work teams.
  • it is usually obvious who is charge because most projects start as an individual effort
  • being a member of the team depends very much on how much work you do
  • because of the above, the person in charge has usually done a lot of the practical work
  • the team members rarely meet so that working relationships are almost exclusively about work, and power games are hard to sustain.
I like Joel's analysis of why programmers don't like politics - half way down his field guide to developers.

Meditating impatience

Is impatience a bad thing?

"I need to be impatient with myself to get work done".

I think this convincing statement is false. Consider that, the times that we have been particularly impatient, have been times when we have found it very hard to work. Without thinking more, we might assume that we are very impatient because we have so much to do. Then roll it round the other way, and ask, what was the cause of all the time we wasted when we could have been working? Think of the times we have had, that were most productive, and worked best, and think of the difference.

In practice, our habits of mind are so overwhelming, that these thoughts are difficult to have.

It may be easier to say this:
  • impatience is a work-style that you may prefer for yourself
  • impatience is destructive of teamwork, and we should make every effort to make sure our own impatience does not affect those we work with
How do we recognize the effects of impatience?
  • lack of productivity
  • blame
This is so, because impatience is the symptom of blame of self. It is natural that impatience in teams leads to blame of others. Blame differs from constructive criticism in that it:
  • is most clearly expressed in private to people other than the target of the criticism
  • concentrates on the working or personal characteristics of the people responsible for the problem, rather than the specifics of the problem
  • is self-sustaining, because blame leads to poor working relationships and low productivity
  • tends to come from the people doing the least practical work on the project
  • is difficult to express coherently in writing (because the content is more emotional than the originators want to believe).
The expression of blame has a characteristic tone. It sounds like a pompous teenager impersonating an adult. There is a good example in this absurd email that started the famous split in the NetBSD project.

Wednesday, August 26, 2009

The three great sins of a open-source programmer

The engine of open-source is enjoyment of work well done. As more people join the project, the enjoyment increases, because we share the pleasure of work well done. If we are lucky, then our society is a happy and ordered place for new members. The written and unwritten rules seem sensible and straightforward. The group members are respectful, helpful and generous. Enthusiastic but ignorant new-comers are treated with indulgent warmth, and irritable or ungenerous emails are dealt with firmly but politely.

I suspect that is the natural history of a successful project.

What happens though, when our society is not yet like that? What do we do? How do our societies deteriorate and why?

I suspect it is because the team has not yet learned to deal with the three great sins of a open-source programmer.
  • laziness
  • impatience
  • hubris
Maybe you have read something like this before: LazinessImpatienceHubris

Laziness is the what happens when we know that someone has worked on this problem before, but we lack the energy to look at what they have done, and we start again. We deprive our fellow programmer of the nectar of shared work Laziness is the dark side of the desire for something efficient and well-made.

Impatience is the output from our distress because of laziness. Impatience is the name of thing that causes problems on mailing lists. You want to use someone's software, but you have not got time to contribute. The software does not work the way you want and you send an irritable email. The small attack makes the society feel just that little bit more tired and less enthusiastic to help you, or each other. Impatience is what we feel when we realize that our problem is hard, but we lack the energy or hope to solve it. Impatience is the atmosphere of a failed desire for productivity.

Hubris is to confidence as vanity is to courage. Hubris is when we get so worried by the possibility of failure, that we start making up a whole new fantasy world where we are succeeding. Of course this happens often, but when we see it, in ourselves or others, we know that there is a large problem, and, unless we are brave, we walk away.

Luckily, there seem to be many brave people in our open-source world. Luckily, it is possible to return to efficiency, productivity, and courage.

What to expect?

I started this blog without being sure what would go in it. I expect that I will update it rarely with thoughts about the problems that we have, and the solutions we have tried.

NIPY is a rather ambitious project to make a new library for functional brain imaging analysis using Python. It's a collaboration between Stanford, Berkeley, MIT and Neurospin (in Paris).