The Correct Line

A History of Software Development at the Adelante Collective, 2018–2025


The Adelante Collective was founded in Oakland in the spring of 2018 by seven people who had left their jobs at technology companies and who believed, with the specific fervour of the recently radicalised, that the problem with software was not technical but structural. The means of production were owned by capital. The workers were alienated from the product of their labour. Code review reproduced managerial hierarchy under the guise of quality assurance. The open-plan office was a panopticon. All of this was, in their analysis, inseparable from the fact that the software itself was bad — bloated, extractive, hostile to its users — because software built under conditions of domination would inevitably be dominating software. The revolution, if it came, would need to be deployed.

The founding members had between them roughly forty years of industry experience, which they discussed with the complex ambivalence of ex-Catholics describing their time in the Church. Maya Chen had been a staff engineer at a payments company. Tomás Herrera had led a platform team at a social media firm whose name he would no longer say aloud. Jess Okoro had written infrastructure tooling at a defense contractor, a fact she disclosed at the first collective meeting with the gravity of a confession, and which was received with a silence that contained, in roughly equal measure, judgment and respect. The others had similar histories. They had all read their Graeber. Several had read their Marx. One, a quiet man named Phil who maintained the collective’s only server, had read his Kropotkin, and the distinction would become important later.

The collective’s initial structure was simple because the collective was small. Decisions were made by consensus at a weekly meeting held on Wednesday evenings. All code was collectively owned — not in the open-source sense, which they regarded as a liberal recuperation of the commons, but in the sense that no individual’s name appeared in any commit history, authorship being a bourgeois concept that obscured the fundamentally social nature of production. Commits were attributed to “adelante-collective,” a shared identity that appeared in every git log like a small flag planted in the substrate of version control. The seven members worked on a suite of tools for mutual aid networks: a resource-sharing platform, a logistics coordinator, a communication system designed to be hostile to surveillance and, as it turned out, to usability, though this was not initially recognised as a problem because the collective’s user base consisted primarily of other collectives with similar politics and a correspondingly high tolerance for friction.

The first year was, by all accounts, productive. Seven people who know what they are doing and agree on why they are doing it can accomplish a great deal, and the absence of product managers, sprint ceremonies, and quarterly OKRs removed a quantity of overhead that the members experienced as physical relief. Code was written, reviewed in collective sessions that resembled seminars more than stand-ups, and deployed when the group felt it was ready. There was no velocity metric. There was no burndown chart. There was, on one occasion, a cake, brought by Tomás to celebrate a successful deployment, though the celebration was brief because Jess raised the question of whether celebrating deployments centred engineering labour over the labour of the users who would actually use the software, and the group agreed to table the question of celebration for further discussion, and the cake was eaten in a spirit of provisional enjoyment.

The difficulty began, as it does, with growth. By the end of 2019 the collective had twelve members. By mid-2020 it had twenty-three, the pandemic having produced a cohort of radicalised tech workers looking for alternatives and finding Adelante through a network of zines, Signal groups, and a talk Tomás gave at a conference that he attended, he was careful to note, not as a speaker in the bourgeois sense but as a worker sharing knowledge with other workers, the distinction being important to him if to no one else in the audience.

Twenty-three people cannot make decisions by consensus in a Wednesday evening meeting, or rather they can, but the meetings last four hours, and the consensus achieved is of the kind in which everyone agrees because everyone is too exhausted to disagree, which is not consensus but attrition, and which produces decisions that no one is committed to because no one can remember exactly what was decided, only that it was late and someone had been talking about dependency injection for forty-five minutes.

The collective’s response was to form working groups. This was presented as a deepening of democratic practice — smaller groups could deliberate more effectively and bring proposals to the full collective for ratification. In practice, it was a division of labour, and the moment labour is divided, the question of which labour is more important becomes the structuring question of the organisation, regardless of whether anyone acknowledges it. The Infrastructure Working Group, which controlled the servers, the CI pipeline, and the deployment process, became, within six months, the de facto executive of the collective, because no code could reach production without passing through infrastructure, and the infrastructure group’s decisions about what was “ready to deploy” were, functionally, decisions about what the collective would and would not build. Phil, the quiet Kropotkin reader, who had maintained the server since the beginning and who now led the infrastructure group by the authority of seniority and competence and the fact that he was the only person who understood the Ansible playbooks, became the most powerful person in the collective while remaining, in every formal sense, an equal among equals. He did not seek this power. He did not enjoy it. He exercised it through the passive mechanism of being the person who had to say yes before anything happened, which is the purest form of authority and the most difficult to challenge because it does not look like authority. It looks like ops.


The first split — the collective would eventually call it the First Contradiction, in a vocabulary that had by then become self-sustaining — originated in what appeared to be a technical decision and was, in fact, a political one, though the collective would have said that every technical decision is a political one, which was true, and which made it no easier to resolve.

