Today I coded something I've been dreaming about for many months - a solution to the #ActivityPub scaling problem.
The problem is that if 20 people cast 5 votes and those votes are federated to 500 servers, the instance hosting the community needs to do 20 * 5 * 500 = 50,000 network requests.
The solution is to bundle the activity up into chunks. I describe the solution and how #PieFed does it here peertube.wtf/w/v5aWpxjS2P4pJSn… (probably only of interest to developers).
reshared this
Thank the Gods for the existence of Dropkick Murphys ❤️
#music #DropkickMurphys #ForThePeople #PowerToThePeople #NoKings
The image contains Japanese text on a white background. The text is presented in a bullet-point format, with a black bullet point followed by the text. The text reads: "・青少年料理サバイバル番組『アイアムシェフ』準優勝". This translates to "・Teen cooking survival program 'Ai Am Chef' - Runner-up". The text is in black font, and the overall layout is simple and straightforward.
Provided by @altbot, generated privately and locally using Ovis2-8B
🌱 Energy used: 0.093 Wh
馬斯克宣布成立新政黨與川普決裂 聲稱美國「一黨專政」
曾為美國總統川普盟友的科技億萬富豪馬斯克今天宣布,他已在美國成立新政黨,以挑戰他所謂的美國「一黨專政」體系。中央通訊社 Central News Agency (中央社 CNA)
A69 : La gendarmerie applique la politique de la terre brûlée
Pour imposer l'A69, les gendarmes n'ont rien trouvé de mieux à faire que tirer des grenades lacrymogènes sur les champs desséchés.B (Contre Attaque)
metas susimesti ant mašinos nes Neuroniniai tinklai Ai ir Dirbtinis intelektas mus nugalės, pradinis mokestis nedidelis, bet esmė kas vairuos ;0]
« Non, grand-mère n’était pas folle » : la quête de vérité sur les aïeules internées de force en psychiatrie
Plus dérangeantes que dérangées, souvent polytraumatisées, des milliers de femmes ont été internées au sein des « asiles d’aliénés » dans les années 1940, 1950 et 1960.Victoire Radenne (Le Monde)
«Rosemary Kennedy (1918-2005), la sœur de l’ancien président des Etats-Unis, a 23 ans lorsqu’elle est lobotomisée à la demande de son père, Joe, en 1941. Après l’opération, elle disparaît des photos de famille et de la vie publique. Elle est handicapée et placée en institution. Dans un documentaire diffusé sur France Télévisions, on apprend qu’elle adorait le sport, la fête et les garçons. Une femme solaire et rebelle qui représente alors un danger pour la carrière politique de ses frères, Robert Francis (1925-1968) et John Fitzgerald (1917-1963) Kennedy.»
Mais quel putain d'enfer
I've been invited to speak at another conference later this year, and it's a pretty big one!
I'm applying for my passport, and will put my fear of heights aside to give another talk and help bring awareness to our amazing #fediverse
2025 has been a huge year for me and our projects, and it's going to get even wilder 🚀
Sunday thought: A national reckoning
As we slide further into a dysfunctional police stateRobert Reich
Aren't the days of the USA numbered? When will democratic states make secession? Because Trump will not leave power, even in 3 years.
You know that, don't you?
And Vance is even worse than Trump.


marius
in reply to Rimu • • •just small circles 🕊
in reply to marius • • •@mariusor
This looks to be a fabulous candidate for an #ActivityPub #FEP 😃
socialhub.activitypub.rocks/c/…
Rimu
in reply to just small circles 🕊 • • •silverpill
in reply to Rimu • • •Batching is also possible with multibox endpoint, which is described in FEP-0499.
Multibox is slightly less efficient, because we would need to include whole
Announceactivities, but, on the other hand, it can be used by non-FEP-1b12 apps, and can be introduced without breaking federation.fep/fep/0499/fep-0499.md at main
Codeberg.orgRimu
in reply to marius • • •pyfedi/docs/fep-4248.md at main
Codeberg.orgmarius
in reply to Rimu • • •this looks good.
I had trouble picturing your suggestion because I still have trouble thinking of ActivityPub S2S as a separate protocol from C2S, and as such I think of Activities as something only the actor themselves can create using their client.
So when I was thinking about activities with batched objects from multiple actors my brain broke. :D
This being only about servers announcing batches of activities to other servers as a communication back-channel makes more sense.
(I'm still unclear why the announce activities are needed, shouldn't the original activity already have reached all servers? but I feel like that's a lemmy problem rather)
Rimu
in reply to marius • • •@mariusor Yeah Lemmy/PieFed usage of Announce is totally different to the Mastodon family. A big problem, that.
I wasn't aware that anyone was using AP for C2S, which project is that?
marius
in reply to Rimu • • •GitHub - go-ap/fedbox: Reference implementation of an ActivityPub service using go-ap packages (mirror repository)
GitHubMike Macgirvin 🖥️
in reply to Rimu • • •Brilliant concept, but doesn't match our more conversational use (every object and audience may be different).
But that isn't to say the idea won't work for us, just the implementation. It could work if your "batch" was an ActivityPub collection of queued activities. Not a paged collection, just a collection with each queued activity embedded as an item. In fact, it could work incredibly well. For our conversation containers, we end up sending two activities to every destination as we don't know which they'll accept. We could instead send both at once. The only thing it doesn't help with is RFC9421 double-knocking - which requires separate HTTP transaction. But if all your activities were signed objects (FEP-8b32) - you wouldn't need to verify the HTTP transaction. Then you could just send collections to servers of everything that's queued for them (maybe restricting to some empirically derived maximum number of requests to be polite) and reduce your delivery loading by orders of magnitude. Win-win for everybody. The spec would be pretty si
... show moreBrilliant concept, but doesn't match our more conversational use (every object and audience may be different).
But that isn't to say the idea won't work for us, just the implementation. It could work if your "batch" was an ActivityPub collection of queued activities. Not a paged collection, just a collection with each queued activity embedded as an item. In fact, it could work incredibly well. For our conversation containers, we end up sending two activities to every destination as we don't know which they'll accept. We could instead send both at once. The only thing it doesn't help with is RFC9421 double-knocking - which requires separate HTTP transaction. But if all your activities were signed objects (FEP-8b32) - you wouldn't need to verify the HTTP transaction. Then you could just send collections to servers of everything that's queued for them (maybe restricting to some empirically derived maximum number of requests to be polite) and reduce your delivery loading by orders of magnitude. Win-win for everybody. The spec would be pretty simple - if you receive a collection in the inbox or outbox with full activities as items, verify the sender and then loop through and deliver the items.
Would still be nice to have queueing on the inbound fetch side - but that's a battle for another day.
Bill Statler likes this.
Mike Macgirvin 🖥️
in reply to Mike Macgirvin 🖥️ • • •silverpill
in reply to Mike Macgirvin 🖥️ • • •I have already mentioned this in the thread, but: we can use
Addactivity whereobjectis an array of activities andtargetis inbox or sharedInbox collection.That would prevent a conflict with existing FEP-1b12 implementations
Mike Macgirvin 🖥️
in reply to silverpill • • •Nice. That'll work too - perhaps with
targetalso an array so we can target multiple actor inboxes and also the sharedInbox on the same instance. That would save us a whole lot of packets and network transactions.Even without that clause, it's sounding like the cleanest implementation yet.
Mike Macgirvin 🖥️
in reply to Mike Macgirvin 🖥️ • • •