0:00
/
0:00

What happened to the earlier version of Organ?

A deeper dive...
2

Hey friends <3 I recently posted this video update on Instagram and wanted to post it here too. I’m really excited and a bit nervous to share what I’ve been working on especially because the way I conceptualise it has changed so much. I also feel like I have SO MUCH to say about all these interlinked topics - social media, decentralisation, privacy, data sovereignty… I’ve actually done a lot of writing as I mention in the video but I mostly haven’t been sharing it with anyone. Which kinda sucks cos like why bother? I guess I’m struggling a bit with trying to on the one hand write in a way that is broadly accessible and on the other hand to try to contribute to a pool of really specific knowledge about stuff that most people don’t care about.

It’s funny I actually feel that way a bit about a lot of the political theory stuff I got into reading last year. I got pretty into this Marxist journal called Endnotes and started falling down a rabbit hole of somewhat obscure jargony academic but also super insightful and transformative and important analysis. And with all of this I’m a bit like… what do I do with this? I’m getting stuck in perfectionism and trying to ‘finish’ learning about stuff before I share it, which is impossible. I also got a bit put off Substack maybe? Like I kind of want to make my own substack but whatever we’ll get there. As they say start where you are! Anyway here’s a big essay, it’s a bit technical sorry but just wanted to get it all on paper! Thanks for reading however much you read - let me know how you go?

What happened to the earlier version of Organ?

In early 2024 I shared some early work on a privacy-preserving social media network oriented around event organising that I'm now calling organ-social. My work on this project was motivated by a desire to support activists and community organisers to become less reliant on corporate social media. I've since indefinitely suspended work on this project and wanted to share why.

The short story is that 1. building the proof of concept showed me that the design wasn't viable for privacy protection, combined with me deciding somewhat late in the game that 2. privacy protections were a non-negotiable feature. To add to this, I was (and still am) a relatively inexperienced developer, who had spent the better part of the previous four years working on what turned out to be a wildly overambitious passion project, having fallen victim to a combination of scope creep, naivety and a touch of righteousness.

What was organ-social?

The earliest iteration of the concept was called 'radical directory' and aimed at replicating something like radar.squat.net but with a prettier UI. In order of how my work on this progressed, I tried:

  • A Github Pages site with Netlify CMS, where data would be stored in a Github repo.

  • Self-hosting the popular forum software Discourse and trying to build a custom theme for it, in which organisations and events would be represented by 'topics'

  • Building a React frontend to the Discourse API, trying to use the forum as a kind of headless CMS

  • Self-hosting Directus headless CMS

  • Self-hosting Keystone headless CMS with a Next.js frontend

Over the course of these experiments, accompanied by research about the history of independent online media platforms, I started to grow wary of what it would mean to create another centralised platform that, due to network effects, would not only compete with mainstream social media platforms but also other independent projects. I quickly became an advocate for interoperability between platforms or at least platform providers, as in decentralised or 'federated' networks.

Radical Directory was also the name of a small volunteer collective of people interested in the role of online media in organising for social justice. When we talked about platforms, we envisioned the role of the collective as basically stewarding it into existence and governing the content on it. The collective was a bit dysfunctional though, because I was the only one interested in coding, I was kinda obsessive about it, I had a lot of confident and ambitious ideas about what I wanted to work on, but I was also quite reluctant to act as an organisational, rather than just a technical, leader. To be honest, the idea of governing a media platform for social justice organising actually scared me; I could imagine the high standard we would be held to by the community (with a name like Radical Directory no less), and I was also myself deeply skeptical of the non-profit industrial complex and the legal and economic ties that neutralise non-profits as political actors, but I also wanted to apply for a grant because God knows how else it was going to happen.

Perhaps it was partly this fear that motivated me to pivot to building a web app on a federated network. With no clear direction for the organisation to head in, it started to disband, and I continued mostly alone on my weird path. I wrote a grant application for some money from NLNet to create a social media-style app for event organising based on the Matrix protocol. The more obvious choice for social media was ActivityPub - in fact there was already such an application built on that network called Mobilizon (which I snobbily dismissed as ugly and uncool - sorry Mobilizon devs). Matrix's support for real-time applications was interesting to me, but I was mostly compelled by its claim to support for end-to-end encryption for large groups and the Matrix.org Foundation's early work towards a peer-to-peer version of the network. While I knew these complex features were somewhat beyond the scope of what I could realistically achieve in an application, I reasoned that if a simpler version of the app could take off, donations could potentially support me to build in these features in the future.

