a p2p desktop

By whilo

as i have promised last friday i am writing about a general problem one has to face when talking about desktop vs. web services war (e.g. google apps). it basically boils down that no desktop has yet stand up to integrate the internet deeply. sure you have clients for all kind of servers and you can use p2p apps for the typical file-sharing networks.

but basically clients cannot talk to each other and are not planned to. telepathy looks promosing, but it is only part of the plan (btw what happened to decibel development, seems stalled…). the technical problem is that desktop clients are not planned and not wanted to to propagate services to the internet. not only are they most often behind a nat, but it is also considered a security issue to open a general service to the net.

but i don’t think this really is the problem. the problem is rather the missing interest from desktop vendors to publish such a feature, because apple and ms both offer online services (read servers), too. this means that they are not interested in their users autonomy, but rather try to bind them as much as possible.

this is not true for the freedesktop[.org]. basically what comes to my mind is a general p2p service running on all desktops generally(!) and shipped and activated by the desktops by default. i have thought about a general xml messaging system oriented towards the jabber protocol maybe, which allows the integration of services on the application layer level (only one tcp port meta-service running). this means that the messaging protocol can address clients more specifically than by ip address, rather let’s say by jabber-id. this would allow a simple application layer proxy for lans which can either be addressed by a port forward or by running on the router itself.

don’t know if ipv6 would allow such a service without a proxy easily [will you by default get more than one ipv6 address from your provider in the future?].

jabber is very useful here imo, since it provides a central directory service for clients and still everybody can run their own servers, keeping your data private on one server by default.

1. take a social network for example. you can provide your fotos, webcam chat, group names, whiteboard, friends directory, and all the (cheap when it comes to ressources) stuff which is done by the large social networks (which themselves should be different services in this framework btw). of course it can happen that your machine is offline at a time, but generally the protocol can allow your personal mix of webservices/local services and it would be easy to build an external service which runs on your router. many dsl routers today offer internal/external filesharing as well (take the current fritzbox for example which has over 100gb). all the instant messaging stuff is already done in jabber, so it comes to mind to build linked in services around it…

2. take a p2p web-search like yacy. it would be easily possible to integrate large networks of desktop clients which all have a rather ressource friendly browsing proxy (or think of nepomuk/strigi auto indexing) running (and optionally an indexer, too) and propagating a let’s say 1-5gb db to the net. taken that kde allone has millions of desktops out there, taken a 10% ratio of actual clients, this would already give a good base for a free desktop search. and if it is well integrated into the desktop services/gui/metadata storage it would need no efforts by “joe the user” ;-)

3. take traditionional file sharing. you can easily share documents/multimedia stuff/videos … with your friends(and nobody else!). current highspeed internet links have enough upstream for this. it would be easily doable and a clear statement towards free information exchange.

but what about the netbook/smaller devices trend? in my last post there was the objection that google takes load from its customers by allowing to buy a cheap thin client to the web and then actually use google’s ressource to do your stuff.

but this is obviously not right. you mostly only get the storage from google. ajax apps still run in your browser and it would need tremendous computing power to centralize the desktop in the web (aka nxserver/vnc). basically you only sell your data out to the web services, but you still have to do the computing on your own (this also is true for the opengl browser plugin written by google to improve online gaming e.g.).

even todays netbooks are more powerful than desktops 8 years ago. and you can do all that easily with desktops from the last decade, the most important ressource is the network uplink. todays computers are enourmously powerful.

what do you think about it? i cannot do this on my own of course, but i would try to put a certain amount of time to this project, since i take my data serious.

cheers,

whilo

p.s. this blog has been written with bilbo, which has come a far way. pleasant to work with it so far, much better than the wordpress editor. so kblog is really of use and desktop clients are much better than web apps :-D . really.

