It's been almost three months since our last blog post. Don't worry, it's not because the project has been abandoned. That's not going to happen. We've been exploring different ways of decentralizing our platform to take advantage of the benefits of the blockchain, of which there are plenty.
1. No Concentration of Power
One of the biggest problems with the internet today is the amount of power that major companies have. Facebook, Google, Amazon and others hold so much of our data that they know more about us than we ourselves do. The problem is not necessarily the data itself, most of which is voluntarily shared on these platforms. Rather, the problem is that they own and hold full control over our data. They decide whether it should exist at all, who it is shared with and how much it's worth. Decentralized and distributed peer to peer network fix that by making the data exist redundantly on the device of every member of the network. This makes it impossible for any entity to act on its own.
2. No Censorship
Due to the aforementioned concentration of power, these platforms become the sole arbiters of whether certain content should exist at all, and reserve the right to remove anything at any whim (or complaint). On a blockchain-based network, it's impossible for any one entity to delete any content. The downside of that is that it's difficult even for the users themselves to delete the content they posted, as we'll go into further.
3. No Single Point of Failure
If Facebook shuts down tomorrow or their servers experience outages (as they do sometimes), their content is completely inaccessible. You can be sitting right next to someone and you won't be able to send them a message or a file, because the way most services are setup today is that the content has to go through Facebook's servers (in this example) before being routed to the person next to you. This was never the purpose of the internet or what its "founding fathers" had in mind. Centralization of power is a product of greed.
4. Works Offline
Since you no longer rely on a single server, you can connect to people around you directly, regardless of whether or not you have an internet connection. The internet, after all, is little more than one giant network connecting all the world's networks to each other. We often forget that since "internet" has become synonymous with connectivity. Running on the blockchain would allow Snip to work 100% offline, without any degradation of the experience.
With all that in mind, it seems like a logical conclusion to jump aboard the blockchain because it's the future, right? Well, probably in a few years, but not quite yet. And here's why:
Of course, most people tend to be against censorship, especially since Facebook, Twitter and YouTube started taking it too far. The natural knee-jerk response is to want no censorship at all, and let the community regulate itself. Obviously, that sounds perfect. It would probably work too. That said, the inability to jump in in the case of emergency to fix something is certainly a drawback that must be considered. There are objectively bad things that most if not all people would agree should not be allowed. In a trust-less blockchain, there's no way to enforce any kind of moderation - even if it's good. The common argument is that any possibility of moderation can be abused, but I don't think that eliminates the occasional need for it.
2. Account Recovery
Recently, Apple started retaining the authentication tokens for their two factor authentication (2FA) because too many people were losing access to their accounts and reaching out to Apple for help. So Apple decided to put convenience over privacy, which is understandable given their target audience that would rather leak than lose their data. In our case, our audience is (hopefully) different, but this is still a tremendous sacrifice of convenience that places a significant responsibility on the part of the user. At the very least, it should be considered a barrier of entry, if not a major drawback.
3. The Deal Breaker
The entire promise and lure of decentralization is to give users back control and ownership of their own data. Problem is, without a central authority that holds total control, nobody has total control. If you post something and then decide to delete it, it will only be removed from your device. It will remain on the network if even one other person decided to host it, leaving it completely accessible by everyone, until every single user clears it from their cache. I think this is a major flaw in the current implementation of blockchains that completely renders useless the concepts of privacy and control over one's data.
All that being said, I still see the merits of decentralization to outweigh the bad. I just don't want to force that choice onto my users. Instead, I'm going to implement a decentralized version that will run completely independently from the regular version. This way, users have both options. There's no ETA for this yet, but know that it's coming. Ideally, this version would work seamlessly with the regular version; allowing users of both versions to interact with no noticeable difference.
I'm also going to set up a .onion mirror of the regular version so that it can be accessed through the Tor network, for the more security conscious. I should note however that the regular version will be completely centralized, with all the benefits and potential drawbacks that come with that. We like to think we've eliminated the drawbacks by being good people, but I'm sure Facebook and Google also think that of themselves. It's never a good idea to put all your eggs in one basket, and we want our actions to reflect that philosophy by not forcing users to trust us.