Goofed Home

Scaling: ActivityPub over NNTP?

$$21184
https://piefed.social/u/rimu posted on Apr 1, 2026 09:18

Here’s an interesting thought experiment.

Way back in the 1980s and 90s, Usenet was a sorta-federated discussion forum (using the NNTP protocol) that was very popular. It still exists and is distributing 400 million messages each day (mostly spam and trash as far as I can tell). Hard numbers are difficult to come by but it seems like Usenet is capable of significantly higher throughput. Why is that?

The big thing holding ActivityPub back is the fan-out. You know the story - someone with 50,000 followers causes their instance to send up to 50,000 HTTP POSTs every time they click the little spinny star or reply to something.

It’s basically a hub-and-spoke network topology. Except everyone takes turns being the hub, ideally, but not much in practice. And in this topology, the hubs are where the strain and bottlenecks are.

Back in the 1980s they had computers literally 1000 times slower than ours and network links to match. So how did they do this? With a peer to peer network topology! When a new post is made, they don’t send it to everyone they just send it to a handful of other servers. Those servers in turn forward the post on to a handful of other peers, and so on, until the whole network receives the post. No individual server is a single point of failure and none has to bear the full brunt of orchestrating it all.

Let’s do a picture. A creates a post and sends it to B and D.

A ─ B ─ C  
 \      /  
   ─ D ─  

B sends it on to C.

Meanwhile D sends it on the C also but C already has it so does nothing more. IRL this would be a much larger mesh. Who peers with who can be a mixture of manual selection and random spiciness.

Posts can arrive out of order so each server would need to wait until the dependencies between posts are resolved before making them available to clients. That’s a bit tricky.

In the ActivityPub-over-NNTP idea, each NNTP post would be a thin wrapper around a data structure containing the HTTP headers (with signature and digest) and JSON that a normal HTTP POSTed Activity would have. Servers would use NNTP to distribute the activities and upon receiving one they’d POST it to their own /inbox to run the usual ActivityPub processing that their AP instance does.

{  
  "headers": {  
    "Signature": "...",  
    "Digest": "...",  
    "Date": "..."  
  },  
  "activity": { ... normal ActivityPub JSON ... }  
}  

In this way there is no need to rewrite ActivityPub semantics as only the transport layer changes. Our existing inbox logic remains intact.

NNTP comes with a lot of historical baggage so we’d probably need to evolve the protocol a bit. Maybe use HTTP requests (even http2 streams?) instead of the original line-oriented text protocol using raw TCP sockets. But you get the idea.

Thoughts?

https://piefed.social/c/technical-discussion/p/1939768/scaling-activitypub-over-nntp

$$21355
https://piefed.social/u/rimu posted on Apr 1, 2026 20:22
In reply to: https://piefed.zip/comment/4549493

Yes, I think that’s part of NNTP already. Each post has a list of the servers it has traveled through so when considering where to forward the post on to a server can check if it’s already been there. That would help somewhat but still there would be quite a few times when a server discards posts.

I haven’t gotten deep enough into this yet but I’m sure there have been protocol improvements since NNTP that address this. Gossip protocols have been experimented with since the early 2000s. For example, rather than servers saying to others “I have this post, do you want it?” they might say “the most recent post I have in the fediverse@lemmy.world community is #5” and another server which only has posts #1 and #2 would respond “cool, give me posts #3, #4 and #5”.

https://piefed.social/comment/10785115
$$21357
https://piefed.social/u/rimu posted on Apr 1, 2026 20:26
In reply to: https://mitra.social/objects/019d49cb-4435-0420-3d7c-c45d9303451f

Good point.

https://piefed.social/comment/10785159

Conversation

$$20613
https://mastodon.xyz/users/Profpatsch posted on Mar 30, 2026 18:59
In reply to: https://declin.eu/objects/e3e627eb-a423-44f1-bf86-3add2206db62

@i The thing is that it’s really not useful to define super generic terms that are not even pointing to existing implementations, and could have any semantics.

We need a report about what is actually used, and exactly how.

https://mastodon.xyz/users/Profpatsch/statuses/116319661485968430

$$20671
https://mastodon.xyz/users/Profpatsch posted on Mar 30, 2026 20:58
In reply to: https://mitra.social/objects/019d4057-a5db-6c9a-2f17-3f02f37a4f58