The question was whether to rewrite the resource-sharing platform in Rust.

Maya argued for the rewrite on the grounds of performance, reliability, and memory safety. The platform was written in Python, which she described as a language that “lets you move fast and break things,” a phrase she used with deliberate irony given its provenance, and which she argued encoded the values of the Silicon Valley it had emerged from: speed over correctness, individual expression over collective discipline, a tolerance for breakage that was, when you examined it, a tolerance for imposing the costs of breakage on others. Rust, by contrast, demanded rigour. The compiler would not let you proceed until you had accounted for every possible failure. It was, Maya said, a language whose values were aligned with the collective’s: it required you to think about consequences before acting, to make your assumptions explicit, to submit to a discipline that was not imposed from above but was inherent in the material itself. She did not say that Rust was a socialist language. She came close.

The opposition coalesced around Tomás, who argued that Rust’s learning curve was itself a form of gatekeeping. The collective’s membership had expanded to include people who were not professional programmers — community organisers, a nurse, two teachers — who had learned enough Python to contribute to the codebase and whose participation would be foreclosed by a transition to a language that required, by Tomás’s estimate, six months of study before one could write a functioning program. The rewrite was, in his analysis, a recentralisation of technical authority in the hands of those who already possessed it. It would reproduce, within the collective, the very hierarchy the collective existed to abolish. Python was democratic. Rust was vanguardist.

The debate consumed three full meetings and generated a forty-page discussion document that was posted to the collective’s internal wiki under the title “On the Language Question,” a reference that at least four members recognised and that gave the debate a weight it might not otherwise have acquired. The document contained, in addition to technical arguments, citations of Lenin on the relationship between professional revolutionaries and the mass movement, a passage from Freire on the pedagogy of the oppressed as applied to compiler error messages, and a footnote — contributed by Phil, characteristically, from the infrastructure perspective — observing that the CI pipeline would need to be rebuilt regardless and could someone please decide so he could plan the work.

The consensus process failed. For the first time in the collective’s history, a proposal was brought to a vote, a mechanism that the founding documents described as “a measure of last resort indicating a failure of collective deliberation.” The vote was thirteen to ten in favour of the rewrite, but the minority — Tomás’s faction, which had by now acquired the informal name Los Accesibles, or among their detractors, the Pythonistas — refused to accept the result on the grounds that the majority had used their technical expertise to dominate the discussion, which was a form of what the collective’s conflict resolution protocol called “epistemic violence.” Maya’s faction — which did not name itself, a fact that Tomás’s group interpreted as evidence of a cadre mentality that did not need to organise openly because it already controlled the means of compilation — responded that declining to adopt better tools because some members could not use them was paternalism, not solidarity.

The Rust rewrite proceeded. Four members of Los Accesibles stopped contributing code. Two left the collective entirely. Tomás remained but shifted his energy to what he called “political education work,” which consisted of a weekly reading group on technology and liberation that met on the same evening as the infrastructure working group, a scheduling conflict that everyone understood and no one acknowledged.


The reading group became, within a year, the second centre of power in the collective, a counter-authority whose influence operated not through control of infrastructure but through control of interpretation. The group read Haraway, Winner, Noble, Eubanks, Benjamin. It read the Frankfurt School on the culture industry, which Tomás applied to the npm ecosystem with a rigour that would have surprised Adorno. It read, in a session that lasted three weeks, Stafford Beer’s work on Cybersyn, and emerged with the conviction that the Chilean experiment in cybernetic socialism represented the correct model for the collective’s technical architecture — a real-time system in which information flowed freely and decisions were made collectively on the basis of shared data, as opposed to the current architecture in which Phil’s infrastructure group decided what got deployed and everyone else submitted pull requests into a void of uncertain review timeline.

The reading group’s proposal — a complete restructuring of the collective’s governance around a “cybernetic council” that would replace the working groups with a rotating assembly informed by real-time metrics from the codebase and the user community — was presented at a Wednesday meeting in March 2023. It was a serious proposal, thoughtfully constructed, and it was also, unmistakably, a bid to displace the infrastructure group’s authority by replacing the question “is this ready to deploy?” with the question “does the collective’s data support deploying this?”, a reformulation that appeared to be more democratic and was, in practice, a transfer of power from the people who maintained the systems to the people who interpreted the data, which was the reading group.

