My wish list for P2P
I've dabbled with peer-to-peer technologies. I'm interested in the privacy, the ability to defeat censorship, the freedom from corporate control, and the potential for superior scalability and robustness over traditional client-server Web services. It seems there are plenty of projects out there, but none that has everything I would want. Maybe we potential users should have a discussion of what we want. I'll start by sharing my list:

On the architecture level:

I want open standards used as much as possible, particularly in regards to protocols.

I want identity based on a public/private keypair. An anonymous user can go just by his public key, or one who wishes to be known can use a variant of a vCard that includes his public key.

I want Onion routing, based on the public keys.

I want to be able to run completely distributed, with no central servers at all, but able to perform better with the aid of optional 'assist' servers. Such servers should be accessible both through the Onion routing and directly, so they can serve up seed nodes.

I want a cancelmoose for spam control. Its use should be optional and overrideable.

I want NO PUSH, except between friended identities, or to identities that opt in in to all push requests order to be search engines or some such. Even then, only push notifications, NOT whole documents.

Here's one that I've never seen discussed: I want minimal dependence on the Internet. If our Fearless Leader should decide to use that kill switch, we should be able to keep going? How, you ask? Here are some ideas: ad-hoc mode WiFi. Sneakernet (thumb drives) for static content.

Actually, all the alternative transports I can think only really work for store-and-forward, not for client-server. Store-and-forward is just less demanding of connectivity. But see what I have to say about static content and posts later. The more things we can treat as static pieces of content, the less dependent we will be upon the Internet.

On the application level:

I want to be able to plug in new services .

I want a Facebook style social networking system.

I want a Web (HTTP) server, with support for CGI scripting.

For the above two, I want an optional public gateway served on the Web, with configurable filter so we don't have to export anything we don't want exported. Running a public gateway needn't be an all-or-nothing proposition.

I want to be able to proxy selected Websites, like Tor, but with some per-site filtering so I don't get in trouble. What's risky to access in one country is okay in another, and vice versa. Reduce the risk, and maybe those few nodes in Germany won't be hogging all the fun.

I want a distributed cache for static content. This is important. I'm getting the impression that if a Diaspora server goes down, all its content is offline. I know it's that way with Tor. At least some of this can be cached by other identities' nodes. Freenet does this, awkwardly. Make sure each node can configure its own policy. Static content will be all digitally signed, so no forgery.

Let the caching happen by osmosis. Node A grabs static content X from node B, for reasons of its own, most likely to service a user request on node A. Then node B becomes unavailable. Along comes node C, seeking content X. It tries B, gives up, then polls all its friended peer nodes, one of which is node A. Node A sends content X to node C. Node C of course caches X, propagating it further.

Some nodes may opt to act as general caches, available to all identities, friended or not. Not to worry, there'll be a cancelmoose. Other nodes may opt to serve all nodes, but only cache selected identities.

Threads and comments should be pulled together at the client side, as in Usenet. This way each identity has exclusive editorial control over his own content, even if it's a reply to someone else's content, and each viewer can decide whose content he wants to see, regardless of where it is. By the way, each comment is a piece of static content, so it can be cached and distributed by sneakernet.

That reminds me. I want a per-client ignore filter.

Also, any replies not made by friended identities don't get automatically expanded. Just show their titles in small print, clickable.

A Bittorrent style file sharing app. Each chunk is a piece of static content, with all the benefits thereof.

General:

I want it easy to install and configure. Among other things, that means no reliance on funky, proprietary or corporate programming languages such as Java. How about GNU C/C++?

I want support for multiple platforms.

I want no changes in the protocol, ever, that aren't backward compatible.

An option to encrypt and hide the local cache, in case your computer gets seized by government thugs.

And I want all of this IN ONE PROJECT. Is that too much to ask?

    


The comments are owned by the poster. We aren't responsible for their content.



 

Created by Bottom Line Computer. Based on template 7dana...
Powered by XOOPS 2.0 © 2001-2007 The XOOPS Project  |  Design by 7dana.com