The “Joys” of Web Development

Or, “Implying I do more than install and maintain widely-available server software.”

Some forgotten years ago, I hadn’t even dabbled in Twitter. I reluctantly left MySpace for Facebook, then pre-empted to Google+, then slunk back to FB, then left when they decided to just let politicians lie to the public in exchange for money… And somewhere in there, I was introduced to GNU social. Or maybe it was still StatusNet at the time…

Anyway, it was a smallish “Twitter clone” with a cartoon fandom focus. I joined up eagerly (my exact words being, “I’m on ya, lasagna!”), despite having resisted Twitter for so very long, seeing 140 characters as too short for meaningful communication… But this site had a 1,000 character limit! More room for detail, nuance, elaboration, but still with the quick, chat-like format. It was a pleasant experience, and actually served to reduce my resistance to joining Twitter proper. Which has been a much less pleasant experience, for reasons I’m sure you can find elsewhere.

Enter federation.

I don’t recall when or exactly how it started, but I had noticed some users talking to people I couldn’t see. Users from other websites, conversations like being in the room with someone on a phone call. I had to get in on it. It was cool, especially because our instance itself had started to slow down. Unfortunately, our code base had some custom tweaks, and the user who had done the work had moved on, so as the federation standards changed and servers were updated again and again, we couldn’t update our codebase without basiwere once again alone on the internet.

So that was probably when I, begrudgingly, started leaning on Twitter more. But all the while, in the back-left corner of the third sub-basement of my mind, I knew I wanted my own internet, with Futurama gags! I looked into available federating social media servers. I considered diaspora* for a more “Facebook” experience, waffled between the greater user adoption of Mastodon vs the lower system overhead of Pleroma. I made a couple of throwaway accounts on various servers to get a feel for what I liked from the frontend. Eventually, I made the decision to use Pleroma. At the time of my choice, they supported more federation standards than Mastodon (which changed by install time, but I guess the old standards are just passing on), in addition to the lower overhead – it can run on a Raspberry Pi! Of course, the Pi 4 makes that now officially beefier than the VPS I’m on right now, but I’m getting on a tangent.

This next step – installing the server software – took me two years. I admit, a LOT of that was my fault. It was a learning curve, and things have definitely changed since my old Apache on GoDaddy days! One of the biggest hangups was the fact that the official install instructions and setup uses Nginx rather than Apache. Like I said, I had used Apache before (and had zero Nginx experience), but I didn’t want to complicate things by trying to re-write the install instructions.

I kinda had to, anyway. :,-(

There were just a few moments in the official instructions that were confusingly put, and seemed out of order to me. The purpose behind many of the steps or changes was unclear, and I’m sure absolutely none of this is in any way a surprise to one who has ever worked on a command line. “Copy and paste this command.” Well, it didn’t work. “Copy. And paste. The command!” Still not working; why? What do you want from me? Maybe, if I know the desired end, I could fix this. Just being told, “Nope, wrong!” is . . . not helpful. And I could not find anything clear-cut and useful!

I gave up. I came back. I bought a burner URL. I never used it. I bought another URL. I walked away again. I finally realized that there was just nothing that a web search would bring up, and I just did what I should have done 18+ months ago and asked the IRC channel for help.

I got it working in two days after that.

Biggest problem? Nginx configuration. See, the Pleroma install directions tell you to just keep the generic “pleroma.nginx” configuration file name. You actually need to rename that generic config to match your desired URL, and I couldn’t find that particular step anywhere in the directions. Second biggest problem was that there is a step, just before “Finalize installation,” where they say “Now you can start Pleroma already.” Well, you can start it, but you won’t be able to access it like you expect until you’ve stepped ahead a bit and done the Finalizing. It’s kind of like turning the keys before they’re in the ignition. Or, before the ignition is wired to the car? Neither’s quite apt… meh. Maybe it’s more like starting the car before there’s a gas pedal. Doesn’t matter.

But my most persistent problem was probably when I spent weeks following the wrong distro’s install directions. That was embarrassing, but it was a strange relief when I realized, “I’m not doing it wrong! I’m just doing the wrong thing!” OK, maybe that doesn’t make me look any better.

End story is, I got it working, and I believe in decentralization, so I have further plans for this software, and I may end up revisiting some of the others I’d passed on at the time. Still curious about the diaspora* project.

At any rate, don’t let my experience scare you off of federated social media. You don’t need to make your own instance, single-user or public. There are plenty of open servers for any number of core user bases, all of them able to communicate with the rest, but remaining independent in their operation. And in these times of heightened tension and corporate mistrust, maybe we need to reboot the web, take it back.

But that’s an entirely different rambling.