I think maybe, we need to revisit "p2p networks are cool but do not work at scale." The reason for want p2p networks is because they handle moderation naturally. For instance if I only see what my mutuals post or repost then I am impossible to spam unless one of my friends is an idiot. If that is the case I can easily throttle that friend. It isn't as good as talking to nobody but it is a heck of a lot better than talking to everybody. Of course we would like to be able to talk to anybody, but the reality is that guaranteeing universal accessibility is a logical impossibility. For instance if any particle I. The universe wanted to talk to any other particle they couldn't just due to the expansion of the universe. There is also the problem of the number of possible connections being an exponent. No matter your architecture there is some hard scaling limit. I propose just accepting that and keeping your local group "small" mutuals of mutuals is very nearly all I care about. Add a layer or two beyond that and you are basically back to everyone on earth. I think p2p can be done as long as we are honest in what we can expect. Can I set up a node that handles connections from a few hundred mutuals and their average 1 post per day? Yup, not even hard. Scale that out 2 more layers and now I am at about a million or so messages a day. Limit that to whatever fits in one packet and you are already doing better than twitter for a couple gigabytes per day. Not great for your phone, but you can keep any message passing to your PC or a raspberry pi that you set up for you and your friends and have the phones download the subset of messages you actually view. I am not saying it is easy, but I think it is possible to have a fairly good p2p experience as long as a handful of your friends and family are savvy enough to set up a node with a port forward and give you a small store and forward allowance.

Replies (4)

the main reason why p2p isn't a thing is because of ipv4 and NAT routers if it weren't for that, it would be simple to just run your own relay and client uses outbox model and caches what it gets from your friends relays in your local relay, which also syncs between your multiple local relays, the one on your phone, the one on your laptop... that's the hard problem, that the establishment is literally trying to hold at bay forever if they can, because it grants them a monopoly on easy deployment of servers, as they have the resources and time to manage the infrastructure with all the artificial limitations that go with a limited address space. i mean, 32 bits man. that's literally less than the population of humans, by a factor of two. even if everyone somehow was able to get one for free, half of the population would still not be able to have one. ipv6 fixes this but we are still at a situation where the minimum allocation of address ranges is 64k. i mean, who apart from corporations needs 64k of addresses? most individuals would be perfectly well served with 256
But it can work. You just need some percentage of your local network to have publically addressable IP's port forwarding takes care of that. You can also do ipv6 as well as ipv4. I think most isps support it now. Again it isn't going to be easy. Not with cgnat etc, but I think it can be done. You just have to have sensible expectations of throughput. The lighter you can make the protocol the better.
You can do the same in Nostr by just having a relay with whatever restrictions you want. Simultaneously Nostr also enables global broadcast mode, which is also important to have and cannot be done with pure p2p.
True. But you can do it both ways. You can do relays with peer restrictions or p2p with optional relays. (In which case a relay is just a peer with lots of resources. E.g. a static IP and permissive filters.) You want to have both. I think it makes sense to start with p2p and add relay features, mostly so all the authentication encryption etc just works. It is a bit more of a pain to add it to an existing open relay protocol without leaking metadata. Likewise it is a bigger pain to code for the base protocol of a p2p system because all the data you want is encrypted and routing is a pain. It is just a matter of where you like your pain. I like nostr because you made the practical choice to make it possible to code for. Very bold of you. But I also want to see if I can get there from the other direction. It might actually be simpler in the long run. But I admit getting adoption and making it convenient for developers is.... A long shot at best.