Chris Sainty

A technical blog covering full-stack web development.

twitter | github | stackoverflow

Activity != Quality

So you need a library for doing foo. No problem – you hop over to GitHub and you find FooX and FooY. FooX hasn't had a commit for over a year, it has no open pull requests and generally no activity to be seen. On the other hand FooY had a commit just last week, and there are a bunch of pending pull requests, open issues, and associated activity. Which library are you inclined to choose?

In truth I have not given you enough information about either library for you to make an informed decision but hopefully you will agree with me that most people are going to find FooY more attractive.

The activity bias

I believe as a community we have a serious bias towards activity. If something hasn't been worked on for a while then the project must be dead, bugs probably won't be fixed, and new features won't be added.
Activity is the first impression a library gives.

How many times have you moved on from a library without more than a glance at the last commit date? I know I've done it more than I should.

The dilemma of done

This bias presents a dilemma. What do I do when my library is finished – when I've defined my scope, settled on my API and fixed the bugs? 100s or 1000s of developers have used and are perfectly happy with the library.. what happens to it next?

Option 1: Nothing. It sits there doing its job perfectly well. The months go by, years pass, and eventually this perfectly good piece of software becomes "old". People hold it up against the scrappy new library that is still fixing its bugs, changing its API with each version and they say "I want some of that activity".

Option 2: Tinkering. I get bored and I think "what if it did this". I make change after change, add feature after feature until one day my little library is a behemoth. It tries to solve too many problems and confuses new developers. Then someone comes along and writes a new library, stripping it back to the original core and the cycle repeats.

A call to action

Does this blog post describe you?
If so, then next time you are glancing through a few libraries to find one to try, be aware of your bias. Consider for a moment the "dead" library may actually just be finished. If it is, then it may just be the best choice out there. Take a moment and do the research.