Rafal Wilinski is X-Team's Serverless expert. He's also a fervent open-source software (OSS) contributor. His Express Status Monitor project has more than 2,800 stars on GitHub. I asked Rafal how this project came into being and what some of his biggest lessons were developing it.
Hi Rafal! Thank you for taking the time. Let me start by asking how you would explain your project to someone who has little technical knowledge?
Express Status Monitor is a plugin to Node-based servers to monitor and measure performance without any third party services or other servers. It simply adds a web page to your server, which tells how well it's performing.
I created it because I was missing something like this. I made it mostly for myself, because I didn’t want to pay and I wanted to have everything in one place. But I realised it might be beneficial for others too, so I posted it on Hacker News and Reddit. It blew up. Now it's gaining followers simply because it has a few thousand stars on GitHub and people are curious. The snowball effect.
And how much time did it take to create and maintain?
I created it under 8 hours and I’ve spent less than 40 hours developing it to its current stage. But I wasn’t alone. During development, many other people contributed to the project too.
That's fast! How did the open source community help?
In the beginning, many people wanted to help. They even totally changed project structure at one point. After a month, I couldn’t find myself in the codebase 😆. One of the contributors, Mattiaere, contributed most of the features (at some point even more than me).
Eventually, Mattiaere and I started to talk and we even decided on the future of the project together. After a few chats, we decided to meet at ServerlessConf 2016 in London!
That's cool! Was it the first time you met an OS contributor who'd been helping with one of your projects?
Yep, and it was a great experience. It might sound cliche, but that was when I really understood the power of OSS. I realised that this person, contributing some code, is actually a really nice guy. We hung out during the conference and afterward to discuss the project.
What would you say was the most difficult part of the project? Your biggest learning?
Not engineering, but managing the direction of the project, as well as handling issues and user expectations.
I bet. As one person vs many, how do you keep control over your project like that?
Well, I was in a period of my life where I had so much stuff to do that I handed over control of the project to Mattiaere. For a month, I didn't actively review PRs or merge them. He did that instead. Usually, I'm the only person with write permissions to the master branch, so I have the power to decide what would be merged or not.
Mostly, I use the community to validate my own ideas. If they say it's a good idea, I go for it. Of course, the community frequently comes up with their own feature requests and sometimes even whole implementations too. So you really need to know where and when to say “no” and reject some additions.
A lesson that I'm sure will be helpful for future OS projects as well. Thank you for your time & best of luck with new projects!