This is a rant about how a decentralized network for storing structured data
might look like.
The goal is to allow third party developers to build applications and services
that use it as a data-store and allow users to switch between any application or
service without loosing their data.
Any feedback is greatly appreciated. Flames, opinions, comments, rants, etc.
There are a lot of things that this doc doesn't touch. Communication protocols, APIs, Authentication, and a million more. I have been going through this for many years now and my biggest concerns are the ones that are described here.
I'd really like to hear what others think of these and how you'd go about solving any of these issues. Comments on the Github gist, HN, forks, emails, anything would be awesome.
Thank you for taking the time.
Let's get to it now, shall we?
We consume and produce huge amounts of data directly or indirectly.
Creating documents, sending messages, checking-in, etc.
Some of these data you share with friends, some with family, and some you keep
to yourself.
Let's get one thing straight: I don't have a problem giving away my data to Google, Facebook, or the next "evil-corp".
I use Gmail, Facebook, Google Drive, Dropbox; I use Slack, Wire, seventeen more messaging apps, and in the end of it all I don't really mind them having access to my data. If they get hacked or my data goes missing maybe I'll go the occasional ~ meh. Google Drive, Dropbox, and other services allow developers to use them to access your files or other data but that's about it.
I understand why I can't send an instant message, or a picture I just took to a
friend that is not using the same application I am.
Developers always want to provide the best experience, unique features, and
anything else they can provide to their users to keep them using their service.
It makes sense, monetization requires users. Happy users.
I like email; I really do. I get to choose where my e-mails are stored, I can setup my own server, others who want to contact me can use any email provider, any client, attach anything they wish to it. Email service providers and email clients all use the same protocols and standards but try to differentiate themselves from the rest of the market by focusing on features and user experience. The one thing I don't like about email is that many users are locked in a provider in fear of losing their email address, though having your own domain name solves this issue relatively easily. (ps. I don't like XMPP because it's an overcomplicated and bloated protocol that no-one wants to support.)
Email works nicely even after so many years because it's a protocol, it's standard and easy to implement and understand. Why can't we have something similar for the rest of our data? A protocol to share more than messages; images, location data, documents. Everything.