ComradOrg / Comrad

A socialist network: encrypted, insurveillable, unmontizeable, and self-governing. App is written in Python. (Calling all socialist programmers for help!)
https://comrad.app
Other
196 stars 6 forks source link
encryption kivy mobile-app python social-network socialism socialist-network surveillance-capitalism surveillance-state tor

Comrad

Comrad is a socialist network: encrypted, insurveillable, unmontizeable, and self-governing. Meet fellow comrades and message them securely, organize safely into self-moderated groups, plan demonstrations secretly and spontaneously – and help fight back against the police state and surveillance capitalism, both online and off.

Why another social network?

Is a 'socialist network' possible? Although the internet began with anarchic design principles, it quickly consolidated into the hands of a few of the largest corporations in the world. It has effectively recreated the capitalist mode of production within itself: the means of content production (social media platforms) are privatized while the work of production (posting) remains socially distributed. Exploitation inheres in that relation, whether in the industrial factory or the digital platform, because the value you produce is taken from you, concentrated and privatized.

But a digital network can be redesigned. The technology behind these social media platforms is actually quite simple. We can easily build our own social network, one which is secure, insurveillable, and unmonetizable—one which would give people the security they need to communicate about whatever they want, including protesting against capital and the state.

Core principles

Confidential

All of your data are strongly encrypted end-to-end: only you and those you write to can decrypt and read it. To anyone without the right decryption 'key', the data is nonsense.

Untraceable

All network traffic is routed through Tor, a "deep web" of computers so dense even the FBI can't follow you through it. Comrad's "Operator" or central server is accessible only from Tor. It's impossible to tell who is sending what to whom, or even who is using the app at all.

Unmonetizable

What's untraceable is also unmonetizable: your data can't be harvested by technology companies and used for advertising algorithms. You're protected from both surveillance capitalism and the surveillance state.

Democratized

Group accounts or 'collectives', like @portland or @socialists, grow as existing members 'vouch for' new ones, forming webs of trust. In order to join a group, at least one member must vouch for you; this minimum (or 'quorum') may grow as the group grows, or in accordance with a 'constitution' which the group votes upon.

(Semi-)decentralized

Data is deleted as soon as possible from Comrad. Comrad's "Operator" simply sorts and holds the mail temporarily: as soon as users log in to download their mail, the messages are deleted from the server and network forever.

Open-source

Information wants to be communist.

Anti-profit

Not just non-profit, we're anti-profit.

Social media features

We present a simplified set of social media features drawn from everything that's out there:

Profile

Posting

Organizing

Messaging

How is this different from ...?

See "Comparison of alternative social networks" on the wiki for an attempt at a systematic comparison. (And please help edit, if you can! The data there is a little incomplete and probably a little inaccurate.) But here are some imagined differences:

Progress

Animations from mobile/desktop app

Registering and connecting through Tor

GIF animation

Navigating posts

GIF animation

Animations from terminal app

Connecting through Tor

GIF animation of Tor connection

"Meeting" (exchanging public keys)

GIF animation of meeting process

Messaging

GIF animation of messaging

Posting

GIF animation of posting

Usage

Install

...on Mac OSX

Download and run this installer.

...on Linux

Open a terminal in Linux, and copy and paste the following line into it:

bash <(curl -s https://comrad.app/run)

That's a shortcut to this auto-installer script. It installs Comrad in a virtual Python environment in the folder "comrad" in your home directory.

...on Windows

Unfortunately, Windows is not yet supported. We tried and tried, but cannot get everything to install correctly on either Mingw64 or Cygwin; and we also haven't yet been able to package a complete binary release with pyinstaller. If you are a developer, please lend a hand to support Windows. The current attempt at a windows installation is located here.

Run

...on Mac OSX

Install as above.

Run "Comrad.app" in your Applications folder.

...on Linux

Open a terminal in Linux, and type:

comrad-app

If that doesn't work, try:

~/comrad/code/bin/comrad-app

Running terminal client

For the terminal client (which may be broken at the moment), run:

comrad-cli   # or: ~/comrad/code/bin/comrad-cli

Running server (development only)

To run The Operator server (for development purposes only), run:

comrad-op   # or: ~/comrad/code/bin/comrad-op

Details

Frontend

Mobile/desktop

The mobile/desktop app is made with KivyMD, a variant of Kivy, a cross-platform app development framework in Python. Python is an easy and versatile progamming language to learn, which keeps the code accessible to as many people as possible. Code for the app is in comrad/app.

Terminal app

Vanilla Python. Code is in comrad/cli.

Backend

API

Plain old object-oriented code in Python. The root entity is a "Keymaker": anyone from @Telephone, to @Operator, to users, to groups, who has a public/private key pair. The database uses a simple file-based key-value store using the Redis protocol: rlite, via its rlite-py Python bindings. All code for backend/API is in comrad/backend.

Cryptography

We are using Themis, a high-level cross-platform cryptography library, for all cryptographic functions, rather than handling any primitives ourselves. Installing it from packages is tricky, so right now the auto-installer builds it from sources.

Crypto-related code is primarily in: