• 0 Posts
  • 11 Comments
Joined 2 years ago
cake
Cake day: July 5th, 2023

help-circle


  • Yes eventually, just like the instances do once enough users are hitting it. Its a matter of how much all servers in the network need to scale, but also the nature of the protocol itself. Streaming binary data is more performant than individual http api requests for instance. Event streams are the way to go un a decentrliazed network for sure.



  • So lets say there are 100 instances. My instance needs to issue api requests to each instance to sync with the network. They in turn need to issues 100 requests to me to sync (and eachother). What about when there are 100k instances? Its exponential.

    From the looks of AT, its farily linear because its really just operating on a set of giant event streams (like kafka).

    To me, ActivityPub being based on REST APIs was always a problem. On the upside it makes it approachable, but its not really the right tech imo. Use something without the overhead of http headers and whatnot.


  • Yeah i guess you could look at it that way. Each instance would have to scale horizontally to handle the load, which is waste.

    I could be wrong, but my understanding is that ActivityPub is just a rest api contract that one can implement in order to communicate with the rest of the “network”. Its simple, but its such massive overhead to do this all via http. Pushing all your instances events to a dedicated stream and letting the other instnaces read it can be more performant and handle the load better. The downside though is who controls the streams?

    IRC is the OG of federation, i am sure we could learn something from it and have federated networks that are in turn federated with eachother. I dunno, just thinking out loud here.


  • I can see how the AT protocol is designed to scale. ActivityPub works fine now because the community is fairly small, but it will reach its limits as it is currently designed. Its basically an event driven model vs a push and pull model. Sure a docker image can more or less jusy be deployed, but that simplicity is a ticking time bomb.

    Running a relay is way more powerful than the author states though. You could do stuff like selectivly intercept and reject events before they make it into or out of the firehose.