[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?
Justin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.jabber.org/jdev/attachments/20130316/a6cb6e47/attachment.html>
More information about the JDev
mailing list