December 04, 2016

Exercism Track Health Check & New Maintainers

We recently used Sarah Sharp's FOSS Heartbeat project to figure out how well we're keeping up with the work in the various Exercism language tracks. If you want to take a look at the Exercism heartbeat data, I've published it to

We categorized tracks roughly into five categories:
  • ​Tracks that are Maintained have at least 3 active maintainers who are responding to issues, reviewing pull requests, and doing the various things that maintainers do to keep an Exercism language track humming along.
  • Tracks that are At Risk have active maintainers, but if one of those maintainers should go on vacation, or have a baby, or any other thing that takes them away from the project for a while, then the track is in trouble.
  • Tracks that are Endangered have one active maintainer, or they might have two or more maintainers who occasionally drop in and keep an eye on things. This is a track that is seemingly doing alright, but it wouldn't take much for the track to suddenly be without any maintainers at all. Also, the risk of maintainer burnout on an Endangered track is much higher than on tracks that have more than one active maintainer.
  • Tracks that are Orphaned are tracks that are probably not doing well. I check in on them regularly and review pull requests, but I often don't know the language in question, so those reviews are pretty cursory. Also I don't have a system in place to follow up and and follow through. If I ask for changes on a pull request, I probably won't come back and check that those changes were made until months later.
  • Tracks that are Inactive are tracks that someone asked for, but nobody has contributed to yet. These have some of the same problems as an orphaned track, except that it's not really dire in that if nobody is contributing then it doesn't matter if I don't check in very often.
The goal, of course, is to have at least three active maintainers for every single language track. This way we could put some procedures into place to mentor new contributors, nominate new maintainers, and to roll off the project without any sort of guilt when you no longer want to maintain a project.

Related to this, we've been having an interesting discussion in exercism/discussions#105 about what to put into the email that we send to people when inviting them to be a maintainer on a track. We've been winging it for so long, and it's really nice to start getting some more structure in place.

As a result of this health check, we've tapped a number of new maintainers.
  • On the Go track, Ferhat Elmas is joining Peter Tseng and myself as maintainers. Even though that makes three, the track is still considered at risk, because I'm discounting my own maintainership here. I've got my eyes on too many pies, so the risk that I'll not be responsive for weeks at a time is pretty high.
  • In JavaStuart Kent joins John RyanEmil Sit, and Matthew Morgan. This might be the only track where an already-maintained track just got even more maintained.
  • On the Scala track we've added abo64 and Erik Schierboom as maintainers. Ric Emery was on his own in the Scala track, so this brings us from endangered to maintained in Scala.
  • The JavaScript track now has Iain Reddick as a maintainer in addition to Rubén Chavarría and Matthew Morgan, bringing us from at risk to maintained.
  • We've also added abo64 to the Haskell track, joining Peter Tseng and rbasso. This means that Haskell is now also maintained.
  • In both C# and F#, Rob Keim is joining Erik Schierboom and Jon Wood as a maintainer, upgrading those tracks' status to maintained.
  • On the Crystal track Max Helmetag is now joined by Bryan Mulvihill. We've also invited Isaac Sloan to the party. Until Isaac joins, the Crystal track is categorized as at risk. That's still better than endangered.
  • In Clojure we've added Matthaus Owens as maintainer. There hasn't been a whole lot of activity in the Clojure track, so it was a bit tricky to determine it's status. We think it might be at risk.
  • In the two Perl tracks, Perl 5 and Perl 6, we've added Daniel Mita and Victor Goff. Both tracks were orphaned, so even being at risk is infinitely better.
  • Finally, PowerShell has gone from orphaned to having the attention of Spencer Owen. That's still endangered, but a long sight better than orphaned.
This is a huge occasion to celebrate—and if you come across them on Twitter or on GitHub or in real life, please thank them for their contributions and for volunteering their time.

That goes for all the track maintainers on Exercism, actually. This project would have keeled over long ago if it weren't for them.

If you want to get involved in an Exercism track, we've got some suggestions for how to do that in the aptly named How to Get Involved in an Exercism Track article/document. If you've never been involved in an open source project before, don't let that stop you. If you want some real-time help, catch us in the dev chat room.