Pleroma happening 2018-2022
Merry christmas, happy hannuka, happy holidays, and if you have a problem with "happy holidays" then happy shut the fuck up -- AVGN
End of the year, Christmass, all of that - is a good time for reflection. And honestly, I really wanted to do some reflection for a while now, since 2019 or so, to be specific. This period between 2019 and 2023 feels like one giant year. Long time ago I was joking how there's no 2013 and it's just 2012 episode 1 and then 2014 is 2012 episode 2, now this feels like a reality. Hopefully writing all this crap will put an end to this garbage of a quadyear, or at least prime me mentally to start fresh in 2023.
What follows is a very emotional, biased, and most likely incorrect due to BBR (biological bit rot) retelling of last few years. Names and accusations might not be correct, I most likely confuse people (as I certainly fucking always do). Reader's discretion is adviced. Rated R for Retarded. Vocabulary used is less than formal.
Act 1: The take-off
Act 1 Act 1: The shilling
Let's go back all the way to late 2018 or so, at the time, I was jobless - recently quit (formally it was something like quit-fired - i was sick of them, they were sick of me, so we both agreed to stop shitting into each other), and by end of 2018, neck deep in debt since despite me having amassed some savings, they dwindled down over months since I was living alone, paying my bills, had my misfortunes, etc. Somewhere around that time Pleroma got funding from some adult-related enterprise who had their uh contractors exiled from twitter or something and they were looking into making their own platform (with blackjack and hookers, naturally). The whole ordeal was quite unexpected and out of nowhere, too. Till this day, I'm not entirely sure what the fuck all of that was about - shit was happening non-transparently, no announcements were made, and Lain wasn't quite vocal about it. It was not clear to me if I'm supposed to stay quiet about all of this or be vocal, no one was talking about this except maybe Feld, who also did some... questionable stuff, like uh, sponsoring mastodon just so that they put our logo there, further confusing people. I don't even really know who else were paid for this. For myself I can say that I accepted the payment once or twice, and I really hated it, but since I was deep in debt I didn't really have much choice.
Moving into 2019 - I got a new job in another country, moving there, still in debt with with a perspective of finally clearing it. Pleroma sponsoring stuff still goes on. At the time, development was quite turbulent to say the least, and the insane pace of "move fast and break things" was quite annoying, especially since I was running my instance and backend updates broke stuff quite often. It was annoying and I was most likely too harsh with other developers, however this constant breakage in conjunction with shady sponsorship made me... quite paranoid. They said "not a hostile takover", while things kept happening out of nowhere, Feld kept saying something like "I discussed this with lain, this is what happening now" (despite that previously it felt like we had to reach consensus with all devs), or "this is not up to discussion", I kept hearing of new things happening out of nowhere - new frontends and apps developed by who knows who, sometimes paid, sometimes not supposedly, again, in this atmosphere of non-transparancy. Oh, the paid devs have a slack now, and some discussion is going on there, even though slack channel is not advertised anywhere, it's a private thing, because amoeba hired devs don't have the fourth and fifth braincells required to use IRC.
Speaking of out of nowhere things - me becoming a maintainer also came as a surprise - one day I just noticed that I have "maintainer" role on gitlab, huh. No one asked me, no one told me, but given the situation and the fact that pretty much only other active dev in frontend was Shp, I accepted the position by, well, I guess not protesting against it. No one told me what terms and conditions of it were, what my duties are, and yet, despite the fact that I let everyone publicly know that I am moving countries people proceeded to still give me shit for it, and at times outright direspect me and my work. I am literally sitting at my shit tiny dinner desk in a temporary apartment with my PC laying caseless loose components on the floor and Feld gives me lecture how I should be reviewing MRs (by fucking hired keyboards majority of whom either "need a task" every minute or require literal hand-holding) faster, or else I shouldn't be a maintainer.
Act 1 Act 2: MastoAPI
The most piss-boiling incident at the time was the Great MastoAPI Migration - Lain (or someone else) decided that old QvitterAPI is too much to ask of back-end developers, and that we must get rid of it. This idea was floating around for some time, and I started implementing a migration path, so that it would be much easier to develop, test, review all that good stuff. Unfortunately due to me moving countries, I was unable to finish it, but the groundwork and "here, here's how you do it" was put in place. Then suddenly, out of nowhere, with no way to talk about it, migration has to be happening NOW, no time to explain, it's happening now even if you don't like it. Lain's commandeering the migration, assuming direct control or something, and basically - you're powerless.
First of all - the whole idea behind migration is that it's "too hard" for backend developers to maintain two APIs at the same time, I guess they never had to support multiple browsers with their quirks in their life, sure that would require the fabled sixth braincell. I protested since this would pretty much offload all the dirty work to frontend, which was STILL DESPITE SPONSORING understaffed, the hired keyboards were mostly shite, there was one really good one and another one decent, but that's about it. Lain reassured me that it would be "easier" for him to control everything or something and he'll basically "take care of everything". ... ... Then he proceeded to completely ignore my groundwork and decided to make one giant MR that quite literally changes everything, this is an absolute nightmare from QA point of view, and from code review point of view, he kept saying that it's "better for him this way" or something, and largely my protests were ignored. "You want a race, you have yourself a race" thought I having a mental breakdown, and proceed to do my very own MastoAPI migration, that was still granular and easier to review, test, and overall digest - vast majority of things just needed replacement of a endpoint used, but other things eh, not as much. You see - MastoAPI, or Mastodon REST API, is primarily used for one and only one purpose only - to let Mastodon Backend and Mastodon Frontend talk to each other. If something is not in frontend, then it's not in API, and boy we have a lot of things in our frontend (and backend) that's simply not in backend at all. Why do we even have MastoAPI in the first place you might ask? Because of that one secondary purpose the API serves - to let Mastodon Backend communicate with Mastodon Apps, we have it so that you can use your Subway Pooper (spyro edition) with Pleroma, and since the apps (and MastoFE I guess) use it, let's use it for PleromaFE as well.
There were some minor conflicts there because, I guess, I used their tactics of "things happening out of nowhere" against them. They were directing hired devs to Lain's enormous MR (Male Reprodu) while I dettered them from contributing to it, because I assured them it's not going to be merged due to its size, and actual work is still happening in develop
branch. This wasn't in their plans, but I think they still had some contributions to the branch anyway, It's hard to remember because I was working restlessly on the migration, day by day, while still moving countries, while getting familiar with new country, new job, new motherfucking life. In the end, I managed to out-work them. My way won, especially since its modular nature shed light on some inconsistencies and inadequacies in backend implementation of MastoAPI, and the necessity for extensions to keep PleromaFE functional without serious compromises.
To this day, I still don't know if Lain or Feld are upset with me about it. I am however somewhat upset with Lain that he can just fucking disappear, not say anything, supposedly also move countries, and leave his project to almost get ruined, and no one gives him shit for it, while me in same situation - i'm getting my mental health both voluntarily and involuntarily destroyed bit by bit.
Sidenote: random strangers kept DMing me in IRC asking to "join" the "pleroma team", several of them even claimed to be "very interested" in the project, only to disappear shortly after. They were all in for the money, and I diligently redirected them to Feld. This was very annoying.
Act 1 Intermission 1: Chitchat
Another, quite annoying incident was the The Inception of Pleroma Chats. Someone found out that MastoAPI has something they referred to as "conversations API", and they said "hey! why don't they use that, let's make chat UI!". Several very painful months later, a gazillion protests by me, an agreement from shp that implementation sucks, and me guiding the frontend MR with review despite my protests, Pleroma Chats were born.
This whole thing literally came from "hey there's an API, let's use it" and "we made a MVP prototype of a chat UI lets implement that" and "haha mastodon so dumb why aren't they use it" or something.
I don't want to delve deep into it, as it's mostly technical so here's what went wrong:
- Conversations API in mastodon is only used to basically keep track of DM threads
- What is and isn't a "DM thread" is ambigious for the reason below
- Any thread can devolve into DMs subthread since you can reply to a public post with a DM and vice-versa.
- Mastodon still shows DM threads as threads, no chat-like UI there
- The gimmick of chats, that on pleroma you can explicitly address someone without explicitly mentioning them in the post body would spell disaster when different (pleroma, mastodon) implementations are concerned.
So, if you want to blame for chats being shitty - blame whomever came up with this idea. If you want someone to blame for chats not being compatible with mastodon - blame me (and mastodon for not implementing them, but I sure can't). Anyway, this episode was about as mentally devastating as previous one.
Act 2: The turbulence
Act 2 Act 1: Grease begins.
So that whole thing is still going on, things still happen out of nowhere and I lost count and track of them. Soapbox was one of them, and to Alex's credit, it's probably the only thing from that era that really remained. Soapbox was yet another thing I had no idea where it came from, and with my funding-induced paranoia that was still going on, I put it into same trash bin as other soon-to-be-dead projects like ASAP and Kenoma - "yet another porn-sponsored project. At the time PleromaFE was still understaffed, despite the funding, and I grew increasingly paranoid as all of these stillborn frontends and app just got shat out of the void (i'm sick of saying "out of nowhere", really), the porn lord willed them into existence. So I just try to not to think about it and focus on PleromaFE, ocassionally asking people around what they like about the other frontend(s) they used.
As you might imagine, I have no idea when Alex Gleason joined the project, on what circumstances he did, and as you also might imagine - no announcement, no introduction, things just... happening. With this non-transparency and atmosphere of suspicion people start making assumptions. For all I know what might have happened is that he just started contributing to Pleroma backend a lot and lain just gave him the role or whatever, without informing him either. I don't know, I wonder if Lain remembers, or whomever responsible is. I think I saw him on some pleroma VoIP meeting and was like "who's this", much like when I see anyone with unfamilliar nickname anywhere. It doesn't help that he's been active primarily (i should really say "exclusively") in Pleroma backend, which means I never really interacted with him since my "area" so to say is exclusively frontend.
Kind of underwhelming start, I know. At least I know what I don't know.
Act 2 Act 2: Out of fuel
Funding stopped. Surprise - NOT out of nowhere, to their credit they actually announced that some month will be the last one as far as funding goes, after that - darkness, and we're on our own. Fun fact - couple of months before that happened, I thought that I could use a fistful of dollars and asked if I could be on the payroll again - I got denied. "Not in the budget" he said. Previously the very same person said "you're always welcome back" when I said I had my fill and will not be asking for money. Speaking of which, I was still in debt, my paycheck just bought me some time, and I didn't want to give them control over me through money.
As a result of this, we lost several people, including the aforementioned good and decent pleromafe hired contributors, as well as other people who were part of community or became such in the process. This partially includes Lain, who supposedly is still working for the porn baron on god knows what projects, not even Feld knows about that, all I know is up until recently he was pretty much MIA as far as Pleroma is concerned, and then completely MIA as far as internet is concerend. Luckily he came back when I started banging on his figurative door when the crisis happened, and then recently in late 2022 started contributing again (albeit in his typical silent fashion)
Act 2 Act 3: Navigation sytsems failure
As I said before, this non-transparency causes people to assume things, and not like they could validate them as people who are supposed to be in the know aren't in the know either and also make assumptions. I made a lot of assumptions. For starters I assumed that development is discussion-based, I assumed by duties are what I think they are, I assumed my responsibilites are what I think they are. So in outside world it works something like this - the loudest person must be the leader. We have shit communication with outside world, and people assume things. People assume lain is the head honcho and calls the shots, people assumed this about Rin, Feld, sometimes me... And now, ladies and gentlemen - the squeaky wheel gets the glease! (silence)
...
Ok, so people assumed this thing about Alex Gleason too, even other pleroma devs did so. The assumption that people inside made that Lain pretty much left the project in hands of Alex and Feld, and in his typical fashion, didn't tell anyone, with the theme of things happening from the nothingness, it wasn't exactly a delusional assumption. However, there was still a parallel reality happening. You know the mandela effect? When some people think that some event happened while others think it didn't or it was different? Some say those people come from alternate reality, well, so to say, I'm one of such people.
Possibly Schizophrenic Hyperborean nonsense follows
Remember how PleromaFE was pretty much left alone? It sorta created alternate reality, where things are still happening the way they did before funding, we still had discussions about things, agreements, trying to reach consensus et al. And we (and by we I really mean I) aggressively reject any attempts at takeovers (see above about MastoAPI migration). We still discuss changes and try to figure out things beforehand, talk with Shp, Eal, even Lain sometimes. Things are a bit slow, but steady. Now this reality isn't a stand-alone, it's a sub-reality that exists within Outer Pleroma, and depends on it, forcing me to keep an eye out for it as well (as if I don't have enough on my hands already) and also keep on lookout for emergency evacuation plans (so many times Ive thought of making PleromaFE compatible with Mastodon Backend or Misskey...).
Nonsense ends, mostly. Or does it?
So what happening is - Lain is MIA, Feld seems to be supportive of Alex for whatever (g)reasons, and Alex's behavior grows more bold, agressive, dominant with each day. Emboldend by support of his people, his ego grows and his behavior gets worse as he pretty much outright begins insulting other contributors and use other people's work (including mine) to defend his questionable decisions. He's trying to force his way, any critique seems to be met with aggression. People assume alex is in charge (he isn't), there is unrest and people want to fork. Newroma slowly becomes a thing but has a very very shaky start.
Enough is enough, first of all I and community need clarification and answers. Second of all, time to force my reality of consensus and discussion into their hellscape of non-transparency and being lost in void.
Act 2 Act 3: Answers arc
"Holy fucking shit, pleroma is literally falling apart, I gotta do something!" Seeing how folks start to try to start a fork, and prospect of having PleromaFE in the complete fucking void not only losing its parent project (especially since Alex only really cares about Soapbox) but also having to support multiple different versions of backend doesn't look very nice, having to pick a side looks even worse.
So what I did is figuratively started banging on lain's door until he responds, demanding answers, demanding him to talk to people and clear up situation, either confirm that Alex is the new head honcho or confirm the rule of the people or at very least explain the situation. He agreed to have a meeting with us, and so we did: https://tube.ebin.club/w/d1ogdN9ryuupnjxuXB46fd. The plan was to clear up the situation and confirm and deny people's assumptions, so that we can move forward. Lain came, and frankly it was a miracle that he did. I had a backup plan that I also publicly announced (IIRC) that if lain outright doesn't show up, I'm taking over as a formal leader of the project. The outcome, frankly was the best ever possible, and my assumptions that other people's assumptions are wrong was pretty much spot-on, good thing I know that assumptions are a bad thing.
Most important clarifications that we got out of the meetings are that one - no, alex isn't being put into place by Lain as a replacement or anything, and Lain agrees that his behavior is at least less than acceptabble, the other thing is essentially his blessing for community to self-regulate - we don't necessarily need Lain's approval on anything. This essentially allowed us to come back together and restructure in Pleroma, the Newroma fork essentially lost the purpose and the cause, however some disagree and I personally see that only as "no I was supposed to be the leader" tantrum, really, as the talks weren't all that productive, and purpose of that fork is still unclear, at least to me.
Act 2 Intermission 1: Burning pained itch in ample posterior
Alex Gleason got stripped of his "maintainer" role, which essentially what most people in community wanted. No one knew why he was given this role, and he started abusing his power to just force his changes into the codebase like he was the only person around, and to make things worse as I said, he started insulting othe contributors, outright calling names and saying "fuck you". Speaking of which, it got him banned. The ban wasn't exactly legitimized, but there were no protests apart from Alex himself and some people (me) supported this decision. He seems to hold a deep grudge against us, and still butthurt about it since he a) asks Lain to unban him, b) pretty much immideately after the happening wrote a flaming blog post detailing every single thing he could piece together and make a lot of accusations in a typical nutjob conspiracy theorist fashion. Lastly, Alex has failed to provide any concrete defense for himself, all his arguments against accusations were quite literally variations on "i didn't do anything bad".
Act 3: Present Day, heheh... Present Time, ahahaha
Act 3 Intermission 1: Foreword
I know I might be doing same exact thing here - writing an emotional biased blog post, but at least it took me months to collect myself and find time for it, and it took days to write this spiel and I'm not happy about having to write it, but I really want to get this off my mind. And lastly, at least I think, that I'm a bit more self-aware. I am aware that a lot of events written here made me paranoid, warping and twisting my perception, causing me to overreact. I've been also accused of scaring people away because of that, and there is a degree of truth there as well. And as I kept saying - remove me from the project, you can vote me out. If anything I'm tired and I never asked for this, if i'm voted out I will simply continue making MRs to PleromaFE but operating out of fork and relying on other people to merge my MRs upstream.
Act 3 Act 1: Aftermath
So, despite finally getting our answers and having positive outlook into future, the situation still wasn't pleasant. The meteor storm has ceased, but it left everything damaged and almost in ruins. From what was happening a lot of people involved got seriously burned out, including me, who as still hard at work on PleromaFE, and don't forget still having daily life, job and all of that. On the outside, people were still unclear what's going on, some were not convinced that changes are happening, and we still didn't have a new major release for almost year, and technically we still had no community rules, maintainer's duties weren't formalized, and some of our infrastructure fallen into disrepair in meanwhile.
Act 3 Act 2: Picking up the pieces
Even before the latest drama with Alex, things weren't looking good and lack of a major release made people think the project is dead or stagnating, but there was a lot of work happening on frontend side of things and it was sorta holding new release down, but we couldn't release it as is because of massive refactorings and changes happening there at the time. So I started this whole blog thing and had a series of posts detailing what's been going on in frontend development. Hoping that it would give people idea that project's far from being dead, attract more contributors and overall to get early feedback and taste of things to come.
The other things that I've personally done:
- Start weblate server anew from scratch since old one fell into disrepair and its owner was unable/unwilling to properly maintain it.
- Setup two ways people can donate: OpenCollective and Liberapay
- Made pleroma merchandise avilable for purchase (non-profit) on spreadshirt
- Spread the word about pleroma and spin up another instance with much easier name, with intention on it being (semi)-public instead of semi-single-user.
- And of course, keeping up with my maintainer duties as best as I can.
- Written the bulk of Maintainers' Guidelines document detailing how maintainership works.
- Bought a subscription of BrowserStack so that I can test how PleromaFE works on iPhones and Safari
Some things however are mostly lost. In my opinion we lost Lain as a contributor and maintainer, we also lost Ilja who I think got burned out a lot on this whole thing. We also lost Href, Eal, some other major contributors like Shpuld have way reduced activity nowadays. We also gained and lost a contributor Helene, and it's still makes me very very sad, best I can tell she left not just pleroma-dev but fedi in general.
We did get some new major contributors who stuck around however, most notably Tusooa and Sean King, both of whom made me incredibly happy with their work, this progress we had wouldn't be possible without them.
Act 3 Act 3: The future
So, most of those things are over, and there are a lot of upcoming dramas storms to weather, a lot of things left to do.
- Our infrastructure still located in that sever that our previous sponsor gifted us and it's somewhere behind some VPN, not sure what to do with it or if anything could be done about it at all. At least we have OpenCollective so we could use that to finance our infrastructure.
- Domain name (as well as trademarks) belong to Lain, and that's probably fine. Initially I had to host new weblate server under ebin.club subdomain, but now I bought pleroma.dev for such cases, since Lain goes MIA every once in a while now and only he can change DNS records. I'll also need to set it up so that mails from weblate actually come from pleroma.dev
- Code of Conduct Kool is still a work in progress but it's mostly finished.
- Same with Maintainers' Guidelines - mostly finished, needs final touches.
- Our website could do with some updates.
And of course, still gotta keep working on project itself. At least in frontend we mostly resolved our dependencies now, using Vue3, only concern is Vuex which should be replaced by Pinia but for now it will work. We have way better HTML parsing in frontend, flash support, attachments work more uniformly, we have 3-column mode, lists support and announcements. In this busy time I had less than zero time to work on Themes 3.0, so maybe I'll get to it next year, as a "break".
Epilogue
It's been a crazy last couple of years, and for everyone we lost, I really hope you guys come back, or at least stay with us on peaceful terms, that even includes Alex. I also hope Akkoma eventually merges back with us.
I'm exhausted from writing this whole spiel and I hope that you found it at least informational or entertaining. I also hope that this is the last time I have to write something like this.
Happy holidays and see you next year. Time for booze.