Two years in FRRouting
Since the beginning of my contribution to FRRouting, I raised myself to the top 15 contributors (that’s a huge win for me personally):
% git shortlog --summary --numbered | head -n15 4713 Donald Sharp 1712 Quentin Young 1674 David Lamparter 1108 Renato Westphal 791 paul 545 Philippe Guibert 522 Lou Berger 518 Russ White 464 Paul Jakma 446 Rafael Zalamena 409 Mark Stapp 388 Christian Franke 387 Daniel Walton 384 Martin Winter 365 Donatas Abraitis
Now I feel that I can read the code, I can find the root causes faster, I can even review others’ code, not that dumb and green as was 2 years ago.
When I started digging into FRRouting (because it was picked by Cumulus Networks) I solved old issues (3-4 years old), there were really lots of them. I managed to solve quite a lot, more to go still, but it’s never-ending for a huge and fast-moving project. Of course, I’m not referring github.com/ansible/ansible, which is I would say brain dead.
What I do now? I participate in the development process more and more. Mostly I contribute to BGP protocol (my favorite one), packaging, and testing environments. Sometimes in other areas (don’t have much experience and knowledge yet of other protocols).
Overall my commits during two years (including merge commits of other contributors):
% git shortlog --summary --numbered --author='Donatas Abraitis' 365 Donatas Abraitis
Commits owned by me:
% git shortlog --summary --numbered --no-merges --author='Donatas Abraitis' 204 Donatas Abraitis
Doing the math one commit every third day. For some people, I know that would be like a full-time job. Comparing with my regular work, two of the most active repositories I contribute are:
% git shortlog --summary --numbered --no-merges --since="2 years ago" --author='Donatas Abraitis' 1148 Donatas Abraitis % git shortlog --summary --numbered --no-merges --since="2 years ago" --author='Donatas Abraitis' 355 Donatas Abraitis
That sounds like a full-time vs. a part-time job.
I absolutely do not regret that I spent plenty of my free time contributing to FRRouting because that helped me grow as a person and professionally. Also, I started understanding lots of things about how huge open-source projects work, how the deployments run, communication, rules. Third home.
I see that with more time you get more trust from the community, you get valued. At the beginning, I thought I’m very annoying and angry about reviewing others’ code, but it seems not, people value that.
We just can’t push the bad code, which does not keep requirements, no documentation updates, and testing. That’s not a private project which is used by 10 people (what is usually seen in most companies). There is no excuse to push the bad or untested code.
Basically, we are trying to keep requirements like Linux kernel does: checkpatch.pl, clang-formatter, etc.
I remember one day I was tackling a dnsmasq issue at Hostinger and wanna check how caching is implemented in dnsmasq because the performance comparing to tinydns is really significant (tinydns 10x faster).
I pulled the source code to dig into the problem I was facing (not the scope of this blog post). Guess what was my first words (direct). “Abandoned university bachelor’s code.” Yes, that’s the very very notable difference when you look at the code which is community-driven and which is just another one more project.
How could it be better when you commit and even more maintain the world-class project which is used by such big players like Microsoft, Amazon, RedHat, VMWare, Cumulus Networks, etc.? Wait, Cumulus Networks acquired by NVIDIA, that complicates things even more :)
My kids sometimes ask me, why do you work all the time? Well, I answer honestly that I’m not working, I’m learning. It’s my hobby, the same as you watching “Nastya”, “Roma and Diana”, “AcroYoga”, etc., riding a bike.
Sometimes doing that at weekends, usually when I have nothing else planned to do. Don’t expect you doing that.
I always think about leaving the project, but it’s hard, it’s like a third family, where you have an amazing community, good practices, super-hero developers, you just learn, you can’t leave your home :)
This is not the same as a regular job, you don’t get money. But you kinda drive a project which is brilliant. Which is emotionally awesome.
To sum up, being maintainer doesn’t mean you have to be pro-level in everything. I formed my opinion that it’s enough to be active, responsive, willing to help, learn a lot, dig very deep into the protocols, and of course going wild reading RFCs.