23 Responses to “a p2p desktop”

  1. Beat Wolf

    I was thinking about the same thing. Make nepomuk network transparent. So that you can tag a file as “shared” or “shared with user X” or “shared with user X” and then when this other person uses nepomuk on his computer, he transparently sees the file. A few problems need to be solved of course. Security (i also mean network security, like encrypting all data that goes over the network), file transfer that does not suck (perhaps a torrent could be created each time a file is downloaded? not sure about this idea), and a way to easely add your friends (IP? jabber account? dyndns url? other?)

    If somebody implements this, kde got its very own darknet :) sounds great to me.

    This could also get somehow interesting with all the censuring and surveilance that is done more and more by the governements everywhere.

  2. Beat Wolf

    Ah i forgot. If this could be done in a crossplaform way, or at least cross desktop (gnome/kde), it would be even better.

  3. Jon

    Very interesting.

    KDE Brainstorm has a new proposal that is kind of similar:

    http://forum.kde.org/viewtopic.php?f=83&t=62450

    That would be supercool and the first real major advantage a FOSS desktop would offer.

    I have even crazier ideas. Lets use http://offsystem.sourceforge.net/ to backup every file from the (encrypted) home directory and the the package selection and have it mail all the offlinks (encrypted) to an online webmail.
    Once your system breaks you just reinstall give the restore programm the offlinks and _everything_ is back to normal (after a long download ;)

    I think the FOSS desktop should accel at data sharing and privacy much more than it does right now.

  4. jospoortvliet

    From what I’ve understood about Nepomuk, this is actually one of the things it is supposed to do. And the open/social desktop stuff Frank Karlitzcheck is working on has similar goals to what you are proposing, and the plasma ppl are in for this as well. I’m sure Frank wouldn’t mind some help ;-)

  5. Hey, this is a truly great ideas. I was thinking about that by myself. Although, I am not a developer.

    So, I think the logic might be this (sorry for non-professional terms):
    1. Everyone must have a sever under the hood of his desktop as one of the deskto services. Opera Unite proves that it it technically feasible.

    2. The server should be able to talk to other servers and services throug different plugins.

    3. The security migh be based around PGP encryption. For example, if I have my photo gallery and have 20 people linked to my server in a social network, only those who have the right digital signature (friends I know and explicitly allowed them) can view this gallery.

    4. This server should allow for P2P work, for example editing documents with KWord simultaneously and securely as in a darknet. This would be a killer feature, attracting many biz users to KDE.

  6. Roger

    I have been thinking about much the same ideas, but haven’t had any time to start experimenting with an implementation.

    - Some public key encryption for identification/authorization
    - AES 256 for data encryption
    - Anonymous protocol in the bottom (pre-shared public keys)
    - “service” APIs on top which implements the different needed functionality like search, file-transfer, and so on…
    - Cross-platform (of course)
    - Some kind of offline data transport would be nice too, optional for the services to use of course. Have been thinking of sending anonymous encrypted packages via e-mail.
    - Some way of propagating data if needed by the service, relaying through friends

  7. I have idea for a name for such project – let’s call it “spamers heaven”.

    “Hi! Mom. This is your son. I’ve lost password for my previous login, so that’s why I’m writting from this new one. I need you help. I’ve just put file ‘turn_my_machine_in_to_zombie.sh’. Could you run it for me? Thanks, love you!”

    “I know you’re trying to work and you’ve already turned off every single app on your desktop to stop getting messages from me, but really man, you just have to check http://viagggra.vallllium.com they’ve cheapest Viagggra I’ve ever seen. Oh! And don’t bother – I’ve sent this message through the service that was designed to ‘would need no efforts by “joe the user’ like you. They call it seamless and user-friendly integration. Cheers!”

  8. Jon

    OK, everybody seems to be too lazy to follow a link, so I will cut&paste from brainstorm:
    –snip—
    I think KDE should use its position as the “non-corporate”(not driven by companies) FOSS desktop and really facilitate secure data sharing among users.

    I believe the devs should look at http://retroshare.sourceforge.net/ which is a serverless encrypted decentralised cross-platform commmunication platform. It already uses Qt and could be integrated into KDE quite easily (guestimation on my part ;) .
    You have to exchange keys with your friends and then you are good to go.

    If it was integrated into all apps I could just share folders from within Dolphin/Konqi, share my music lib in Amarok. Share certain picture from within Digikam, sends encrypted messages, invite people to work on documents in KOffice etc. in a secure way.

    I think to do it in a secure encrypted manner is really really important. I also think the reliance on mostly open-desktop.org servers gives KDE a central point of failure and raises privacy concerns.

    Retroshare could also offer Facebook functionality (http://retroshare.sourceforge.net/forum … f=11&t=563).
    In my humble opinion sharing is an important part of FOSS/the community and it deserves better integration.

    I know this would be KDE only for now, but I think it is a great area to be pioneers.
    –snip—

    This wouldn’t be spammers heaven. And all the encryption and keys etc. are already there.

  9. whilo

    @BeCe *LOL* (real men don’t lol btw…)

    sure this is an issue, but this doesn’t address the actual problem. and you can avoid it easily. for example for instant messaging only use the current jabber sheme… + fine grained acls + …

    i don’t think it is hard to avoid general spamming.

  10. Beat Wolf

    I think from the responses here one could easely create a little team.. i don’t really have much time right now, but i have a kde svn account and could perhaps help out (probably i have more time in 2 months than now)

  11. bzhboy

    This is a nice idea. A source of inspiration could be the new fonctionnality of Opera browser : Opera Unite.

    @BeCe this clear that the security part should be implemented very carefully, wwith warnings to the user when he download executable.
    The best way to bypass that problem that I can imagine would be some “thrust evaluation protocol” :
    - each account on the network will have Public/Private key couple to identify it.
    What could be usefull would be to allow the other people of the network to indicate their degree of thrust on a peer. This information should be shared in the network (some servers may be required for that), so that when you mother get a connection invitation from this new user with no thrust big warnings appears (like “This user is not thrust by anybody on the network, so this may not be the person you think it is. Please contact that person (through email or phone for example) to have confirmation before to accept this connection. If you validate directly it may put your computer and your data at risk. If this user is not the one he claims to be, please signal it.”)

  12. Diederik van der Boor

    Having clients behave like P2P servers would be suck a killer feature for me!! :) e.g. quickly send a file to a college still happens by email here…

    If every computer would just automatically be able to communicate with others in the same subnet (e.g. file sharing, remote desktop, kword collaboration, watching the same presentation) we’d have a nice social/community feature we can build upon :)

    AFAIK Windows 7 is also doing these kind of things. (at least the file sharing part).

  13. whilo

    @Diederik

    of course lan sharing is nice, but definetly miss the internet connectivity feature. basically i think of sth. like ssh is for admins. an open port which can be assigned to your jabber id.
    for example new meta-information for joe@jabber.org -> user’s service 84.91.18.139:10384. then your client/service connects to that port and fetches sth. rss like as a service list available by this client: foto service, group list, shared files, whiteboard, friends list (jabber-id); it can then go ahead and connect to the jabber server to fetch public information about the friends and fetch the publicly availably information by them.

  14. Jerome

    What’s needed is

    distributed filesystem
    distributed storage system (like Wuala)

    Encrypted of course

    self sufficient as possible

    for this you would need a self hosting solution

    then you would need to retrieve, use and transform the uers’s data from those web apps. this is the most difficult part. how can we retrieve user’s data in useful manner.

    Look at what happened to Google Notebook.

  15. whilo

    @Jerome

    i am not thinking about a distributed file system yet. this is what yacy does too btw. we’ll even get a distributed linux file system with pohmelfs soon if i understand right.

    i am rather thinking about the problem of the general service infrastructre. you can share files without a distributed filesystem if you don’t offer services like the mentioned yacy search. think about a meta-service for desktop oriented p2p exchange, which then can include complex services like a web-crawler later.
    i won’t propose to store everything in a global filesystem aka a p2p cloud. this could be done for sth. services, but as i said one can do that later… now what is really missing is a general way/service of average desktops talking directly to each other over the internet. sth. which can only be force by the desktop environments as they have the need for such a service atm.

  16. Fri13

    Few words. OLPC’s Sugar interface and WLAN Ad-Hoc. It is impressive how OLPC Sugar allows all computers to build up P2P desktop. Share views, files and applications. Even send updates to other users.
    That is something what freedesktop.org should focus!

  17. Jes

    I was thinking about this some weeks ago.

    - You need a server (on your desktop or a seperated one). The IP adress needs to be your real IP, not a local one.
    - The server is needed for local clients and for recieving data.
    - The server returns a web app to local clients.
    - The server can recieve and store data from an external IP adress if the IP adress is added to contacts. This prevents spamming which would otherwise massively occur.
    - The web app contains html and javascript/jquery.
    - The web app can send data via jquery to other servers which on is only accepted if the IP adress is added to contacts.
    - The web app can send data via jquery to own server.

    This was my view about it. Maybe an other method is possible by using an other p2p technology so that you don’t have to have a real server?

  18. admin

    @Jes

    Fri13, haven’t thought about Sugar, but thanks great idea!

  19. admin

    @Jon thx that seems that points in the rigth direction.

    Sry have missed your comment in the queue yesterday.

  20. skierpage

    I can’t believe nobody has pointed this out:
    “i have thought about a general xml messaging system oriented towards the jabber protocol maybe”

    You are describing the technical foundation of Google Wave! It does your 1 (social networking) and 3 (ad hoc file sharing) in the context of a shared live-editable compound document with revision history. Judghing from their developers’ video, Google Wave will do these vastly better than existing sites, and I think it will be very hard for other systems to compete. The flaw seems to be that you’ll have to use Google to host and to search all the information in all the Waves to which you have access. So if the protocols are open as Google says they will be, then arranging a peer-to-peer “Openwave” where you use Nepomuk to do your own searching will be quite compelling.

  21. A wonderful article…. In my life, I have never seen a man be so selfless in helping others around him to get along and get working. I feel good that there are people like you too. Thanks for this great weblog of yours. Its surely going to get me to go to higher places!

  22. A wonderful article…. In my life, I have never seen a man be so selfless in helping others around him to get along and get working. I feel good that there are people like you too. Thanks for this great weblog of yours. Its surely going to get me to go to higher places!

  23. I think the FOSS desktop should accel at data sharing and privacy much more than it does right now.

Leave a Reply