I’ve been sitting on this decision for a long time. It’s not easy to abandon something I have poured a lot of thought, care, time, and effort into. It’s almost like quitting a job… except I never got paid for the job.
Open source was, is, and will continue to be the gateway for my entire skillset. Without it, I don’t think I would have ever learned how write software, let alone ever have become a software developer.
Years ago, before React, Angular, Vue, all of the great frameworks that we’re currently using, we (maybe just me?) obsessed over templating engines. Some were good, some were bad, and some were Jinja. I absolutely loved Jinja. It’s flexibility, composition, and inheritance made it amazing for building out complex web sites.
Maybe more correct, I fell in love with the PHP version of Jinja, Twig. At the time, I was working for a small company with a massive PHP website–a massive spaghetti-code PHP website. SQL queries were embedded in the top of PHP pages, security holes, and every bad practice you could imagine existed in its codebase. There wasn’t a single hint that a skilled “frontend developer” had ever worked there. (Fun side note: one did for a hot minute before I joined. Apparently they rage-quit within a month because of how bad everything was.)
We went full-gas implementing an MVC for our PHP website. Fixing the security holes, getting those SQL queries shored up, and most importantly (to me) setting up a reusable templating system with Twig. I loved it. The template engine was easy to learn, extend, reuse, and teach.
Then I got more and more into node.js and I wanted a project to help me learn more. I noticed there wasn’t a good templating engine with the features that Twig and Jinja offered. So in came Swig. Initially it was nearly compatible with Twig. It actually took off quite a bit.
It had nearly 100% code coverage, was used by quite a few real companies selling real products. I felt like I was making it as an open source developer.
Except I wasn’t. Other than Swig’s own documentation, I never actually got to use Swig for anything. It was my favorite thing I’d created, and I never got to enjoy it.
But that’s not why I abandoned it.
I abandoned it because I wasn’t able to create a healthy community around it. It felt like every notification I got from Github was someone filing an issue or requesting another feature. But barely single pull request was ever there. I tried for a time to keep up fixing and implementing to keep the issues clear. But it became too much. I tried to help others do it themselves, but I would get silence in return. It was exhausting and unrewarding.
With a heavy heart, I opened an issue looking for maintainers. I updated the README to point to it. I left it be for a few months and no one stepped up.
So I closed the issues, stopped accepting any PRs, and marked the repository as archived and unmaintained.
People were unhappy, to say the least. Some were mad directly at me. How could I do this?
And I’ve seen a few posts, polls, and discussions lately about open source maintainers and long-term maintenance and viability. A good number of people have rational responses, but there are still some that try to argue that as an open source maintainer, it is your duty to continue maintaining what you’ve written. For free. Your time, your effort, your life.
And therein lies the point of this post:
I’m afraid of the backlash. I shouldn’t be, I know that. And I know that there’s a silent majority that understand and will just go on with their lives. But I also know that it’s disheartening when there’s something that you use and rely on that suddenly looks like it’s going to disappear.
Anyway, that’s my little moment of vulnerability. This little post has taken me almost an entire day to write. I haven’t even scratched the surface of my fears around asking for help and relinquishing control of a project. But know that I have it–and there’s a lot of it.
So why am I writing all of this? Well, because I just don’t have the time right now–and haven’t for most of this year–and doubt I will magically create more hours in the day any time soon. And I don’t want to screw up, disappoint, and lose trust like I did last time.
I’m going through my open source repositories and deciding which need maintainers. Not just contributors, but people able to admin the repository and publish to NPM as well.
This time around, I really don’t want to just shut anything down, archive it, and tell people to fork it themselves. I’d like to see what I’ve written continue to thrive, become better, and be useful tools.
First up, Normalizr. I haven’t been active with Normalizr for years. It’s not a tool I’ve needed to reach for and I believe it’s pretty stable. I do fear, however, that I may be a little disconnected from the needs of the actual users.