node-sqlite3 - I simply can not do it alone.

Feb 29, 2020

Introduction

I’ve split this blog post in two parts:

  • The emotional: my personal experience
  • The rational: what do we need

If I only posted the rational part, then I don’t think I would get the help I need to achieve what has to be done.

My personal experience

Someone once told me that I have to learn to say “no” more often. I am often too willing to say “yes”. Well today I’m saying no, I won’t do alone and I won’t allow myself to feel bad for saying it.

When someone asks for help, I always assume it is their last resort. If they could have done it alone, they would have. That’s why I tend to say “yes” way more often than is healthy for me.

I accepted this position because I need node-sqlite3 to be doing well, so that another project that I am working is also able to do well. You are only as weak as the things you depend on. That’s true for anything in life, not just programming. No, I’m not doing this to better the world for other people around me because I’m such a “nice person”. Fuck that. I’m doing this because I need it to stay alive and well maintained. My motivation for keeping it alive has always been a selfish need and I’m not ashamed to tell the world that.

Some people have convinced themselves that they are not doing open source for selfish reasons. Well, I disagree. The open source experience, or just helping other people in general, is very rewarding to you. But in the end, be honest with yourself, you’re still doing it for a selfish reason: “You personally feel better for having helped other people”. There is an endless stream of people who need help. I need help but I don’t want anyone to just help me because they personally feel better for doing a good act. I need the people who help out to be doing it for their own selfish reasons because I know that it will be better for the project in the long run.

All the hippy do-good bullshit about open source, it’s not the whole truth. If you honestly believe that open source works because people are kind and just want to make software to help others then you are fucking stupid. Write code because you need it, sharing it afterwards so others can use it, that’s just a nice benefit on the side like some salad. I will not leave, I can not leave. I will not abandon but I will not keep these frustrations to myself either. If you depend on this package then keep reading and perhaps it’s time you step up too.

Know your set of responsibilities. A set that you’re capable to bear and don’t take on any more. My responsibility to node-sqlite3 is to keep it alive and maintain it. To maintain an environment where growth is feasible, but I am not the one responsible for that growth. I only need node-sqlite3 to survive but what I would really want, is for it to thrive.

I appreciate the random PRs with improvements, honestly, it brings me a lot of joy to see them. But they are quite sporadic, people come and go. That’s not how open source software survives though. What node-sqlite3 needs is a few people who are dedicated to it. Ideally because they depend on it.

I have a university degree to finish, a master thesis to write, another project that actually generates an income for the effort I do. Doing things that I feel like I need to do, it brings me a lot of joy in life. It’s one of the reason I wake up with a big ass smile on my face in the mornings. I need the time to have meaningful relationships & bring joy to my friends and family. When I feel like I’m failing at those things, I become rather unhappy.

node-sqlite3 is one of the things I’ve been saving time on. It makes me a bit unhappy to fail at that, because it deserves better. I simply don’t have the time to give it what it deserves though, so I’m putting it out there in the hope that the right people will step up.

What do we need to do?

The plan is quite simple & straight forward. It doesn’t need a lot of explanation.

PR Review: should not be the job of a single person. I will not be merging any PR without someone else taking a look at it as well. Who? Critical thinkers with an eye for details & good at coming up with worst case scenarios.

Build system & CI: keep node-sqlite3 alive & able to grow. Maintenance because there is nothing worse than submitting a PR and random CI failures blocking it. Who? This is what I’ve been doing for the past few years and it’s a workload I’m comfortable with.

Benchmarks & performance analysis: there are major performance improvements to be made. We need proper benchmarks & flamecharts to analyse which areas have to be improved upon. Once the culprits have narrowed down, let’s fix them. Who? Someone who enjoys pushing the limits of optimization.

Issue management & questions: there are more than 280 issues open. Often people with just simple questions or small mistakes in their own code. Who? A nice and kind person with a lot of patience.

If you want to help, all the code is public on GitHub. If you don’t know where to start or unsure whether you are capable to contribute, send an email to kewde@particl.io Let’s get to work.