I'm sorry, it took *how* many servers to post a single long message from Ghost to 5k fediverse accounts and handle some replies?
https://activitypub.ghost.org/beta-plans/
(via @fediversereport)
(edited again TA: See replies from @thisismissem pointing to implementation choices + @bengo about pushing to Mastodon)
I just built a whole thing in Ghost specifically because it was moving toward AP integration and this is…alarming, especially since Ghost plans to charge for fedi subscribers. (Which, no wonder, given that situation.)
But like: WHAT?
@by_caballero @fediversereport my jaw literally dropped open
@kissane this seems like more than just the fediverse at fault here...
@kissane i've been paying $100/month for my mastodon instance and I'm happy with the performance now but when I was only on a $20/month server it got really rough sometimes
@b0rk I mean, I definitely hear about how resource-intensive fedi servers can be, and we don't have specs on what exactly Ghost is running, but yiiiiiiikes
(Also, for a system that still roots for single-user instances, $100/month is a high barrier to entry!)
@kissane @b0rk If I felt the need for a single-user Mastodon instance I would definitely try snac2 first. https://codeberg.org/grunfink/snac2
@jef @kissane @b0rk Migrating from Pleroma/Akkoma, I've been using gotosocial for my single user instance and I'm happy with it, although I haven't compared performance with much else.
Mastodon has lots of features, but I guess there's is space for a simple and performant instance software, both for nano instances, and for huge instances.
Julia wrote a toot before on this: https://social.jvns.ca/@b0rk/111450383303059796
At the time it was $40/month
ActivitiyPub/Mastodon are more targeted to communities and to larger instances then to single user instance, which WP/Ghost basically are. Something you touched upon in moderation paper.
ActivityPub is extremenly chatty as well, which doesn't help.
@Tubsta it's just me, but being chatty is expensive
@kissane I know someone who is pondering switching his newsletter from beehiiv (which is pretty janky ime) to Ghost. IDK if he's aware of this.
@4d3fect I mean, it seems fine for email and serving a website…
@kissane right. This guy has, I think, some thousands (?) of subs. So,... Not good?
@4d3fect Thousands of email subscribers is pretty easy to price out for Ghost, but thousands of fedi subscribers…unclear what that will involve.
@kissane @4d3fect I used it for thousands of subscribers years ago and it was like $9/mo. activitypub may only make sense for self hosting if having thousands of masto followers is burning that much juice. I'd be interested to benchmark 5thousand followers on 100 masto servers versus 5000 on 100 threads versus 100 friendica versus 100 pleroma etc etc... someone write a grant proposal!
@by_caballero @kissane Did it support comments sections, notifications &c?
@kissane ugh so I believe this is a mastodon fail and def not a protocol fail.
(at risk of being wrong, and sorry if I am)
Mastodon only shows things that are pushed into it from other servers.
Push is only important for real-time synchronization.
IMO it's obviously a good idea for any AP Server to check like once a day or on-demand to make a single HTTP Request to an Actor's outbox and show its recent stuff.
But mastodon doesn't do this.
@kissane so for a publisher to ensure that all their followers see a thing, and because in practice so many people use mastodon, a publisher has to spend all this compute/bandwidth/energy to make sure that they push the post into each followers inbox.
It would be better for everyone for mastodon and everyone else to just fetch a followee's outbox once a day (aka 'what RSS does') and just progressively enhance into receiving pushes from publishing actors that want to do it. but masto requires it
@kissane see also 'the backfill problem' because masto won't go fetch even the most recent page of a folowees outbox upon follow https://github.com/mastodon/mastodon/issues/34
@kissane nods to hopes and dreams that "The web is an environmentally sustainable platform"
https://www.w3.org/TR/ethical-web-principles/#sustainable
Yes someone can write a while(){} loop that just repeatedly downloads the same website over and over again without using cache headers to minimize bandwidth or respecting a server's Retry-After header, but is it the web platform or HTTP's fault and regardless of fault how do we do better?
@bengo @kissane I'm telling everyone, push model was a mistake!!! (https://icosahedron.website/@greg/113222459291481648)
@bengo @kissane Clarification: to each *domain* https://mastodon.social/@Gargron/113241147254924323
@astrojuanlu @bengo @kissane I can't help but feel like, regardless of any hypothetical flaws or not in Ghost's implementation, that relays are the answer here. Especially smaller instances could benefit from sharing in/outbox and post discovery to both improve user experience and reduce redundant load.
@astrojuanlu @amberage@eldritch.cafe @kissane I shoudn't bite but lol wut. pretty sure ATProto didn't invent making HTTP GET requests / REST.
@astrojuanlu @kissane @amberage@eldritch.cafe
jsyk it's not at all obvious what architecture that means, since 'relays' has been in use by mastodon and nostr for completely different things than what it means in ATProto.
But for those following at home: "A relay (previously referred to as a Big Graph Service, or BGS) crawls many repositories and outputs a unified event firehose."
https://atproto.com/specs/atp
I think people usually call this a crawler https://en.wikipedia.org/wiki/Web_crawler
and to my og point, it's not new
@amberage @astrojuanlu @bengo @kissane
I believe the Fediverse Discovery project will solve the discovery issues and hopefully reduce redundancies (in storage at least)
https://www.fediscovery.org/
It's still in the early stages but I think relays will become obsolete
@bengo @kissane I don't think pull is the answer!
The majority of accounts don't post for long periods and doing a fetch on each individual accounts you follow is a lot less efficient. Social media is predominantly read not write.
And caching means you get stale information, might be OK in RSS but not for social media
@kissane they’ll probably improve performance quite a bit before its ready. They’ve been pretty open about how they’ve been building it to begin with. Just iterating and seeing where the pain points are.
@kissane @fediversereport yeaaaaaah, i considered running my own instance til i realized that this stuff runs on ruby on rails, which isnt.. the best... in terms of performance
@Viss @kissane @fediversereport ghost is using fedify! which is fairly modern JS AFAIK.
@Viss @kissane @fediversereport might be more networking intensive than compute intensive, fwiw
@by_caballero @kissane @fediversereport yeah the issue here isn't the front end js stuff - its whats running under the hood, powering any given mastodon instance. its a ton of ruby on rails, which twitter showed the world "isnt exactly the best language/framework to do huge, high volume. small bandwidth transactions and queueing systems". its why twitter scrambled to get off RoR and moved to scala as they grew.
i was VERY SURPRISED, to say the least, learning that mastodon still uses RoR.
@Viss @kissane @fediversereport right but ghost doesn't run mastodon, it runs fedify which interoperable with mastodon API. the 10 servers in question are fedify servers:
https://fedify.dev/
@by_caballero @kissane @fediversereport the repo that project links to appears to be a node/npm project with dirs indicating it runs inside a docker container.
so this is javascript running 'as a server' inside docker, which is very different than ruby on rails, but in its own way, super topheavy in terms of layers of abstraction, and also entirely unsurprising it gets loaded down easily.
@by_caballero @kissane @fediversereport same 'effect', different 'application of force'
@Viss @by_caballero @kissane @fediversereport
That was literally 16 years ago.
Most of the world still ran Windows XP and Internet Explorer.
Ruby and Rails are plenty fast today, and one could argue was when Twitter changed, but they were unwilling to make large changes to their code to be able to upgrade.
If you use GitHub, buy something with Shopify, or listen to a lot of podcasts, you are using Rails apps that perform just fine.
@Viss @by_caballero @kissane @fediversereport oh shit, I also forgot about GitLab.
Mastodon isn’t a resource hog due to Rails, it’s a resource hog due to ActivityPub being somewhat badly implemented across the board, meaning that most actions result in amplification (ping N servers about a reply) and this amplification can sometimes be severe.
@Viss @by_caballero @kissane @fediversereport Ghost encountering this with a non-Rails implementation of ActivityPub should be sufficient to prove that out.
@Viss @kissane @fediversereport
This might have been true in 2014, but it’s not really true in 2024. Plenty of us have Rails fleets sized in the dozens with monthly traffic sized in the tens of billions of requests. Shopify does even more than that.
That said, the floor of resource requirements can be fairly high without tuning, but this is largely due to glibc’s malloc and jemalloc helps. This makes you think it scales linearly from this floor, but it doesn’t.
@ZiggyTheHamster @kissane @fediversereport cool, tell that to @jerry
@Viss @kissane @fediversereport @jerry
Mastodon having not great performance sometimes is not due to it being a Rails app, it’s because some writes can have a 1000x amplification factor and most people don’t have systems elastic enough to tolerate that. This is a tooling problem, and to an extent a protocol problem.
@Viss Hetzner LOVES rails apps.
That said, I can’t imagine running any of the other apps (Akkoma, iceshrimp, mbin, pixelfed, peertube, bookwyrm, or Lemmy) with 20k concurrent users, though u guess there may be a few lemmy instances that large
@Viss @kissane @fediversereport there's s.g. GoToSocial which is written in Go
@Viss @kissane @fediversereport ghost is written in Javascript.