[jdev] decentralized omniscience

Justin Karneges justin at affinix.com
Sat Mar 16 12:11:11 UTC 2013

In thinking about federated social networks, I started to wonder if certain 
features enjoyed in monolithic systems might not carry over very well to our 
world. There are many situations where Facebook tailors your view based on its 
all-knowing graph database, but these kinds of things may be hard to pull off 
when there isn't any all-knowing entity.

Take, for example, the case of viewing a Facebook post that contains many 
"likes". If any of your friends liked the post, then their identities will be 
placed in the data summarization of that post. This scales well, too. A public 
post which might have 10000 likes will still manage to include your 1 friend 
that liked the post in the summary.

I'm not sure if it's possible for these kinds of features to exist fully 
decentralized (or at least not without it being insanely complex), but we of 
course we don't want a wholly centralized system either. Maybe there's a 
middleground, whereby complex brainpower can be offloaded to special services 
dedicated to the task, without putting everything in that basket. I'm thinking 
of a model like the web and search engines. The web is functional without 
Google, but Google adds a lot of all-knowing value to those who wish to use 
it. So, perhaps services like Buddycloud could take care of all the storage, 
actions, federation, etc, but then separate smart searchy entities could be 
optionally integrated to augment the experience.

The reason I bring this up here is to discuss some protocol. I think all that 
is really needed for a system like this to work is for the smart entity to act 
as a proxy. So, when fetching a post, you'd send a request to the smart 
entity, which then requests out to the post source. If the post has 10000 
likes, then the smart entity would need to download all of these and create a 
customized summarization to be returned to the initial requester. Oh, and of 
course we'd need a way for the post source to validate that the smart entity 
can act on behalf of the initial requester. The smart entity should not have 
full access to everything, but only what it is able to see based its users. 
The end result is that there isn't necessarily any smart entity that knows 
*everything*, but perhaps several that independently know enough to get the 
job done for their users. Like search engines on the web, these smart entities 
of federated social networks could be proactive in crawling, subscribing to, 
and caching data, such that in many cases they will immediately have answers 
for their users without needing to proxy out every time.

Perhaps this could be accomplished with something like XEP-291 (to allow your 
JID to vouch for a third party JID allowed to act as you), and SHIM (for the 
proxied request to stamp who the original requester was).

Is that it? Can anyone think of a smart feature they've seen on Facebook or 
Google+ that could not be accomplished with this very simple protocol? Maybe 
there are some features that absolutely require a central entity?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.jabber.org/pipermail/jdev/attachments/20130316/a6cb6e47/attachment.html>

More information about the JDev mailing list