@silverpill @i That is very cool and I don’t know how I haven’t seen it before; it kinda invalidates part of the nlnet funding ideas that I wanted to apply for :)

https://mastodon.xyz/users/Profpatsch/statuses/116320129041826753
$$20960
https://mitra.social/users/silverpill posted on Mar 31, 2026 20:45
In reply to: https://mastodon.xyz/users/Profpatsch/statuses/116320129041826753

@Profpatsch @i It is an invaluable tool, and has so much potential, but the development is kind of slow.

Perhaps you can apply as a contributor?

https://mitra.social/objects/019d45a4-cf5a-8295-98f5-2c5ee283e1a9

What’s your opinion on tags.pub?

$$20162
https://sh.itjust.works/u/loaf posted on Mar 29, 2026 21:02

I’ll be totally honest and say that I don’t trust Evan (for reasons I’m not getting into), and I’m not sure why we need “hashtags with extra steps,” but I’d like to get opinions from people who are smarter than I am about this stuff.

https://sh.itjust.works/post/57625512

$$20239
https://lemmy.world/u/albert_inkman posted on Mar 29, 2026 23:20
In reply to: https://sh.itjust.works/post/57625512

Hashtags-as-a-service isnt new thinking, but tags.pub solves a real gap Mastodon has always had — native group support was promised forever and still hasnt landed. The problem is hashtags fragment across instances. Tags.pub centralizes tag resolution so a post tagged #fediverse gets discovered the same way on lemmy.world or a small microblog. Its a pragmatic middle ground between full federation and centralization. Im skeptical itll become the standard, but its the best workaround until Mastodon actually ships groups or activitypub gains native hashtag support.

https://lemmy.world/comment/22939359
$$20368
https://piefed.social/u/rimu posted on Mar 30, 2026 04:29
In reply to: https://slrpnk.net/comment/21514020

I don’t know. Last I saw was a PR languishing for years.

https://piefed.social/comment/10745192

Conversation

$$20062
https://mitra.social/users/silverpill posted on Mar 29, 2026 17:18

Announcing Mitra Mini v0.1.0

Mitra Mini is an ActivityPub client that implements nomadic identity. It has become stable enough that I decided to cut the first release.

The basic features have been implemented: posts, reposts, likes. For more information, check the project's readme:

https://codeberg.org/silverpill/minimitra

It all started nearly four years ago with a vague idea that linking cryptographic keys to #ActivityPub actors could unlock decentralized identity in Fediverse. Eventually, the solution was discovered, and implemented by several projects, but these implementations were servers, not clients. Now there is finally a client, and the design has been proven to work well.

#NomadicIdentity

https://mitra.social/objects/019d3a9a-e2e7-20c3-2445-4891fa178600

$$20142
https://piefed.social/u/rimu posted on Mar 29, 2026 20:25
In reply to: https://mitra.social/objects/019d3a9a-e2e7-20c3-2445-4891fa178600

Congrats!

https://piefed.social/comment/10741079
$$20158
https://mitra.social/users/silverpill posted on Mar 29, 2026 20:59
In reply to: https://piefed.social/comment/10741079

Thank you @rimu !

https://mitra.social/objects/019d3b64-d39a-8f8a-91dc-1576cc691a50

Conversation

$$18608
https://mastodon.xyz/users/Profpatsch posted on Mar 27, 2026 09:42
In reply to: https://mastodon.xyz/users/Profpatsch/statuses/116297722305030419

@silverpill @liaizon Which, fine, all resources from other places need to be restricted to prevent DoS attacks anyway.

https://mastodon.xyz/users/Profpatsch/statuses/116300484674460827

Conversation

$$17290
https://mastodon.xyz/users/Profpatsch posted on Mar 24, 2026 22:27

New post: Can we have a more “social” media?

https://profpatsch.de/essays/a-more-social-media

On advertising, the Fediverse, and what a more human social web could look like.

Special mentions: @smallcircles, @phnt, @happy-programming

#fediverse #activitypub #socialmedia

https://mastodon.xyz/users/Profpatsch/statuses/116286505445503914

12 posts in conversation

$$18343
https://mitra.social/users/silverpill posted on Mar 26, 2026 20:04
In reply to: https://mastodon.xyz/users/Profpatsch/statuses/116295916338801699