Phil’s response was the longest statement he had made in the collective’s history. He said that the cybernetic council proposal was theoretically interesting and practically impossible, because the collective’s infrastructure was held together by Ansible playbooks that he had written over five years and that no one else understood, and that the proposal’s implicit assumption — that infrastructure was a solved problem that could be administered by a rotating council consulting a dashboard — reflected a misunderstanding of what infrastructure was. Infrastructure, he said, was not a system. It was a relationship. It was the accumulated knowledge of every production incident, every failed deployment, every 3 AM alert that he had responded to alone because no one else knew what to do. It could not be rotated. It could not be cybernetically managed. It could be learned, over months or years, by someone willing to sit with him and absorb the knowledge, but the proposal did not include a knowledge-transfer plan because the proposal did not understand that there was knowledge to transfer. It understood infrastructure as a political problem. It was a political problem. It was also a problem of knowing which Ansible playbook to run when the database connection pool is exhausted at 3 AM, and no amount of Stafford Beer would help with that.

The meeting ended without resolution. The reading group and the infrastructure group stopped attending each other’s sessions. Communication between them occurred through intermediaries, of whom Jess Okoro was the most active, shuttling between the two factions with the weary pragmatism of someone who had managed classified projects at a defense contractor and found the collective’s political dynamics less opaque than anyone was willing to hear.


The final split — the collective called it the Fork, using the technical term with full awareness of its double meaning — came in October 2023, over a question so minor that it functions, in retrospect, as proof that the real dispute was never about the presenting issue.

The question was whether the collective’s software should include telemetry.

Maya’s position was that anonymised usage data was necessary to understand how the software was being used and to allocate development resources effectively. Tomás’s position was that telemetry was surveillance, that anonymisation was a liberal fiction, and that building surveillance into tools for mutual aid networks was a betrayal so fundamental that it called into question the collective’s entire political orientation. Phil’s position was that he did not care about the telemetry but that if they added it, the events would need to go somewhere, and he was not setting up another Kafka cluster.

The debate lasted two meetings. At the end of the second, Tomás announced that Los Accesibles would be forking the codebase and establishing an independent collective. He used the word “fork” with the precision of someone who had been waiting to use it. The fork would maintain the Python version of the platform, which Los Accesibles had continued to update in a parallel branch that the main collective had not reviewed because it had not been submitted through the official pull request process, which was controlled by the infrastructure group, whose review timelines had become, in Los Accesibles’ analysis, a form of bureaucratic suppression indistinguishable in its effects from the managerial hierarchies the collective had been founded to oppose.

Seven members left with Tomás. They took the Python branch, a copy of the design assets, and — this was the detail that caused the most lasting bitterness — the collective’s social media accounts, which Tomás had administered since the founding and whose passwords he alone knew. Maya’s faction, which now constituted the remaining Adelante Collective, discovered that the means of communication, like the means of production, belonged to whoever controlled them, and that collective ownership of an account whose password is known to one person is not collective ownership at all but a fief held in trust, and the trust had expired.


Both collectives continue to operate, as of this writing. Adelante — the original, now sometimes called Adelante-Rust or, by Los Accesibles, Adelante-Vanguard — maintains the Rust codebase with eleven members. Phil still runs infrastructure. Maya still leads, in a capacity that the collective describes as “coordination” and that an outside observer would describe as leadership. The software is reliable, performant, and used by approximately two hundred mutual aid networks, most of whom are unaware of the split.

Los Accesibles — formally the Adelante Popular Collective, informally Los Accesibles, and in their own git history simply “adelante,” a naming choice that constitutes, depending on one’s sympathies, either a legitimate claim to the original project’s identity or an act of expropriation — maintains the Python codebase with nine members. Their governance is by cybernetic council, which in practice means a monthly meeting at which Tomás presents a dashboard and proposes priorities. The dashboard is comprehensive. The proposals are always adopted. The software is functional, accessible to non-technical contributors, and used by approximately eighty mutual aid networks, several of whom are also using the Rust version and have not noticed that they are different products.

The two collectives do not communicate. Their codebases have diverged to the point where features developed in one cannot be ported to the other without substantial rewriting. Each collective has published a document — Adelante’s is titled “On the Split,” Los Accesibles’ is titled “On the Betrayal” — that describes the same events in terms so different that a reader encountering both would not immediately recognise them as accounts of the same history. This is consistent with the general pattern of sectarian division, in which the first casualty is not truth but shared narrative, the common account of what happened that makes reconciliation at least theoretically possible. Once each side has its own history, the split is no longer a disagreement. It is two realities, and there is no procedure, in software or in politics, for merging realities that have diverged at the root.

Phil, for his part, has said nothing publicly about the split. He maintains the infrastructure. He responds to alerts. He reviews pull requests with the same unhurried thoroughness he has always brought to the work. When asked, in the only interview he has given, whether the collective had failed, he considered the question for a long time and then said: “The servers are up. The software works. People use it. I don’t know what failure means in this context. I know what an outage is. We haven’t had one of those.”

It was, by the standards of the discourse that surrounds and sustains him, a radically insufficient answer. It was also the only one that corresponded to a fact.