this post was submitted on 06 Mar 2024
251 points (88.9% liked)
Fediverse
28396 readers
1069 users here now
A community to talk about the Fediverse and all it's related services using ActivityPub (Mastodon, Lemmy, KBin, etc).
If you wanted to get help with moderating your own community then head over to !moderators@lemmy.world!
Rules
- Posts must be on topic.
- Be respectful of others.
- Cite the sources used for graphs and other statistics.
- Follow the general Lemmy.world rules.
Learn more at these websites: Join The Fediverse Wiki, Fediverse.info, Wikipedia Page, The Federation Info (Stats), FediDB (Stats), Sub Rehab (Reddit Migration), Search Lemmy
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
You know that you are riffing on the theme of "The Cathedral and The Bazaar", right?
Anyway... For this to work well things needs to be enforced at the API level, but APIs are exactly that: a contract between two separate applications that need to interface with each other programmatically.
I for one wished that "the API" was not something ad-hoc and developed exclusively for Lemmy, but as long as "Lemmy's API" can be used as a de-facto standard for discussion-group applications on the Fediverse, then I don't mind working with it.
Huh, I've never actually come across that, I've only gotten it indirectly. I bet my first mentor put it on in my head, the guy built out our entire system, then a v2, with one intern while the rest of us extended the framework he built.
And that's the sad part... The Lemmy api is not only not that, federation is an API+ that gives an amazing starting point. As far as I can tell, the lemmy API was made with the official clients in mind, and everything else was an afterthought made in a hurry during the last Reddit Exodus
I started reading through the kbin API, which starts with "here's a link to activity pub standards, they're surprisingly readable". They were... It's unwieldy in a lot of ways and maybe too all-encompassing, but they left so much on the table.
For one, uri ids. Lemmy has them for everything (which is nice), but they aren't directly usable. You can get the local ID for the home instance, but if I've got a url for lemmy.world I want to see on my instance, my only option is a search. Which should kick off federation, but what if it's there already? I want an endpoint to resolve it (or even to tell me it's not here right now so I can fall back).
And the way they handled metadata is pretty awkward... They next objects inside of collections of activity data and object properties, which is annoying because it's so inconsistent. Like, if you get a comment response, it gives you the comment reply, which is basically a comment without the usual metadata like vote count or the full actor object.
It gives you too much, then suddenly too little - I don't need the bio, tagline, and banner of a server every time I see a post, and I also don't need it for the community and user
But I do need the comment votes when I get a reply - I'll wait on the comment chain and root post, but I don't want to have to build a post-body only component to show while I wait to replace it with the whole thing
I do really like that they autodoc everything... Even if a lot of it is indecipherable with no context offered. Like the honeypot parameter on getPosts... It's actually intended to be a honeypot. Like if you set it to true, it's supposed to not give you posts, or log you or something? I tracked down a one line confirmation on GitHub which left me baffled. I had to try it... It didn't seem to do anything
/Rant
It is getting better though, the amount of completely breaking changes that pop up is very frustrating, but this time around it is significantly improved