How to move a non-profit to open-source

How an arrogant email resulted in a large sport federation deciding to switch to open-source software development

Two table tennis bats lying on a table
Photo by Steven Skerritt / Unsplash

It has become a habit for me to work on open source every Sunday. It's free, unpaid labor that can help others. In recent years I have started working on open source for the NTTB, the Dutch table tennis federation.

This all started when NTTB launched a new app. I was incredibly disappointed with the application, and thus, I wrote an email in which I laid out some fundamental problems. The email ended by stating that if they needed some help, they could always ask me. It was an arrogant letter telling them my coding skills were better than theirs. After sending that letter, I was sure I would never hear a reply, maybe a token answer. After all, this is how it usually goes when you complain to a large organization. Imagine my surprise when they replied the next day and asked me when they could talk with me. At this point, I knew that "simply" blowing off some steam was no longer the goal.

A fact about non-profit organizations is that they move incredibly slowly compared to anything else. A company might churn out a new feature once every month. But then again, they pay a lot of money to make that happen: To make money, one must spend it.

But imagine an organization, like a sports federation, is non-profit. In that case, they usually adjust their income to their spending. A new feature might come around once every quarter if things go well. Whenever a new someone joins the team, this is the first thing I warn them about: Don't expect quick rewards.

During our first talk, I met a few technical people and someone from the board, but everything was still closed source. There was also the fact that I was still determining whether or not I wanted to join the team. After all, I had written the mail in a fit of arrogance. Not my classiest move, and thus, I was still looking for an out. Luckily, I had one crucial requirement: All the work should become open-source. And here I got my second surprise because everybody agreed without argument or doubt. The board member agreed instantly, and the other developer said they also desired this. At this point, I knew that I had to take this seriously.

Today I can confidently say that the NTTB, the Dutch table tennis federation, is the first sports federation committed to open source. I actually searched if other organizations were committed to open source. Sure, most sports federations use open source, and some even have specialized software, but that is almost always developed by outside parties. A few sports federations made some of their work open source, but not entire applications.

And thus, it was decided that NTTB is moving to open source.

The daily grind

However, it ain't exactly a pet project. The work I'm doing is still for an organization with paying members. Thus, quality work is needed.

Currently, I'm working on a system for penalties in a tournament. In table tennis, an umpire can give a player a card in three different manners:

  • A yellow card, which is a warning
  • A red card, which disqualifies the offender
  • Both cards simultaneously, which is a warning, and also award the opponent an extra point.

The first two make sense; most competitive sports use those systems, but showing a yellow and a red card sounds more like a second warning that results in a disqualification, such is typical in football. But that isn't the same. A football referee will first show a yellow card and follow it up with a red card. If a football player receives a second yellow card and the referee forgets to show a red one, the player is still in the game. Only after receiving the red card is the player ejected from the game.

Thus, showing both cards simultaneously is a third type of card. For example, field hockey uses a green card to show that a player committed a minor offense and gets a 2-minute suspension.

It might sound minor, but this made me realize that showing a penalty card and committing an offense are separate things. And as I was reading the official ITTF (International Table Tennis Federation), I realized that a referee and an umpire can be distinct entities. That is another rabbit hole I need to figure out.

All of this has a significant impact on the design. Should I record it separately or together? Would a disciplinary committee need to know which offense results in which penalty? What if a penalty is given due to multiple minor offenses that would typically not be penalized?

Open-source community

Another vital aspect of open source is that it must have a community. Anyone can create a public git repository and say the work is open-source. But when you want to deliver sustainable value, you must have an open-source organization that is transparent, welcoming, and willing to reach out to other parties. This is what makes an open-source project genuinely successful.