This is a thread I wanted to make for quite some time... namely since 2011 when the whole SOPA / PIPA / ACTA / CISPA madness started, as part of a massive plan to censor the internet. Like many others, I've been interested in a way to create a framework that would allow people to post what they want, without either an ISP being able to censor them nor the government being able to knock at a specific door and arrest someone for what they're hosting.
Most attempts to make this dream come true have been at networking level. Mesh networking in routers is an example of it being done through hardware, while TOR is an example of an attempt through software on existing devices. But all of these methods are either slow, unreliable, or unavailable for most people. So before this breakthrough happens, and people can create an internet that doesn't require ISP's and where your traffic can't be spied on, I've been thinking about different kind of platform. I'm a below average programmer, so I can't say I have the knowledge to do it alone... or maybe someone else attempted my idea already. In either case, I wanted to post about it and hear what people think, if this would ever be a viable project:
- The idea and functionality:
My idea is creating a full media platform, on which you can post text / video / music / pictures / web games, which could be used as either a blog or forum or journal or art site. In appearance it would be like most websites that accept submissions: You make yourself a profile with a description and an avatar and signature, you have an user page where you post entries consisting of any media plus a title and description, and on which anyone is able to make comments and can favorite entries. You should also be able to add friend and watch other users, as well as send them private messages. Eventually it should have most features found on Youtube, Google+, Facebook, Twitter, Deviantart, forums, etc.
Nothing out of the ordinary so far, the internet is full of websites with these features... but now we get to the actual magic: The idea is to use a structure similar to torrents for hosting the data... or an uncontrolled web hosting organism, for lack of a better term. The server would be an open-source program which any volunteer can download and run... same as bitcoin mining, running a node for a render farm, or running folding@home in the background. No single computer stores any data within this platform... each server downloads data from other servers and duplicates it, acting like a node. When a client wants to access a certain user page or submission, it simply types in the user's name or the name or ID of the submission, and downloads the data from all nodes that have that entry in parallel.
Obviously, if this was to reach a grand scale, the platform would contain terabytes upon terabytes of data. So each volunteer would need the ability to set a disk space limit, meaning the system would only clone and relay parts of that data. What category of submissions each node would clone can either be computed based on fixed criteria, or each user running a node can configure the preferred categories it wants to support... such as whitelisted and blacklisted submission tags. Otherwise each file should be stored and networked under compression, to further minimize storage and traffic.
The priority of files can normally depend on their date and popularity: The older a submission is, and / or the less it's accessed by other users, and / or the less it's +liked, the more servers defer it... until eventually all nodes in the world might delete it because that submission is of too little interest. By this policy, each node always makes a decision of the form "I will store this file for one more month, and if 10 other people don't access it from me until then I will delete it, although if more than 10 people take this file from me till then I'll keep it for three more months instead".
The biggest concern is obviously security; Anyone can modify the server software or hack the entries, to replace submissions with viruses or spam. This is especially a problem when an user logs into the network, since the mesh needs to decide if that's the real user. The solution would be an approach similar to what Bitcoin does: Whenever a user or node uploads or downloads something, several random and unrelated nodes must confirm that the submission has the correct file key, file size, and everything else that can be evaluated. The file which the user (viewing) or node (cloning) receives when accessing a submission shall be the one that the majority of nodes agree to. If one or more nodes argue that the file differs, the user should additionally be warned that the submission might be scammed.
Same for uploading and logging in: Your username + password + potentially a SSH key are evaluated by multiple nodes. If they all agree you are the correct user, the submission you're uploading is taken by the nodes you are in touch with, then soon spread to other nodes. Each upload should always be done on multiple nodes at once too, in order to reduce the chances that one node could fake it and let a modified file spread across the network. Needless to say, all and any networking should be done through OpenSSH and secure connections only.
An additional problem is that because such a platform cannot be moderated, people can also post fake content, using titles and tags unrelated to the submission. Only way to fight this is to have a button allowing people to report fake submissions and users that tend to post them... which when clicked by a lot of users, label that person as a spammer, removing their stuff from searches and deferring it to nodes.
The platform would also get used for discussable stuff... such as sharing copyright material or NSFW media not labeled as such. But to be honest, I wouldn't complain about this part... since the point is to destroy censorship after all. In my opinion all industries have to embrace openness at some point, as copyright simply can't be enforced the way some people want to over today's open internet.
- Why create this:
So I know this entire system might seem like a weird idea and overkill. The basic aim is to obtain a media platform which can't be controlled or censored by anyone. Any submission would be hosted by millions of computers worldwide: Anyone will be able to post what they want, without an authority being able to take it down or punish the uploader. The only way to take stuff down would be to arrest those millions of people for simply running the software, despite not even explicitly knowing what it's storing as it runs in the background... which would be too insane to happen. And since there's no specific IP address at "fault", countries under censorship like China would also be unable to do much to stop the content, unless they banned the software altogether... meaning this might also kill the Chinese firewall!
There is another good this system would do: It could combine all social media sites into a single one. If the system could offer everything Youtube and Facebook and Twitter and Deviantart and others do, under one account and a single consistent and open architecture, people would no longer have to use a dozen websites for relatively similar things. In fact, one great feature if such a platform existed would be to import your stuff from all of these websites... so even your existing posts are added to this new network!
I'd like to hear your opinions. Does a program like this exist, was one attempted, is one planned, or should it exist? What are the pros and cons, and how would you see it working out?