The grant application was knocked back, and I let the idea ferment for a while, but when the latest genocidal siege on Gaza began in late 2023 and radical social movements started feeling newly energised, I decided to try to build it anyway. That's what eventually led to organ-social, as well as a supporting client library simple-matrix-sdk because I was frustrated with Matrix's official JS SDK. I also ran the radical.directory Matrix server which I tested on and encouraged my friends to use with Element for a while, until they all got sick of its encryption bugs and Signal launched usernames (phone number privacy being the only edge Element had over Signal that was meaningful to my friends). I even got the app functioning to the point that I shared with my friends that the launch was coming soon.

What wasn't viable about it?

I worked really hard on organ-social, so I was reluctant to admit that in the course of building it I actually had learned enough about the limits of Matrix to know that my long-term ambitions for a privacy-preserving peer-to-peer application were going to be very challenging if not impossible to achieve on top of that protocol. It also didn't help that Matrix.org Foundation announced that they were cutting funding for their P2P Matrix project, or that I had discovered that there was an organisation in Europe, Acter, that was building its own app for activists on Matrix, or that I had been really struggling to pay the bills for myself and my family.

Moreover as I saw friends confronted with brutal political repression, and learned more about mass surveillance in general, the urgency of preserving privacy became central in my mind, and in that context I arrived at the opinion that my early stage non-privacy-preserving social media network was not only totally unhelpful to activists but potentially even harmful. That coupled with my conclusion, based on a deeper understanding of the protocol, that meaningful privacy required metadata privacy, which couldn't be built on Matrix (except potentially through a weird kind of overlay network which would then need its own protocol specification to be decentralised).

A P2P system for asynchronous messaging was also essential for the economic scalability of the network. Central servers are expensive, and both Signal Foundation and Matrix.org spend obscene donated amounts making their servers free to use. organ-social depended on not just the Matrix server but also an application service, which needs to be configured at the server level, meaning that not only was the server centralised in the near term, but it also couldn't really make use of the matrix.org server infrastructure.

What now?

As you probably saw, my new focus is on creating a platform for building static web pages and publishing them to the web, and offering a convenient interface to the hosting of those web pages as a paid service that can be made free to organisers and radical projects. Part of this decision is out of personal financial pressure: I am increasingly concerned that my unconventional education and the software developer job market collapse will only keep making it harder to get a normal job in the industry, and I am not so privileged to spend limitless time working on passion projects. I also feel that, compared to the previous iteration, this project is in terms of privacy and user autonomy more aligned with my updated goals for organ-social, and I'm very hopeful about taking this project in interesting directions that may ultimately just be a different, more viable route to the same destination. In particular I would love to explore peer-to-peer distribution of static web pages, and end-to-end encryption of those pages.

In terms of organ-social - the problems I described above are not just problems for the project of building a privacy-preserving social media network for event organising - several of them sit at the heart of significant ongoing research and development efforts to transform the way applications can be built and deployed in general. I want to share some of my learnings here about the state of the field and why these problems are so challenging, and what that might mean for this project.

Principles

The design of any system implies a particular understanding of the existence and shape of problems in the world. My learning and thinking in this area has converged on a few key ideas about what the problems are from a perspective that values:

  • local, place-based, relational understandings of life, history and sociality, as most exemplified in Indigenous cultures, and

  • social self-governance and autonomy arising from these relational bonds, and

  • regional and global governance arising from interepistemic and pluriversal relational bonds against heteronomy. As much as possible I have tried to cultivate an understanding of the role of technology in social life that is thoroughly rooted in a radical commitment to these values, even above the 'normal' values of liberalism and Western modernity that thoroughly saturate discourse about technology and knowledge as such.

These values are in my opinion aligned with technologies that privilege data on the user's device as the most authoritative source of truth for that user, and which ensure that all remote networked connections are secondary to functions that enable the user to use and manipulate that data. This is effectively the local-first principle for application development, and it also aligns closely with the notion of self-sovereignty.

