How do you decide who has access to what? Will it be somehow encrypted, so that only a subset of my contact list could get access to a part of it?
Would I be able to move all my data to a different server if I decided it is no longer trustworthy?
Think of the architecture like your email provider: You can always grab your mail spool and find a new provider. buddycloud is not dissimilar - just grab your posts and followers from the API and import them on a new provider. We're make this easier soon but, the data and endpoints are all there to facilitate it.
I'm not sure that Diaspora has a defined server-to-server API or a client API (can someone more aware of their progress comment). On buddycloud Each domain runs an HTTP API server (https://buddycloud.org/wiki/Buddycloud_HTTP_API) that clients can connect to on their home domain (eg if you are james@giantpeach.com, you connect to something like http-api.giantpeach.com). And servers use XMPP to exchange between one another.
Then there is Tentd. I like what they are doing. I think their approach is that every user is a server (your id is http://me.domain.com). I'm not quit sure how they federate or resync messages when nodes go down. Can anyone comment on how they federate?