My Contribution Conundrum

I took the deep dive into the Fediverse last year when I decided to bite off the Diaspora API development task with Frank Rousseau. It was a great experience and I had hoped to do a lot more Diaspora work. With a lot of the ActivityPub discussions and there being some really good questions about how that should work I had embarked on an experiment to see what a merged Fediverse Social Media experience would feel like. Friendica has tie-ins to Diaspora, ActivityPub, and many others. It was a great candidate for it. I am way behind on doing my write up but I have my notes. That’s for another post. This post is about a conundrum I’m facing with respect to my open source/Fediverse contribution conundrum. That conundrum is: I don’t know which project(s) I want to focus on any longer.

I’ve been contributing to open source for many years now. That’s been across several niche type projects. I always chose those projects based on the fact that I was a regular user of them. While it would be great to say that a project should be chosen for its merits alone it is the fact that I am personally affected by its continued forward progress that became a rubber meets the road motivator. When I started working in the Fediverse and wanted to place focus there I chose the platform that I was using on a daily basis: Diaspora. No, I had never touched Ruby code. I had no desire to ever touch Ruby code even. I would have prefered a Kotlin project. But it still was the one that made the most sense. So I spent a good month coming up to speed on Ruby and the code base and got to work. The problem is that I no longer use Diaspora at all.

My early interaction with the Fediverse was a combination of a Friendica account, a HubZilla account, and a Diaspora account. The only workflow that I really liked and where I had a sufficient critical mass of content to bring me back regularly was Diaspora. When I began this Fediverse Fusion experiment I selected Friendica because it tied in everywhere but I had assumed that I would still find the UI too cumbersome and claustrophobic. The truth is that I did. The truth is that it needs a lot of work. However just as I settled for compromises on any platform I’ve used I learned to settle with them on Friendica as well. The compromises are far less than sticking with the Diaspora-only world where I have to manually go through the rest of the Fediverse one platform at a time though. So now my daily Fediverse experience is through one place, Friendica, and I really like it. The warts are still there and smack me in the face every day, so I decided to start trying to contribute to the project since that is my daily use case.

Contributing to Friendica should be pretty straight forward except it’s written on the LAMP stack. The PHP part of that is what is a bit of a blocker because I haven’t done PHP for almost twenty years and I didn’t do that much of it before either. No problem, I’ll just learn modern PHP like I did with Ruby. While modern PHP has come a long way it still has some warts. The more I dove into the code base and the tech debt the more things I saw to work on but also the more daunting the whole thing seemed to be. The good news is that there seems to be a lot of active work around that by several contributors. However unlike with the Diaspora bootstrapping process I’m finding overcoming the initial inertia more demotivating rather than motivating. Part of that are some things intrinsic to PHP. I’m used to having much more isolated per-project build/test/run environments on my development machine. This doesn’t seem to be how that works. I’m used to being able to seamlessly attach debuggers to servers. Again, there is technically infrastructure for that but it feels far more hackish than it was even for Ruby, which was very hackish compared to JVM and .NET systems.

What that inertia has turned into is procrastination rather than motivation. As much as I want to contribute to open source I’ve been blocked because I’m not finding the concept of working on this new code base drawing me. Perhaps it’s coming at a general lull in interest in local minimum of interest in open source rather than it being a blocker in and of itself. I do know that when I sit down to say “Let’s work on some code today” and the first project that is facing me is Friendica I immediately decide to work on something other than writing software. That’s lead to a one month “writers block” which I’m now coming out of.

So there’s my conundrum and I don’t know which path I’m going to take out of it. I want to contribute to open source but it needs to be a project I’m excited to work on generally and will use regularly. The niche ones of my former professional life I’m still involved with at a low level but I don’t have an immediate use of them so I’m tending to think focusing tremendous effort there is probably not the first option (although it is a strong candidate right now). As much as I liked working with on Diaspora I can’t see using that system on a regular basis again because of it’s being siloed out from the rest of the Fediverse due to lack of ActivityPub integration and no interest by the core team to ever integrate it. Friendica is my daily Fediverse portal and I see lots of places I could contribute to but between the nature of PHP systems and the inertia of working through the ramp up to and helping with the code base I’m being demotivated to write code entirely. That’s counter-productive obviously. More importantly in order for Friendica to be more approachable to a broader audience it needs a lot of tweaking and it’s work I thought I’d be interested in doing but it’s just a giant boulder I’m not mentally getting around. I guess the worst case scenario will be pulling the “run home momma” play of going back to my niche projects. Maybe another open source project will strike my fancy. Either way I’m not going to stop contributing but I just don’t know my path forward yet.