Secure group messaging

While we can take the security of messages in transit to and from the server more or less for granted now thanks to the Transport Layer Security (TLS) protocol that underlies your 'https://' URLs, end-to-end privacy takes us to the essential next step of preventing the server itself from accessing the content of our messages. That said, the less we trust centralised services, the more technically complex these systems need to become to enable cryptographic (rather than sociopolitical) privacy guarantees.

Signal protocol is widely recognised for having set a new standard in end-to-end (E2E) privacy guarantees that can be offered in usable applications. As well as ensuring that each individual message is confidential, untampered, and verifiably from the sender, the protocol protects long messaging sessions against both past and future attacks, using two systems for updating cryptographic keys to achieve what is called forward secrecy (FS) and post-compromise security (PCS). Signal then extended their system for secure communication between two parties to the case of group messages, but they did so in a way that was relatively inefficient, making very large groups impractical. These issues have subsequently been addressed in extensive research culminating notably in the publication of the Messaging Layer Security (MLS) protocol.

To be clear, Secure Group Messaging (SGM) is not just about chat. In the abstract, messaging technically differs from communication in that it can be completely asynchronous, absent any requirement that both devices are online at the same time or directly connected ever. Chat is just one application of such a system: it could be social media, collaborative document editing, calendars, practically anything. When messages are combined with eventually consistent algorithms for converging on application state (or consensus algorithms, if transactional consistency guarantees are required), they can stand in for most functions traditionally played by a centralised database. A performant system for secure group messaging such as MLS, which by its nature needs to account for changes in the group as members are added or removed, with all the security features of Signal given above, can be considered the general case for privacy-preserving social applications. EDIT: Wait, I was wrong about this! See the next section for why.

Beyond messaging

That said, other kinds of applications do have different kinds of requirements. Collaborative work applications (like Google Docs, Notion etc) are another significant category, and a lot of research in recent times has explored the possibilities of building such applications based on ‘CRDTs’, or Conflict-free Replicated Data Types. I find this area of research really compelling as it essentially looks at how to merge changes to data without relying on a central authority, and in a way that doesn’t need users to be always online. Collaborative rich text documents and file systems are classic examples, and really important ones.

Applying the SGM security model to CRDTs is tricky though, because it’s kind of impossible and also kind of meaningless to try to merge changes to a document if you don’t have a shared understanding of what that document started as - so basically we can scrap Forward Secrecy.

On the other hand, collaborative documents do often need to keep track of access control - who is allowed to edit, who can delete, who can just read, etc. The research team at Ink and Switch are working on a project that applies a cryptographic capabilies model of access control to CRDT systems called Keyhive. I’m a bit bewildered by it but it’s also directly relevant to what I’m working on now with Organ so I’m really working on wrapping my head around it!

Metadata security

MLS still relies on a server to function though, and like Signal protocol still leaks metadata about messages to that server. This is a serious concern: such metadata has been used as evidence in the criminalisation of activists and can be deeply valuable for state intelligence agencies conducting social network analysis. We tend to not have to worry about this too often with Signal Foundation, but only because of sociopolitical conventions not to store our metadata within that organisation. Meta, which now uses versions of Signal protocol for its WhatsApp, Facebook Messenger and Instagram Direct Messages products, has by contrast happily integrated such metadata into their offering to advertisers.

Rather than securing metadata at the organisational level, we should be aiming to secure it at the application protocol level (i.e. various metadata-hiding cryptographic schemes) and/or at the network level, through anonymity networks (like Tor) or through reducing the exposure by reducing our reliance on central server infrastructure. Ultimately my interest is in the latter: making secure group messaging completely peer-to-peer, such that there is no infrastructural dependency on a central server that is inherently positioned to accumulate and exploit metadata. This would also serve to reduce the scope of attacks on the availability of that service.

Key Agreement for Decentralized Secure Group Messaging with Strong Security Guarantees is an interesting recent publication in this area, and I would be interested to see an implementation of their protocol (by someone with a lot more security expertise than me) that can compile to WebAssembly and run on browsers and other platforms. It's not by itself a metadata secure protocol to the extent that servers can optionally be used in this system to relay messages and can see who is speaking to whom, but it might be combined with anonymity networks to become one, and in any case the elimination of big central servers is a positive development.