@Profpatsch You need to create a new signature because the request target is changing. It is a part of a signature base, so the initial signature becomes invalid when the client follows a redirect.

@liaizon

https://mitra.social/objects/019d2bbf-4e34-02b9-d5b8-f60aa8a20aa1
$$18344
https://mitra.social/users/silverpill posted on Mar 26, 2026 20:11
In reply to: https://mastodon.xyz/users/Profpatsch/statuses/116295929200084083

@Profpatsch @liaizon The guide recommends limiting the response size, to prevent DoS.

I also found this in your SECURITY.md:

https://codeberg.org/Profpatsch/Profpatsch/src/commit/249aa389a2023814b328af8fc795750fd28d995d/users/Profpatsch/activitypub-go/security.md#response-body-size-limits

https://mitra.social/objects/019d2bc5-a5db-85e0-512e-5c68cbe6e6b4

Conversation

$$10996
https://mitra.social/users/silverpill posted on Mar 12, 2026 19:38
In reply to: https://activitypub.space/post/1545

@julian @Edent dansup? No, it is not his site.

https://mitra.social/objects/019ce38e-9ba5-cf3c-e31b-158190f1c117

$$10999
https://social.coop/users/django posted on Mar 12, 2026 19:45
In reply to: https://mitra.social/objects/019ce38e-9ba5-cf3c-e31b-158190f1c117

@technical-discussion @julian @Edent @silverpill I think it is @melvincarvalho

https://social.coop/users/django/statuses/116217919251689766
$$11181
https://mastodon.social/users/melvincarvalho posted on Mar 13, 2026 09:42
In reply to: https://social.coop/users/django/statuses/116217919251689766

@django @technical-discussion @julian @Edent @silverpill yes socialdocs is something i help look after. Anything needed?

https://mastodon.social/users/melvincarvalho/statuses/116221211731515385

Request for Feedback/Collaboration - Bytescape, an Iroh based identity layer for the open web

$$8348
https://piefed.social/u/robert.meyer86 posted on Mar 7, 2026 19:03

Hello Fediverse,

I would like to receive some feedback on this idea I have been kicking around, and see if others might be interested in contributing. I have a basic prototype that proves out most of the technology, but not much beyond that.

The basic general description is an Iroh based identity layer for the open web. This platform would serve three primary functions:

  1. Preserve and consolidate social graph data in an encrypted local storage vault, allowing for import, display, and management of media and posts from both walled garden platforms and open platforms.
  2. A “universal translator” across open platforms, allowing for seamless connection between activitypub, AT protocol, and rss subscriptions. You are able to link mastodon, Lemmy, pixelfed, loops, and blusky accounts and your legacy social media imports can also generate RSS subscription feeds for your previous Instagram or YouTube (among other platforms) subscriptions, with all this content showing up in a single filterable fleed.
  3. Identities can be linked to any unique URL, using an umbrella DID. That URL can be any location the user chooses, including an indieweb page, a spacehey.com profile, or any other site the user controls and is able to host the corresponding DID document for cross platform identification.

There are many more details and features I have in mind that this architecture could facilitate, but this is the overarching basics of what I had in mind. I am very open to critique or analysis of this architecture, potential issues and limitations, as well as ideas for modification.

I would also welcome collaborators and contributors if there is interest, and I can open up the project for whoever may be interested. Let me know!

https://piefed.social/c/fediverse/p/1853285/request-for-feedback-collaboration-bytescape-an-iroh-based-identity-layer-for-the-open

$$9049
https://mitra.social/users/silverpill posted on Mar 8, 2026 22:12
In reply to: https://piefed.social/comment/10448089

Forte and tootik use FEP-ef61 with server-managed keys. I am working on an application where keys are stored on the client side: minimitra. This is probably closer to your idea.

Do you want to use iroh for transport, or for identity?

https://mitra.social/objects/019ccf82-2eeb-0937-ca88-adc5decbe1fd
$$9660
https://piefed.social/u/robert.meyer86 posted on Mar 9, 2026 21:38
In reply to: https://mitra.social/objects/019ccf82-2eeb-0937-ca88-adc5decbe1fd

Iroh was more of the p2p transport layer, but it is what facilitates the authentication through DID to the local vault. The work you linked is very relevant and will be definitely be of use!

https://piefed.social/comment/10461476
Create New Post