What is the difference between p2p and client-server? What people mean by p2p has always been multiple things, and it clouds my thinking when trying to reason about what people are saying. Every network connection has an initiator. If we call that side the client, then every network connection is client-server... so p2p is not an alternative architecture to client-server, but just some subclass of client-server. Maybe p2p means that the server is in your house, instead of in a data centre. Or that technically, it is behind NAT and maybe not Internet exposed. In that case holepunching tech might be useful. This comes up a lot. I would drop the term p2p and just say that sometimes relays are behind NAT and maybe we need a holepunching spec. Maybe p2p means that every server must also be a client, and vice versa, and then you call them "nodes". This seems to be an unnecessary additional constraint on what people can do. I think the server and client components should always be separable. I can't think of a reason to force them together. This is the extent of my thinking on p2p. If I missed something about what makes p2p distinct, please mention it so I can integrate it into my thinking.

Replies (2)

I think an important part of it is people's expectations. If you present something as being p2p then people are more chill than if you present it as being client server (even if you never use technical terms in your presentation). The thing is that p2p tech has always been so terrible that even these more chill expectations were far from being met. Playing around with some of this iroh stuff though I'm starting to wonder if the tech hasn't caught up? - this is iroh powered and works better than it should for p2p. Something is going on.
All I mean by peer-to-peer is that there are no special nodes in the graph. I don't really care about the implementation. I only care that things function between 2 isolated users in the same manner that it functions in a fully connected graph. In some sense that means that every node is a client/server combo but that doesn't mean there are no other connections or that the permissions set on the node can't make it function as a relay, STUN server, or TURN server. Maybe it is just better to say decentralized but that term might be more overloaded that peer-to-peer.