Broadcast encryption

I'm also interested to learn more about using broadcast encryption as a more efficient alternative to (multidirectional) secure group messaging, for social media-like applications. Broadcast encryption schemes have generally depended on a centralised key escrow system, and only a small handful of papers have addressed distributed or decentralised schemes that remove this requirement. Distributed Broadcast Encryption from Bilinear Groups is a recent paper which made notable advances in the efficiency of distributed broadcast encryption.

Identity

Finally, identity and discovery are two essential components of social networking applications which have also typically relied on central services with privacy implications. Decentralised identity is a thorny problem in that it inherently bridges the gap between technological systems and the social expectations, practices and institutions that enable us to trust each other's identities. The publication of the Decentralised Identity (DID) standard is a solid basis for future developments in this area - it has, for example, (limited) support within the Authenticated Transfer protocol (ATProto) that underlies BlueSky.

DID provides a standardised interface to various decentralised registries via 'DID Methods', each with its own pros and cons. Many of the methods are blockchain-based, in a rare example of an application of that technology that actually makes some sense. Note that while some methods, like BlueSky's plc placeholder method, are just centralised registries, movement towards decentralisation (which is a spectrum) is the broader goal of the standard.

Discovery

Pudding - user discovery for anonymity networks addresses a usability problem in anonymity networks (like Tor) wherein short, human-readable user identifiers like phone numbers and email addresses need to be mapped to long, specific public keys, without exposing who is part of the network or who wants to communicate with them to network observers or to the central registry where those mappings might typically be kept. The authors' work is based on Nym anonymity network, similar to Loopix mixnet, which are themselves interesting and valuable developments.

Message availability (distributed storage and computation)

Centralising certain functions of a network or application to some dedicated server definitely makes many problems a lot easier to solve, and even workable for a privacy-preserving system via various cryptographic solutions. That said, servers are ultimately expensive to buy and run (or, as is most common now, to rent) and need to be funded by someone, and this dependency is itself a security risk in the long term for anyone hoping to rely on a system. In the capitalist system of resource allocation, it also constrains the development of software to paths that make economic sense for the developers, meaning that non-capitalist software is systematically not developed.

In my opinion the most promising general principle for the development of non-capitalist software is to make servers redundant, or put differently, to abolish the hierarchy between server and client, and this has more or less been the goal of most peer-to-peer developments. The main technical distinction between the two is that servers are highly available - assumed to be always online. Clients are mostly mobile devices which go offline all the time, and even when they are online, it can be tricky to establish a direct connection for various reasons. A goal for a peer-to-peer storage system might be that data (like messages) are highly available even when many of the peers are not.

There have been a lot of projects over the last few decades aiming to manifest this vision of an internet that doesn't need servers. BitTorrent protocol was obviously very successful for file sharing, and IPFS has expanded on this over the last decade. Beyond just file sharing, various peer-to-peer apps or app frameworks have been promising: Hyphanet (fka Freenet), Secure Scuttlebutt, Holepunch (fka Dat), Briar, Cabal, Holochain, Veilid, IPVM, and Iroh, to name a few. I'm personally really interested in the new version of Freenet (yet to be launched) for various reasons.

My hope for a peer-to-peer app framework is that there can be a network of nodes that can function as relays for each other's application messages, even if the nodes are not all using the same applications. Creating such a network that works at all, and also doing so safely and with enough modularity for developers to be interested in building a variety of applications on the platform is tricky to say the least.

Conclusions

There is of course a lot more to dig into on all of these topics but I'm going to leave it there for now. Working on Radical Directory and organ-social has been a humbling experience, which is definitely good. I have so much more appreciation for complexity and expertise around privacy, distributed computing, and for the actual expert developers that have dedicated so much of their lives to building open source software in support of such ambitious goals as building privacy-preserving peer-to-peer tech.

I know that I need to focus on taking baby steps for the moment and particularly on getting some kind of income stability that can hopefully serve as a foundation for me to pursue more achievable, specific goals towards the broader visions outlined above.

Discussion about this video

User's avatar