If you don't actually want to read this whole post (no shame at all) the tl;dr is that I'm going to try using a GitHub project to organize and hold myself accountable for open source maintenance.
Mental health is a weird thing, sometimes.
Like, oh I don't know, everyone, I've struggled over the past couple of years. One thing that has fallen by the wayside has been open source maintenance. (I think my GitHub profile still has a status I set in March 2020 about not committing to much open source work.) For a long time, the very last thing I wanted to do was think about code outside of work.
But in the meantime, a lot of things have changed. (We are still piling on collective trauma after collective trauma. That hasn't.) I'm in a different kind of role (warning: linkedin, I never wrote a blog post about this) at work, which has allowed me a lot more capacity to dig into, well, myself. I've shifted a lot of my focus in therapy, started and changed meds, have tried to invest in me-outside-of-work in a way I never really have before, and even took some time off (I am eternally grateful for Dave and the leadership at Policygenius for supporting me in doing that) to try to put myself on a more solid mental foundation.
All of that internal work is murky and messy and complicated. I like to think these investments have put me on an ultimately better path, but it certainly hasn't been a fun one all of the time. Especially recently.
And so, recently, I have found a certain comfort in code, again. A calmness in holding technical systems in my head.
To be totally honest, I was a bad maintainer well before the pandemic started. Part of it was my work role—I was a manager and then director for a long time—leaving me drained. Part of it was that my open source projects are nearly all Python and for Django, and I haven't worked in Python day-to-day in 5 or 6 years, or in Django for longer than that. Some of it is guilt, like the shame spiral of not answering an email that only gets worse over time. And some of it is focus, which has been particularly difficult this year. (I intended to dig into this almost 4 hours ago, but I did find a couple of nice floor lamp options for a reading spot!)
But I also don't want to do some giant, unsustainable burst of open source activity and then wait another 4 years to do it again. This work is still important to me, these projects are still important to me, and even though I'm not a particularly active member lately, these communities are still important to me.
So, I'm going to follow a spark of inspiration from Jeff, and create something of a roadmap for myself—and for you to follow along. (Except, I live in NYC, and have happily not owned a car in over a decade, so, a Subway Map, I guess?)
- Make sure the active repositories have decent CI and branch protection rules.
- Drop Python 2 support from everything.
- Test against the most recent Python 3 versions (even if it's failing).
- Test against modern Django (even if it's failing) for the Django-based projects.
- Assess the open issues and PRs and decide what goes into the next major release.
After that, I'll probably try to work through those releases in some order. Probably smallest-first to get something shipped.
I don't know exactly how long this will take across the 4 big projects (pystatsd, django-adminplus, django-jsonview, and django-ratelimit). I want to make sure I'm setting myself up to be more consistent going forward. I think organizing this in one open place will help.