Sovereign: UnCensorable Social Media

Motivation

Like many, I have been very troubled by the rise in wide spread surveillance, psychological warfare and censorship of journalists and citizens engaging in any discussion at odds with the preferred national narrative. Certainly Snowden‘s revelations 8yrs ago left no doubt on the veracity of what many (including me) dismissed as conspiracy theories up until then as to the extent of the US intelligence agencies actively targeting the US citizenry leveraging deep ties to our major technology and media corporations. Naively I never expected the collusion between the deep state and our tech and media monopolies to accelerate so quickly, and publicly, from that point on. It reached a fevered pitch in 2020 as I found myself and others routinely censored for linking to peer reviewed research papers, expressing mainstream opinions with source material references, even being flagged as misinformation when linking articles published by and hosted on government websites that contradicted the narrative.

I have since closed down all of my personal social media accounts. I fear that at this accelerating rate I may soon come to look back and find that having expressed any opinions that challenged the position of the government or being friends with the wrong people may prove to be a liability to my career, my safety and my family. I am a victim of self-censorship now and have witnessed the violence and harassment of people whipped up by the steady diet of divisive media that is promoted on every channel these days. Tolerance, Diversity, Liberty, Free Speech have all become dirty words and, in my assessment, if we do not reverse course we need only look at the 20th century for countless examples of where this road leads.

With this stifling of public discourse and mandated double-think gripping the nation I sat down to consider how to design a system for those braver than I to be able to express their opinions openly, question authority, report the news freely and share information without requiring approval from government moderators and their authorized minders. It was a pretty tough nut to crack, but after about a year I now have something that I am submitting for public consideration that I have named Sovereign. I will not cover serious technical details here and will instead direct interested parties to the source code which I am now publishing and to my contact info on this website.

Why can’t it be censored?

Traditional systems architecture is such that the website handling your requests and your data exists as an opaque monolithic system controlled by the company that provides that particular service. Any central source of data is exclusively owned and managed by the provider and is only as safe as you trust the provider to act, or be compelled to act. Some “free speech” platforms out there are only free by policy where the company “promises” to protect your rights; ultimately though we have seen these companies fold under the threats of regulators. In another famous instance a major platform, the number one most downloaded app with over 10 million users was simply shut down by their hosting provider for thought crimes; And so even if a company keeps their promise to protect free speech, the government, and their actors, have other ways to squash dissent. We need to envision a solution that does not fit the mold of traditional systems architecture; trusting a provider company is simply not good enough. Immutability needs to be the foundation of the underlying technology and as you will see, the solution I present is completely absent a company behind the platform at all! Ultimately what we are looking to develop is a distributed application, one where there is no central authority that can coerce or be coerced, a democratized solution.

There are several examples of architectural models that are distributed/decentralized such as (some) blockchains, Torrents and IPFS. Several prototypes I built went down leveraging each of those technologies, some went quite far in fact. Ultimately though I settled on using GUN database which is really quite an incredible framework and allows you to put in place a robust event driven distributed database that the rest of the Sovereign application is built around.

Distributed?

When you and I Tweet something, each of our browsers send a request to Twitter. Twitter’s application, that is closed source and runs on their servers, authenticates who we are, inspects what we intend to say, and records a record for each of us in their central database that only they have access to. Their website reads their database and displays those tweets back as appropriate to others.

If Twitter were built using GUN though, you would write your tweet to your *own* database on *your* desktop or mobile device and broadcast to other users that you have added something, likewise I would write my tweet to my own database and broadcast. We would each “hear” each other’s broadcast and synchronize our databases if we followed each other. Using advanced cryptography we can devise clever mechanisms that prevent anyone from being able to tweet a message as someone else.

There is NO central application and NO central database, the data is the collaborative record keeping of all of the users. If I disconnect and someone wants to see my tweet, since you have it in your database and you are online you can answer the “request” for my tweet and now they have it in their database too to serve it up to others. This viral replication of data allows for data persistence and, using advanced techniques for merging updates, it keeps everyone in synch on the data that they care about without any central authority controlling the flow of information; Congratulations, you now own your data instead of a company!

At the application level, Sovereign is simply a webpage file that runs in your browser, there is no server and no company, just your regular web browser, that’s all. Furthermore I have posted this website file on IPFS which is an immutable (uncensorable) distributed file system. This means that not only is the website unstoppable, its distribution is unstoppable too, which is equally important to create a free speech platform that cannot be censored or taken down by authorities, be them government, corporate, criminal or some combination thereof.

What can you do on Sovereign?

The system is in a pre-alpha state but is available for you to try out right now! To be truly ready for widespread use would require a great deal of time from a team of dedicated developers. My goal was develop something to feel confident in its feasibility and to demonstrate the opportunity to others. By virtue of the architecture, this application is free, it is fully open source and it requires nothing but users with a browser; There is no way in which I can even think as to how to monetize it. With the release of this article it is now in the wild for others to decide if they want to take it further.

Screenshot of Sovereign Feed

Here are some features that are implemented:

  • LOGIN – Login with a username and password of your choice. If you lose your password you lose access to your account, so be careful. All cryptographic protections are built upon your id and password so the application enforces a strong password for account creation.
  • INIVITE – Share your account with others by sending them your link or a QR code using the app. There is no “find” a friend, anyone you follow must have shared their link with you.
  • FOLLOW – See a list of everyone you follow along with their feed of posts.
  • POST – Post content on your feed as either Private or Public where Private posts are only visible to those that you Follow and have actively clicked “Trust” on. Resharing posts not yet implemented.
  • MULTIMEDIA – Posts can include text, images and links and combinations of them. Images and links will automatically create a nice little swipeable / animated gallery on your feed rather than clutter it all up!
  • UPLOAD MEDIA – In Settings, you optionally can add credentials for Pinata which will allow you to upload pictures using IPFS (or have IPFS installed on your desktop, Sovereign will find it automatically and integrate with it).
  • LINK PREVIEW – In Settings, you optionally can add credentials for Link Preview which will allow the links you post to automatically feature a preview of the page for that link.
  • PROFILE – Upload a profile picture or change your displayed name.
  • COMMENT – Comment on any posts where you are trusted by the person who posted. Delete any comments you have made or others have made on a post of yours.
  • EDIT/DELETE – Delete or edit any of your posts (though functionality to convert a public to a private post or the reverse not yet implemented, got a little hairy with all the encryption so put that off to a later phase)
  • MOBILE FIRST – The site looks best on mobile and while it is responsive it is not yet optimized for desktop viewing.

Where is it?

Friendly link to the website in IPFS by bouncing it off my domain: https://ipfs.io/ipns/sovereign.rosolalaboratories.com

2022 Update: I have since stopped my seed server for this and IPNS link, the source code and IPFS hash are still available.

Full source code: https://github.com/rosolam/sovereign *While the React source code is thoroughly commented Git does not contain any overarching technical documentation. I am happy to fully document the system and application architecture along with a punch list of known defects, suggested features, and opportunities to harden if there is sufficient interest.

IPFS CID for the latest build of the website if you are interested: QmbXJXgSb3wuxNT87FuwGBUjj4yuSd4Avr9NVHYGhFErjQ

If you would like to follow my Sovereign account, just click this link to my feed or scan the QR below, create an account and follow me!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.