Digging through Pixelfed's broken account migration (and why dansup is a huge prick)
Update (10 Feb 2025): I only wanted to add some screenshots and correct some typos, bad language and a factual error (again, I'm not a programmer and know little to nothing about PHP in particular) but just a few hours ago a long-time pixelfed.social user got banned for highlighting that Pixelfed suffers from many open issues persisting for years. If my account should be gone without me posting that I deleted it myself, you may take a guess what possibly could be the cause of this.
This also was written before becoming aware of dansup's announcement claiming that account migration has been fixed. You can check the commits to confirm that nothing but mostly Spanish localization fixes were committed around the time Dan posted this.
Keeping the mandatory-by-unwritten-rules-about-blogging introduction as short as possible, let's just kick this off by my failed attempt at getting most of my stuff, particularly my post, off pixelfed.social after having learned more about dansup and why he's a server admin AND dev no one should trust for as long as his behavior remains unpredictable.
I, not even a coder but somewhat familiar with system administration, digged through the project's GitHub repository and not only did I discover it's lacking features but also strange configs and a single commit that is bordering on being intentionally misleading. Account migration in particular thus is broken by design.
There's been an open issue since January, 2024 which mentions the same issue I'm facing. Since no one capable of coding – and especially not Dan who hasn't even responded to it – has taken a proper look at the code handling account migrations, I tried to navigate my way through the repo and noticed several oddities, some of which go beyond the account migration process:
- Migration mentions Mastodon but links to Instagram
I randomly came across this file which hasn't been edited in seven years and thus has been unchanged since Pixelfed was started. It hints at being directly copied from Mastodon when, in fact, it's an incomplete rewrite of Mastodon's “account migration”, as Mastodon's written in Ruby on Rails, whereas Pixelfed exclusively relies on PHP. While Mastodon renders a moved account only partially usable, Pixelfed only pushes a “this account has moved”-popup between the moved account and any link pointing to it (yes, I'm still able to follow new people and post from a moved account, though new posts will be set to “direct message” despite listing “Followers Only”).
I don't know why it claims to migrate Mastodon accounts in the first place and why it points to Instagram's homepage – it looks like the text was copypasted at random times and Dan didn't bother to proof-read it,
- Missing jobs and Commit #4968
After a while I came across the jobs handling account migrations and noticed that they are supposed to handle the migration of followers only. The official docs – barely helpful as “Prequesites” and “Installation” are identical, while “Administration” and “Push Notifications” return 404 – lists nothing related to account migrations, whereas the account migration page in a user's settings state that followers, followings and posts can be migrated. The source code, on the other hand, claims to only migrate followers but even that doesn't work, leading to the weird situation in which pixelfed.social is claiming that the new account on another instance (account Y) has received all followers from the old account (account X) while account Y actually doesn't have any followers. No data is being moved from one server to another but merely displayed as if it originates from a different instance. (I emailed the admin of lens.im to confirm that logs do not register anything related to either a failed migration or followers having been moved to his server, confirming the lack of both a plain follower migration and error handling in case this job fails).
Let's recall that this issue was opened in January, 2024, over a year ago. According to the commits, however, account migration wasn't even a feature until March, 2024, and the commit itself, despite stating to “add profile migrations”, only mentions a single feature, that being ProfileMigrationMoveFollowersPipeline
.
So either Dan completely forgot that “account migration” has been a broken, yet visible feature since day 1 or he really thought that slapping a just-as-broken migration feature on top of the old-and-broken migration pipeline would be a good idea. Given that Dan announced yet-a-new Desktop UI while the current UI still resides on top of Pixelfed's very first UI, which is far closer to the proposed new interface than the current default, it's likely he doesn't even want to understand his own code and just slaps whatever into his repositories according to his mood, not caring about consistency (which extends to how – and when – he labels issues, which range from a handful of labels on any issue posted in a short time to none at all).
- The way Pixelfed handles accounts set to private
Not related to account migrations but if you're coming from any other Fediverse service such as Mastodon, Misskey or Pleroma, you know that all public posts remain public, even after setting an account to private. Depending on server and profile configurations (especially when having discovery and search enabled), those posts will remain easily accessible within federating instances and not just cached temporarily on them.
Pixelfed handles private accounts in such a way that only may make sense if Pixelfed were a walled garden (i.e. not federating with non-Pixelfed servers). Setting a public account to private results in all posts seemingly being removed from search and public timelines. Profile picture and bio also are being hidden. (Or so it used to be the case just a day before I published this!)
My old account, despite being moved and locked, can be followed by non-Pixelfed accounts. Both my profile picture and my bio, which, surprisingly, hasn't been synced since a day or two before Instagram and TikTok users began to flood Pixelfed, are visible. The follow request from my new account on Vernissage gets sent straight into the void, while anything that was public before remains public, including several posts (those that were boosted before), outside of Pixelfed's ecosystem for as long as servers decide to cache remote info.
I gave up trying to make sense of Pixelfed at this point. There is no point in digging further through code provided by someone who “works” on several projects at once and claims to provide fully open source software while one of his other projects (FediDB) is closed source and another (Loops) only offers a GitHub repository with stubs and dummy configs. Not only that, dansup is known to be hostile towards other devs/contributors, sever admins and regular Fediverse users. In case you missed the running gag, dansup regularly lashes out against others on his Mastodon account, then deletes his pretentious rants when confronted with backlash as if nothing happened. His mood always shifts between acting like RuPaul's Drag Race contestant and Daffyd “everybody knows I'm the only gay in the village” Thomas from Little Britain.
Yeah, fuck that.