Things like Facebook arose mostly because of gaps in the basic HTML/HTTP infrastructure.
A great example is that HTTP has no native concept of a persistent user across servers. An HTTP request can encode what machine address a request came from but it can’t tell you, at the protocol level, what person it came from. This means that the only unified view you can get of a person’s activity is at the server level.
Were we building the Web today, we could probably do this differently. In our Bitcoin/blockchain world it is not hard to imagine a scheme where your identity exists outside any particular server, written and maintained in a million different ledgers.
In such a world, Facebook wouldn’t look on it’s own servers to see if you had access to it. It’d look to the distributed ledger to see if it had access to you. Such a scheme might have allowed more integrated services to have arisen, and would have mitigated against the rise of supersites like Facebook and Google.
When I talk like this, sometimes people get a bit frustrated — this wasn’t possible in 1991, it didn’t get done after that, and it’s not going to happen now, so what’s the point?
The point is that if you understand the gaps that made Facebook possible (instead of just assuming Facebook used evil magic to get everybody on it) you can work to address those gaps. We’re not going to get a blockchain user identity scheme in HTTP at this point, but understanding the identity issue has allowed companies like Known to propose other solutions (such as a site that uses a combination of syndication and other technologies to build a makeshift identity server that can service Facebook, Twitter, WordPress and other sites from a central location.