In this particular context, centralized vs distributed have to do with control over both storage and propagation of your data more so than its architecture. Or at least, the concerns over how to better control storage/propagation drive decisions about architecture. Twitter, Facebook, etc are centralized in this case. Your data goes to them, they propagate it, you have little to no control. Their system is designed around that. Identi.ca, rstat.us, diaspora are distributed. You control the software that holds the data and distributes it to others. Many designs are possible, even that which you design yourself.
Do these distributed platforms still have centralized components? Yes. There are lots of centralized pieces. Doesn't matter. Minimizing them is still the goal. Less is progress. It's not perfect; it's better.
What's stopping distributed platforms from overtaking centralized ones? The typical things: politics, lack of resources, high barrier of entry for non-tech folks.
Can distributed platforms do X? Yes. For example, the very usual: "But they can't handle spam!" Sure they can. Distributed platforms exist to share information. They can share blacklists. Share training data for spam filters. Ultimately, if they can distribute content, then they can distribute metadata. The only thing a centralized platform can do that a distributed one cannot is provide immediate global consistency... but considering most centralized services grow to the scale where they are internally distributed anyway, they can't even do that.
What do we need to do to succeed? We need software that is light, easily understood, easily augmentable, modular. Something that can easily and freely be deployed with minimal effort from a city's public library. Deployment on hosted or publicly available servers... or packaged on cheap hardware to be used in the home or taken with you. Hardware and deployment services that don't really exist. But creating the software may be the motivation to create them.
Who will build it? I've published research on distributed systems and distributed databases. I founded rstat.us with some friends which has had over 60 diverse contributors from around the world. It got some good, albeit small press, but OStatus (the protocol that rstat.us sits upon) is being superseded. So I'm working on this:
- https://github.com/hotsh/lotus-i18n - Support for social sentence generation for many languages/cultures
- https://github.com/hotsh/lotus - A discovery layer and data structures for distributed social graphs. It negotiates the protocol so many different distributed social systems can interact (which is the point, ya think?). (models)
- https://github.com/hotsh/lotus-mongodb - Small persistence layer. (models+db)
- https://github.com/hotsh/rack-lotus - Rack extension for interacting with the social graph and content generation as hypermedia over HTTP. (controllers)
- https://github.com/hotsh/lotus-site - Example site (hoping to pull much of the view/presentation logic into a separate repo)
Modular. Easily modifiable. Released as closely to the public domain as is possible (CC0.) With these combined, you can build any number or variety of distributed social web systems (image sites, photo album sites, hosting of web comics, flash games, blogging, etc etc etc.) Hopefully they will share a common deployment strategy so if you build a new thing, however unique, it will be just as easy to deploy from the point-of-view of somebody not very well-versed in technology.
So... Me. I'll do it. With some help. If you care, here is my gittip (I only need $250/wk to squeak by): https://www.gittip.com/wilkie/