The Ship of Theseus in software
Plutarch asks whether a ship whose planks have all been replaced one at a time is still the same ship. Programmers face this question with unusual precision, because version control lets you check. Take any project older than a decade and run git blame. The odds that a single line survives from the first commit are low.
Candidates for identity
The name. Linux is Linux because it is called Linux. This is the answer that ships with the repository, and it is not obviously wrong. Names are how we track things through change.
The interface. A program is the set of promises it keeps to its callers. Under this view a rewrite in a new language that preserves the API is the same program, and a refactor that breaks it is a new one. Hyrum’s law makes this harder than it sounds, since every observable behavior becomes a promise to someone.
The history. The program is the causal chain of commits. Two projects with identical code but separate histories are different programs. This matches how we treat forks.
Why it matters in practice
The question stops being idle when licenses, patents, or trust are involved. “Is this the same software that was audited?” is a Ship of Theseus question with a compliance officer attached. The honest answer is that identity is a choice about which continuity we care about, and we should say which one we mean.