What is Nostr?
PC エッチ XYZ /
npub1hg6…30wt
2024-02-06 13:21:26

PC エッチ XYZ on Nostr: The default reaction of Sharkey became ❤️ was actually brought in by Misskey ...

The default reaction of Sharkey became ❤️ was actually brought in by Misskey v13.10.3
https://misskey-hub.net/ja/docs/releases/#_13103

RE: https://void.rehab/notes/9pdcmo0gfioyvzgq

starting today (with withdrawal version 2023.12.3.withdrawal2), void.rehab and all instances using it's withdrawal patchset will be disabling reactions from sharkey instances. what this means is that all reactions received from sharkey instances will be turned into plain likes. this is due to sharkey's development team prioritizing misskey-specific niceties over interoperability. as part of my promise of quality, i am introducing this restriction and urging those considering migrating to sharkey to reconsider their options. the following is an explanation of the issue and how it reflects on sharkey as a whole

first, some background. federated misskey reactions are sent in an odd way - as likes. more specifically, a field called _misskey_reaction is added to any like activities that are reactions. on base misskey, there are no likes, so this makes sense. on mastodon, there are no reactions, so a reaction will get automatically processed as a like. this is a very neat solution to the problem of two projects having a different set of features. there's just one issue: akkoma added reactions as well. these reactions, however, were implemented differently from misskey. you can add as many akkoma reactions to a post as you want, and akkoma's likes were an entirely separate system from reactions. this meant that, on akkoma, misskey "likes" were generally received as ⭐ emojis (as was the common choice for a like emoji). this was annoying, but hard to solve because likes weren't a thing on misskey

eventually, firefish (then called calckey) added likes. likes and reactions were still part of the same system, but there was now a button that would insert the instance's default reaction emoji. but that's not the only change that this system brought; this change fixed likes showing up as emoji reactions on akkoma. if you look at the renderLike function at firefish.dev/firefish/firefish/-/blob/dbb73b8e3dae89dd989caa709b45571437fb584a/packages/backend/src/remote/activitypub/renderer/like.ts#L9 , the logic is quite simple. if the emoji reaction is the default instance emoji, don't send it as an emoji reaction. this fixed the issue of likes showing up as emoji reactions on akkoma and pleroma, and was overall great

during this period of firefish-style likes, a clear meaning could be realized through emoji reactions. a reaction matching your instance's default reaction meant that a user liked your post. a different reaction - say, a ❤️ - would mean that someone is sending love to you. this is similar to every other platform that has emoji reactions. if you posted about something sad that's effecting you, you'd get a lot of ❤️ reactions. this seems simple, but it established a language of communication on fedi through reactions. you were able to show your support for someone through a nice pretty emoji, without having to add yet another reply that would flood their notifications

at some point, sharkey came into existence, and it wanted to add firefish-style likes as well. but they went about it differently. if you read sharkey's codebase, in the ApRendererService's function renderLike ( activitypub.software/TransFem-org/Sharkey/-/blob/f091b84c6ed19519505594bcb9f2e802876e61fe/packages/backend/src/core/activitypub/ApRendererService.ts#L272 ), you will see that it uses an isMastodon variable. later in the function, it checks if the target instance's softwareName is set to "mastodon", "akkoma", or "pleroma", and stores that in that isMastodon variable. when the object is created, if the target passes the isMastodon check, and the reaction is the default reaction, it will send a plain like instead of a reaction. this fixes the akkoma like reaction problem, but introduces a new one: firefish (and it's forks). you see, firefish is not mastodon, nor is it akkoma, nor is it pleroma. additionally, new fedi software is always under development, and they will have the same issue as akkoma, except worse

and by worse, i mean that on sharkey the default default reaction is set to ❤️ for some reason. this breaks the language that previously existed with ❤️ reactions, but that should only effect sharkey instances. except, sharkey specifically sends out likes with reaction data to all instances other than the ones they hardcode to send normal likes to. and furthermore, many sharkey instances have their reactions set to other values (some even to animated emojis), causing further pollution of reactions. on iceshrimp, the reactions list of a post, which previously would show the number of likes in the ⭐ emoji and then a list of specific reactions, now shows a five different emojis that the likes might be spread across. now, i thought this was a bug at first. surely this code couldn't be intentional. it would be absurd to intentionally cause the only practical sharkey alternative to have such a degraded reaction experience!

so, i talked to a sharkey developer about this, and the response i got astounded me. first, i was talked down to, which... sure, if you don't know who i am, you might assume i have no clue what im talking about. but i do know what im talking about. i understand how federation works, i cleared explained the issue and how to fix it, and they still disrespected me in every single message in our conversation. but whatever, i don't derive my ego from what frontend developers think about me. so i read her explanation, and... she understood the issue (after i explained it a few times), and decided not to fix it because "sharkey let's instance admins and user change the like reaction to funny reactions". her justification for this incompatibility was that she thought it was funny

and really, this isn't about reactions. this is about a development team i've never heard of barging into fedi software development, spamming advertisements all over my feed, and reducing the quality of my instance for my users. no care has been taken here, and i do not believe care will be taken in future decisions. there certainly wasn't care taken when remote code execution made it's way into the codebase, using an api in a way that the documentation (in bright red text) tells you not to. it's not just that there was an RCE, it happens to the best of us. it was the absolute carelessness that was exhibited in the code, and in the implementation of other features like reactions

i do not trust the sharkey team to develop a piece of software that my friends can trust to represent their identity, and i do not trust that any private data on sharkey will remain private forever. security research on sharkey will continue, and any new feature added makes me worry that a new vulnerability will appear. to my fellow instance admins, while we wait for the next RCE, i suggest migrating to iceshrimp or staying on firefish. and to the sharkey team, please do better

edit: as a note, i may have been passive aggressive in my messages to the developer, but it was not intentional. my goal is to maintain the user experience of void.rehab
Author Public Key
npub1hg6gjjqhk75jrusf7ct20djk6nxlwp7gxa8jf2uemwpst4shm83sew30wt