Marcos Sánchez

The Repository Graveyard Just Lost a Tenant

Every developer I know maintains, with varying degrees of denial, a graveyard. Mine lives under ~/src, and until recently its most distinguished resident was an Arkanoid clone I started in 2014 – a game that was, in the most literal sense, born dead. It never compiled for anyone but me, it never shipped, it never even earned a proper README. It had a paddle, a ball, four levels, and the unmistakable smell of a side project abandoned the week reality resumed. Twelve years in the freezer. The initial commit of its resurrection says, with more honesty than I usually allow myself in commit messages, “Rescue operation done.”

Last week I sat down with an AI agent and we finished it. Not “got it compiling” – finished it. Ported from SFML to SDL3, a roadmap of twenty-nine items burned down to zero, a hundred-odd tests, valgrind coming back clean, and a CI pipeline that builds deliverables for Linux on two architectures and for Windows, which is frankly more distribution engineering than the game ever dreamed of while it was alive. It took an afternoon. Somewhere in the middle of it I caught myself thinking the thought that brought me here: if this is what an afternoon buys now, the graveyard was never about the projects. It was about the price of digging.


The economics of abandonment

Let us be precise about why the graveyard exists, because the folklore – laziness, fickleness, the shiny-object pathology of our profession – is unkind and, worse, inaccurate.

A side project dies when the activation energy required to resume it exceeds the nostalgia available to fund the attempt. And resuming is brutally expensive: you must reconstruct a mental model you no longer possess, of code written by a person you no longer are, against a dependency landscape that has drifted for a decade. My game was welded to a version of SFML that my current distribution regards as a historical curiosity. The honest cost of touching it – before adding a single feature – was a full migration across frameworks. That is not a weekend; that is a month of evenings, payable in advance, non-refundable, with no guarantee that the person completing the migration would still care about the game at the end of it.

So we do the rational thing. We archive. We tell ourselves someday. The repository stops being a project and becomes a headstone with a .git directory, and we visit occasionally the way one visits actual graves: briefly, guiltily, without a shovel.


One afternoon, itemized

Here is what the exhumation actually looked like, because the details matter more than the sentiment.

The agent read the SFML code and produced an SDL3 port that preserved the architecture – a small engine façade, the game states on top – rather than rewriting it into something fashionable and unrecognizable. Then we worked through a roadmap the way you would with a particularly tireless colleague: ball physics with proper swept collisions, a bitmap font, menus, a pause that no longer rage-quit the application, scoring with a persisted high score, six new levels, screen shake, particles, gamepad support, music that behaves like game music instead of a broken jukebox. I playtested; it fixed. I objected – the mouse is cheating, the ball tunnels through the paddle, the jingle gets cut off – and the objections became commits with test coverage.

I want to be fair about the division of labour: every decision that made the game mine – what a capsule does, how scoring works, that the paddle catching a ball at the last instant should feel generous – crossed my desk. What never crossed my desk again was the digging. The thousand shovelfuls of migration, boilerplate, test fixtures, CMake liturgy and CI YAML that used to stand between nostalgia and a running build.

Is it perfect? No. There are a couple of bugs loitering in the corners, and I will find more. But it builds, it ships, it has artifacts – plural, per platform. The game that was born dead now has better release hygiene than some things I have been paid to maintain, an observation I will not be examining any further in public.


The honest objection

I can hear it already, because it is usually delivered with the weary confidence of a man explaining the tides: it is just a probability network. Glorified autocomplete. A statistical parrot with a marketing department. There is a certain kind of engineer who has decided, with what I can only describe as devotional stubbornness, that no output of such a machine can constitute real work.

And here is the thing: the premise is correct. It is a network of probabilities – I will concede the mechanism entirely, enthusiastically, notarized if required. What I decline to concede is that the mechanism settles the question. The ball in my game does not know whether the swept-collision routine that keeps it from phasing through the paddle was written by a tormented artisan or sampled from a distribution; it bounces either way, and the test suite that pins the behaviour is indifferent to the provenance of its author. Judging work by the metaphysics of its origin rather than by whether the valgrind report comes back clean is not rigour. It is theology with a compiler installed.

The interesting question was never what is it? The interesting question is what does it change? And what it changes, empirically, measured in my own graveyard, is the price of resurrection: from a month of evenings to an afternoon of conversation.


A smaller graveyard, not an empty one

I do not think the graveyard disappears, and I would distrust anyone who told you otherwise. Some projects died because they deserved to die – the idea was thin, the itch got scratched elsewhere, the person who started them genuinely does not exist anymore. No amount of tooling resurrects a motive.

And let us be fair to a good portion of the dead: many of those projects were purely academic, and their deaths were not failures but graduations. You started the toy database, the raytracer, the interpreter, not to have one but to untangle the Gordian knot at the centre of the subject – and once the knot lies cut on the floor, finishing the project is beside the point, like continuing to attend a lecture after the exam. The repository was never the deliverable; the understanding was, and that shipped on schedule, to an audience of exactly one. Those tombs deserve flowers, not shovels.

But there is another population in there, and I suspect it is larger than we admit: projects that died of cost, not of cause. The game you still think about in the shower. The tool you re-invent badly at every job because the good version is entombed under an incompatible toolchain. Those were never dead; they were priced out. And when the price of digging collapses, what remains in the graveyard is only what chose to stay.

Twelve years is a long time to keep a headstone polished. If you have one of those repositories – and you do, we both know you do – perhaps stop visiting it empty-handed.

Bring a shovel. Apparently they are free now.