08 Nov 2012

This is perhaps a slighly unusual post that I was going to give as the first part of a talk (perhaps I will at some point), but the subject matter wasn’t right for the event, so I fleshed it out and put it here. I hope you enjoy it.

50 thousand years ago, give or take, in Africa, there was a sudden explosion of evolutionary development tied to the emergence of our species, Homo Sapiens. It is thought by archaeologists and anthropologists that this is the period we developed a range of characteristics that make us, we believe, unique amongst all species, including language, culture and consciousness.

The development of language in particular, can be closely linked to human’s engaging in complex, high level social interactions. It may be the first time humans demonstrated the ability to use symbolic thought – classification of concrete things into abstractions.

Other symptoms of this change include evidence of finely made tools, bartering and basic economics, jewellery, cooking, burial, music and even art.

This explosion is known as the Upper Palaeolithic Revolution, or the Great Leap Forward, and it forms the basis of all that humans have achieved since, and social interaction, cooperation and altruism (and not killing each other’s babies) are very important aspects of what makes us, us.

Forming groups and working together in cooperation is another aspect that means humans and other animals are able to achieve great feats that are out of reach of the individual.

Ants are a great example of this, and they take it farther than humans ever have. Individually they are minuscule creatures but together they can create incredible structures in the ground that as complex as human cities. I’d like to show you a quick video from Ants – Nature’s Secret Power, a documentary from 2006. In it, we see a team of researchers excavating an abandoned ant megalopolis that they’ve filled with concrete. There results are are absolutely astounding.

Skip to 46:15 for the good stuff. Sorry, I couldn’t get YouTube embed to start at the right time.

Without any centrally organising force or management hierarchy, the ants work together to build something they never could alone, building a subterranean city for the good of the colony, even building rooms for food, storage and nurseries. The level and scale of cooperation can be hard to comprehend.

This kind of behaviour, exhibited by ants and other creatures, is called eusocial; the highest classification of social organisation amongst animal species.

Humans, evolutionarily speaking, have never co-operated at this scale because we are tribal, generally existing in numbers no greater than 150. You’ve probably heard that number before in this context. It’s approximate to Dunbar’s Number, a suggested limit to the number of people with whom you can maintain stable social relationships, generally thought to be between 100 and 230. The truth of this commonly cited ‘fact’ is contested, but I think it’s reasonably true.

Anecdotally, I find it hard to manage following more than 200 people on Twitter. How about you?

However, internet social networks raise interesting questions about human interaction, co-operation and collaboration. Suddenly we can be in simultaneous communication with vast numbers of people from well outside what would have been considered our ‘tribe’ just 10,000 years ago.

Undoubtedly, living amongst ever larger populations in ever expanding cities has put strains on our brains that are evolved for much, much smaller groups. And on the internet we have access to the internet-enabled population of the world, a number well over 2 billion.

As humans, we simply cannot work together on the same scale as ants. We are too complex. We have emotions, desires, dreams and, in general, an aversion to hard work. But the magic of the web is that we can work together in smaller groups, distributed across the world, to build things that have a global impact.

As builders of things on and for the web, we are uniquely position to do exactly this. By working with others, thousands of miles away, who you may never meet, we can collaborate on things that can have a truly global impact.

One of the best ways to do so is to contribute to an open source project.

If you’ve never done it before, or have only put your own projects on Github, getting started is pretty easy. There are many tutorials out there on the specifics of using git and Github, but I’d like to focus on the impact you can have very quickly.

One of the best ways to jump into a project is to fix a bug. All big projects (and, because of Github, most smaller projects) have a bug or issue tracker. This is the first thing to go to if you’d like work on improving an open source project. Browse through the issues and find something you think you can have a go at, and just jump in. When you’ve fixed it, submit your fix back to the maintainers of the project and they’ll give you feedback or merge it in.

Suddenly, you’re a contributor to an open-source project, and can immediately expect a 50% pay rise.

(Your results may vary.)

This may seem intimidating, and you may think that there’s no way you can have an impact on a project, particularly a big one. I struggle with this too, so to show you how little you have to do I took at look at a few of the most popular projects on Github and compared the number of bugs reported to the number of contributors with three or more fixes (specifically, commits) in the project.

The idea is that is doesn’t take much to have a significant impact on a project relative to the number of users, because there aren’t many people with three or more commits in most projects and the issue count is representative of the number of users of a project who care about making it better.

Three commits isn’t much; it’s roughly comparable to three issues. In large projects, there are a lot of issues.

I looked at jQuery, Bootstrap, the HTML5 Boilerplate, Backbone, Node, Express and jQuery UI. I would guess that you’ve used at least one of those.

Here’s the raw results:

Project Contributors (3+ commits) Issues Ratio
Mean: 42 Mean: 1.29%
jquery 49 12800 0.38%
bootstrap 34 5664 0.60%
h5bp 31 1240 2.50%
backbone 33 1770 1.86%
node 100+ 4199 2.38%
express 12 1390 0.86%
jquery-ui 36 8750 0.41%

Numbers correct a few days before going to… screen?

The number on the right, the ratio, shows that, on average, about 1.3% of users who cared enough about a project actually spent time contributing. Think how many actual users there are of jQuery. If I had been comparing contributors to users, the ratio would have been tiny.

My point here is that it really doesn’t take much to make an impact on something a big like jQuery; even less to affect something small.

It might not be best to jump straight into a big project, but I would never discourage anyone. My suggestion would be to pick something small and work up. You can learn alot at that scale too.

And consider this: have a look around for a small or brand new project from someone you know, and try it out. Find bugs and submit them back. Share the project with others. They will really appreciate it.

Just so you know, if you did that for one of my projects, it would make my week.

The takaway is that if there’s an open source tool, library or project that you use every day and you think could be better, go make it so.

Humans cannot work together on the same scale as ants do, but in smaller groups we can be highly effective in building things that have a much wider impact, the outcome of which is greater than the sum of the parts.

Code, tools and projects that anyone and everyone with internet access can contribute to is one of the greatest things humans have done with the internet, and it’s still very possible to have an impact.

You can, right now, go and make a change to something that potentially millions of other people use every day.