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

Conceptual Issue: How to have a public feed, @komrades, which is safe, encrypted, and not overrun with BS? #28

Open marxzuckerburg opened 3 years ago

marxzuckerburg commented 3 years ago

MZ, Sep 16: "Is writing to the entire world -- all @komrades, i.e. everyone who is using the app -- different from writing to a group? Is the social media 'public' just one big group chat? there's technical but also social implications to the question i think.

e.g. there's the technical challenge of how to combine end-to-end encryption (which is really about 1:1 communication between people who know each other) with group chats or feeds. There's a few workarounds to the problem, but the problem is always there, it seems. And that problem may be there even more if maybe especially if modeling something as big as the world. At that scale, is encryption even worth it anymore?

One idea would be to decentralize 'world' communication, and kind of combine the friend model with the follower model: all world-bound posts are sent end-to-end encrypted between any two people who have each other as contacts (each other's public keys). Posts intended for the world just never stop traveling through the contact networks until they've reached everyone. This is similar to how we're currently imagining group communication through a web of trust, except (a) posts intended for a specific group travel through network of X-vouched-for-Y, not X-is-a-contact-of-Y; and (b) posts to groups stop traveling once theyve reached eveeryone in the group, not everyone in the world.

There's still a lot to work out in how that 'traveling' would work out. But I like the idea of making something work for its 'virality'. Data isn't just stored unencrypted, accessible to anyone, in some giant database. Instead, a post is literally moving around between people who 'know' each other in some way. Copies of it would be everywhere, but none of them the same, because each is encrypted and locked away in a private language only 2 people can understand. Although the actual unencrypted post never exists as such in the data, a single post could still go 'viral' by moving around quickly, decrypting and reencrypting itself through the whole network."

marxzuckerburg commented 3 years ago

MZ, Sep 19: "For now, I decided to go for more centralized solution. (It's interesting by the way how design questions in this "socialist network" recreate political-philosophical debates within socialism: the role of a centralized state, e.g. vs more anarchist strains of socialism emphasizing decentralized governance.)

"Posting" basically means sending a DM to a special account, @.komrades who 'registers' as if a user on the same machine that the Operator runs oon. Like all DMs, when you DM @.komrades, the post is stored as you encrypted it end-to-end from you to that user. (But unlike other DMs, the message won't be deleted from the server as soon as you logs in to download it, but will stay up there for N days (set by you the poster?).) Then, if anyone sends a request to the Operator for the latest posts, then Operator boots up the account @.komrades (whose private key it has on the same machine), de-crypts the latest DMs @.komrades, then re-encrypts them from @.komrades -> the account requesting the posts, before sending them back over the wire to that account, where they're also stored as encrypted, until they're loaded and read on the client, in which case they're just decrypted on the fly.

So now we have two tiers: 1) DMing user to user, which stays private between those users, and where messages are removed from ASAP; 2) posts to world, which normally are read by anyone, although we can still play with setting certain restrictions (like blocking a specific user, e.g.). But we're still missing the middle tier: group chats, which I think actually could implement something more peer-to-peer, where if I post to a group, it travels through the social network of the network."

Any more thoughts on this?