And if that’s possible, why are servers needed at all? Can’t an app just create a server per user and run it on the users device?
It is possible! But not so easy.
You need to build a “reputation” with other servers. If your server is online, then some instances lose messages or just plain fail to load your content. So, first off, you need to be online all the time.
And it takes a lot of bandwidth! Each message, like and post anyone makes on every instance might come from any other instance, so servers need to have enough bandwidth to talk to each other all day.
There’s also the problem of storage. You don’t only store your own content, but also a “cache” of other people’s content, so you don’t need to request it again every time.
There’s even a need for energy. Your server might connect to a lot of other servers, so you might need to have a beefy cpu to process all of that (so no running on batteries)
What you describe exists, actually. It’s called “peer to peer” (often called “p2p”). There are some p2p networks, like scutterbutt which runs on top of the “gossip” network.
They have their own problems, tho.
Federated networks, where you join a server and servers can talk to each other (instead of directly running on the users device) are a middle ground.
On a server only network, like reddit, means everything is controlled by one entity (reddit).
With a p2p network, you have the problems I’ve described before (and lots more)
And finally, a federated network like lemmy exists in between. You join a server, but are not limited to that server. If you don’t like something in your server, you can join some other server or even mount your own, and still be part of the bigger network. With the rules you desire to follow!
You want to create Facebook and run it on your device? Or Twitter? How do you get posts if your device is switched off?