Most of the dysfunction arises from users having to be on the service's turf.
It's the service's turf, so they call the shots.
The incentives of the user and the service align… but only up to a point.
The service optimizes for the user, but only to the extent necessary to keep the user active on their service.
Ultimately what the service optimizes for, obviously, is its own long-term interest, which is to engage the user as best as possible to keep them sticky and have eyeballs to beam ads into.
If users were on their own turf, where they called the shots, different dynamics could emerge.
Software used to be too expensive to grow yourself, so you had to go to someone else's turf to benefit.
Infinite software will change that.