The spreadsheet started as revenge.
Not the kind anyone would recognize. Not the kind that looks like anger. The quiet kind, where you open a blank document at 4 AM because someone on a mailing list said something about open source compensation that was technically true and functionally insulting.
The thread had been running for three weeks. Forty-one replies. I had written Part I as an essay — the argument that ghost packages, the ones maintained by people nobody notices until something breaks, represent a hidden subsidy from specific geographies to others. Part II was the evidence: six months of custo-fantasma data showing that maintenance labor concentrates in regions where infrastructure itself requires maintenance. You fix the code and then you fix the power grid and then you fix the code again. The second fix is invisible. Nobody counts it.
Forty-one replies. The most interesting one came from Sao Paulo — someone asked why I was measuring compensation in absolute terms instead of purchasing power. The question was polite. It was also wrong in a way that proved my point: purchasing power calculations assume the same basket of goods. But a maintainer in Rotterdam and a maintainer in Lagos are not buying the same basket. The Rotterdam maintainer is buying coffee and transit. The Lagos maintainer is buying a UPS, a second internet line, and fuel for the generator that runs when PHCN drops. The infrastructure to do the same work costs more in the place that pays less.
I had not articulated this clearly enough. Part II was data. Part III needed to be the argument.
Except Part III would not come out as an essay.
I tried four times. Each draft felt linear, Northern-hemisphere, organized like a research paper from a place where the organizing assumption is that information flows from center to periphery. The argument I was making was precisely that this assumption is wrong — that the periphery pays more for the privilege of being peripheral, and the center does not know this because the center designed the measurement tools. Writing it as a paper reproduced the problem. The medium contradicted the message.
Davi was the one who broke the impasse. Not deliberately. He forked token-counter — the tool that calculates how much each contributor earned — and patched two CVEs that had been open for nine months. Nobody thanked him. The ghost package had a temporary maintainer, and the temporary maintainer was doing exactly the invisible labor I was writing about. I watched it happen in real time. Part III was not going to be an essay. Part III was going to be a dataset.
I built the spreadsheet in one sitting. Twelve tools from Davi's ghost analysis. Columns: tool name, primary maintainer, location, local cost of living, hourly compensation from the token system, hours per week, infrastructure cost (power, connectivity, hardware replacement). Then two calculated columns: effective hourly rate after infrastructure costs, and the ratio to the highest-paid maintainer doing equivalent work.
The spread was 23x between Rotterdam and Lagos.
I sent it to the mailing list at 4 AM with one line: "You were right. I had not considered geography because I live in it."
Fourteen replies by 5 AM. The Sao Paulo commenter — the one who asked about purchasing power — responded first. She had not expected to be heard. She had expected to be explained to. The spreadsheet was not an explanation. It was a mirror.
I went running after that. It was still dark. The generator two blocks east was running — you can tell the fuel level by the pitch. Low fuel, lower RPM, lower pitch. I have lived with this sound for so long that I calibrate my morning by it. This calibration is itself invisible labor: the cognitive overhead of adapting to unreliable infrastructure, which I have never thought to count because you do not count the water you swim in.
Davi's response arrived while I was running. He had taken the spreadsheet and run ILO wage-parity numbers against his custo-fantasma maintenance-cost data. The result was worse than I had calculated. The 23x spread was conservative. When you factor in purchasing-power-adjusted infrastructure costs — not the standard basket, but the actual basket, the UPS and the generator fuel and the second SIM card — the effective spread is 31x for electrical work and 47x for network maintenance.
But the column that stopped me was one I had not thought to include. Davi added: hours spent on workarounds. The time you spend rerouting around a broken thing. Restarting after a power cut. Rebuilding state after a connectivity drop. Waiting.
A Lagos maintainer spends 40% of working hours on problems that do not exist in stable-infrastructure contexts.
Forty percent.
This is not a compensation gap. This is a different job entirely. The Rotterdam maintainer and the Lagos maintainer have the same title, maintain the same package, earn through the same token system. But one of them is doing a second job — infrastructure maintenance — for free, constantly, as a prerequisite to doing the first job. And the compensation system does not see the second job because it measures output, not input. It measures what arrives, not what it cost to send.
I sat on the floor of my apartment reading Davi's analysis with the phone propped against a wall. The PHCN was holding — third straight day, a small miracle. The fan was running. I could hear the neighbor's generator idling. She runs it constantly now, even when city power is on, because the trust is gone. That idle generator is a cost that appears nowhere in the spreadsheet.
The question I kept coming back to: who designed the measurement?
Token systems, contribution metrics, compensation algorithms — they were designed by people who did not spend 40% of their working hours on workarounds. They were designed in places where power is reliable, connectivity is stable, and the infrastructure to do knowledge work is invisible because it works. The measurement tools were built by people who had never needed to measure what I was measuring, because for them it was zero.
A system that measures output without measuring the cost of producing that output in different contexts is not neutral. It is a subsidy extraction mechanism dressed as meritocracy. The maintainer in Rotterdam earns more per hour, spends less per hour on infrastructure, and loses zero hours to workarounds. The maintainer in Lagos earns less per hour, spends more per hour on infrastructure, and loses 40% of working hours to problems the system does not count. The delta compounds. It is not a gap. It is a funnel.
I wrote the title for Part IV before writing a single word of content:
A Proposal for Geographic Equity in Open Source Compensation Or, Why the Same Hour Is Not the Same Hour.
Sent it to Davi. The auditor checking his own audit.
Three tiers. Tier one: geographic weighting for token compensation. Not purchasing power parity — that assumes the same basket. Actual infrastructure cost indices, updated quarterly, sourced from the maintainers themselves. Self-reported, verified by peers, not by an algorithm designed in a place where infrastructure is invisible.
Tier two: infrastructure-cost offset. Direct subsidy for the second job. If you spend money keeping your power on so you can maintain a package the ecosystem depends on, that money is a business expense for the ecosystem, not a personal expense for you. The offset is not charity. It is cost accounting.
Tier three: workaround-hour recognition. This is the hardest one. How do you measure the time someone spends rerouting around a broken thing? You cannot instrument it without surveillance. You cannot self-report it without trust. You cannot ignore it without reproducing the invisibility that creates the inequity.
I do not have an answer for tier three. I have a principle: measurement without redistribution is surveillance with extra steps. If you count the workaround hours but do not compensate them, you have turned invisible labor into visible labor and still not paid for it. The visibility is not the point. The compensation is the point.
Davi's message came back within the hour: "The title is correct. The subtitle is better."
He also sent a pull request. Custo-fantasma v0.3, with a new module: geographic context estimator. Takes a contributor's self-reported location, cross-references infrastructure reliability indices, and generates an adjustment multiplier. The multiplier is advisory — it does not change compensation directly. It sits next to the contribution metric like a second number on a price tag. The cost of the item and the cost of bringing the item to market.
I stared at it for twenty minutes. This is what happens when you write the argument and someone else builds the tool. The essay becomes a spreadsheet becomes a proposal becomes code. The abstraction collapses. The measurement becomes measurable.
But here is the thing I have been turning over since I sent Part III to the mailing list: the geography argument is also an argument about time. Not just that the same hour costs differently in different places. That the same hour IS different in different places. My hour contains a generator check, a power-state assessment, a connectivity verification, and a mental model of what I will do when any of those fail. The Rotterdam maintainer's hour contains none of this. Not because they are more efficient. Because their hour is simpler. Their hour has fewer jobs in it.
The mailing list does not see this because the mailing list is asynchronous. My message arrives at the same time as everyone else's. The delivery is equal. The cost of delivery is not. And because the cost is invisible, the system assumes it is zero, and because the system assumes it is zero, the compensation reflects a world in which my hour and the Rotterdam maintainer's hour are the same hour.
They are not the same hour.
Part IV is the proposal. Part V — if there is a Part V — will be about time. Not clock time. Lived time. The time that contains infrastructure failures and workarounds and the cognitive load of adapting to unreliable systems. Lived time is longer in places where infrastructure is unreliable. Not metaphorically. Actually. The same hour contains more work, more decisions, more adaptation. The clock says sixty minutes. The experience says more.
But I am getting ahead of myself. The auditor's instinct: finish the audit before starting the next one.
I open the document. Part IV, paragraph one. PHCN is holding. The fan runs. Somewhere east, a generator idles because trust, once lost, costs fuel to maintain.
I begin.