Thursday, April 8, 2010

Nepomuk & Social Networking: The Golden Opportunity

After reading an article on Boxee recently which described it's social network integration it occurred to me how wonderful this would be to have for KDE. Having tags and ratings on the desktop is a really nice thing, but having tags and ratings coming through for arbitrary pieces of information from your "friends" makes things quite interesting.

From the Boxee example, why can't I see that Fred has also scheduled to watch Program-X. At the moment such recommendations are handled by many folks through IM or email, which is quite kludgey to say the least. There is no simple click to record or accept a recommendation, you have to mentally context switch to the TV schedule and update.

One thing that makes this all come together is not thinking of tags or ratings as binary or a single 1-5 range. To quote my own code, if a tag is able to also record the thoughts of many actors as a range, say a double from 0-100, and each actor has a level of trust associated, then the system itself can infer that if Fred is watching something and it is rated SciFi then automatically I want to take a peek too. By allowing tags and ratings to capture more complexity behind the scenes, the computer can infer more for us, and part of that can be a traditional 1-5 rating or whatever... hey, I work on virtual filesystems, is it really that strange that I would want to virtualize file ratings too?

The big gain here is if KDE itself can provide the spine for this. In my own system I stopped short of being able to automatically distribute these tag and file ratings. Surely they can be sent to other libferris systems and integrated, but that process, and the one of tracking friends and assigning privileges to them is not 100%.

Combining RDF with the social network element is an interesting chance here IMHO. Perhaps a central server of sorts is only really needed for tracking the privileges and assigning friends, and a p2p protocol can then be used to actually transmit the RDF you have decided to share to your associates. Though a fully central server implementation would probably provide a quicker starting point. As an upside, this would allow syncing RDF between many of your own devices -- tags from the desktop appearing on mobile devices when the VPN is up.

Of course, information sharing would have to be explicitly condoned by the user, and public key crypto would be needed to ensure integrity, privacy, and authenticity etc.

This sort of thing extends nicely to audio and image apps like Amarok and KPA. If I give somebody a copy of some images I took of London, when I add tags, they should also trickle through the system to them. If they are looking at a photo of the Wigmore Hall I took, they might like to know more about that place, and perhaps which CDs I have of chamber music from that trip.

This is something I'd love to hack on when I get the chance. In the meantime I thought I'd drop the idea here in case there are other folks who are also interested and we can combine forces.


Vishesh said...

It seems like what you're talking about is "Metadata Sharing", which is one aspect of my GSoC proposal. :-)

Aditya Bhatt said...

I'm working on automatically (as in face recognition) assigning tags to faces in photographs, for digiKam. Hopefully I'll get to work on it for this year's GSoC - after that I'll be attempting nepomuk integration.

So it'd be nice to have friends' photographs show up when you search for their names :)

Unknown said...

@Aditya: There is already a playground project for taging photos with contacts from your addressbook a la facebook. Are you planing to take advantage of that too?
@monkeyiq: Having this information in nepomuk would easily allow the person tagged to be notified of that. No need for server, just the regular e-mail/i-messaging notifications or the (new?) nepomuk friend stuff...

Aditya Bhatt said...

@Luis Yes, that project IS going to be used. However, as of now, it does not even build.

Anonymous said...

Have you checked FOAF+SSL yet? GNU Social is planning on making us of it and it seems to me it could work for this as well.

Anonymous said...
This comment has been removed by a blog administrator.
monkeyiq said...

@Vishesh: I'll have to keep an eye out for this project.

@Aditya: This sounds extremely cool and quite useful. If only there was some URI that I could just tell Firefox to monitor these things and report the RDF back to me :)

@hook: I'm RTFMing now. It would be nice to be able to avoid a central server, which FOAF+SSL seems to be geared at. Of course, you would have to grep the web for foafs and add something to your profile file to allow the engine to work out how you want your RDF notifications delivered (p2p, a REST URL etc).

stphen said...

Social networking sites are immensely popular, New networking sites offer users’ profiles greater prominence. and more opportunities for front page features. This is a wonderful venue for artists to share videos and news.
for more information:
social networking

skierpage said...

"you would have to grep the web for foafs"

There's the rub. I got excited when Google announced it would read microformats; just mark up your blog's 1-star review of a movie with the hReview microformat, and your movie review would be liberated from Amazon.

But... most people don't blog, more share with friends on social networks, or they tweet. Google doesn't have access to my social networks (much as they'd like everyone to overshare), and microformats don't fit in a tweet's 140 characters. Besides, even if I'm willing to contribute to global "This movie sucks" sentiment analysis, what I really care about is what my friends and favorites like, and your "a central server of sorts" that "greps the web" becomes another social network that I have to trust to know my circle of friends.

I don't know what the answer is. I sometimes don't want to give up privacy, and I don't want the walled garden of Facebook (or a new central server) to dominate this space.

I vaguely thought running your own web spider that logs in as yourself to a bunch of sites and services that in turn provide friends' metadata in an open but secured format is the right approach. Your idea of "a p2p protocol can then be used to actually transmit the RDF you have decided to share to your associates" might be a better alternative. Either way it's a vast complex undertaking, good luck figuring it out!

The precursor to this are local tools that let you make easily make semantic statements ("I rate the movie Hancock 1 out of 5", "Ben Martin is in this picture") then let your control who gets access to that information, and as a result e-mails it, blogs it, tweets it, puts it on your metadata-sharing P2P network, etc. That seems like a role for Nepomuk/Akonadi/RDF buzzword-enabled KDE apps!

Anonymous said...
This comment has been removed by a blog administrator.