p2p.
People want it mainly because they don't want to rely on data centers. But let's walk through an example.
Perhaps you have a node in your home network, and I have a node in my home network. For these to communicate, one of them has to contact the other one first. So let's say my node contacts your node. Ok. Then my node is acting like a client, and your node is acting like a server. So in fact p2p IS actually client-server. It is just a special case of client-server, where the clients and servers are forced to be glued togther into a node.
Therefore IMHO, client-server architectures cover all p2p architectures and more. And gluing the client and server together is a completely unnecessary requirement.
In fact, I want clients on transient machines, laptops that I turn off. But I don't want servers offline, I want them on hardware that stays on. So the p2p node idea falls apart. Clients and servers should be separate.
But of course this isn't all that people are talking about when they talk about p2p. They are talking about hole-punching.
So all I'm trying to argue here is that client-server is not some worse alternative to the superior peer-to-peer, but rather that client-server is the superior architecture.
And it makes more sense to me to suggest that there should be ways to make servers acccessible to the Internet even if they run on home networks, perhaps with hole-punching rendezvous services. Running a server at home is an excellent idea. But nothing else about p2p seems like a good idea to me.
