The first manual was duplicated for a very small coterie. In order to channel queries directly to the horses’ mouths, authorship was attributed to individuals. Later, as authorship diffused, on the principle of”You touched it last; it’s yours,” authorship was attributed only in the segregated chapter of unofficial “user maintained programs.” Beginning with v7, this back-of-the-bus chapter was reserved for games.
As the system was elaborated, peer pressure in the research group caused rough places to be
smoothed, vague ideas to be sharpened, and feeble programs to be extinguished. Most details of the con stant questioning and experimentation during the early period of rapid change are long forgotten, as are hundreds of transitory states that were recorded in the on-line manual. From time to time, however, a snap-shot was taken in the form of a new printed edition. Quite contrary to commercial practice, where a release is supposed to mark a stable, shaken-down state of affairs, the very act of preparing a new edition often caused a flurry of improvements simply to forestall embarrassing admissions of imperfection.”
I haven’t seen anybody mentioning it or even noticing it; it’s just the water we swim in now, if we make software. But this month marks the fiftieth anniversary of a core piece of free software technology that would quickly become a seminal piece of collaborative software, the bedrock under every version control system and arguably the single most important piece of social software ever created.
Written by Douglas McIlroy and James Hunt and released with the 5th Edition of Unix, on this month in 1974 the world was given diff.
Merge wouldn’t come along for another few years; patch, despite its physical history dating back to punchcards and paper tape, would not appear for another decade, 1984.
My friend Greg Wilson has argued, and I absolutely believe, that you can divide the entire computational universe into who has diff and patch, and who doesn’t. It’s the seed crystal of all workable open collaboration, and people living without it don’t even have the language to recognize how bad they’ve got it.
I had a dream once at the last gig, about a browser that could be made aware a site welcomed contributions and a framework to enable them, when Contribute.JSON seemed like a viable thing. I wrote a little addon that would light up when it detected a contribute.json file and show it to you, something that might rekindle the spirit of View Source from before frameworks, wire-compressed JS and corporate metrics had so thoroughly alienated webdevs from the idea of a collaborative audience. Part of the dream, once upon a time, was to make that work on your regular old garden variety piece of shit phone; no reason it couldn’t.
Re:re:RE:DRAFT-draft-V7-FINAL-FINAL2.doc is just no way to live, and if you live in word processors, spreadsheets, slides, art, anything without diff and patch you’re definitely feeling this pain, even if you don’t have a term for it. And it’s hard to see how modern web development is different, or better.
Track changes is trash, it’s garbage by comparison, and if I’m looking at a website I don’t own, I’m not even sure how I could propose a change, much less track it. Even if it’s all code, if I’ve got the whole site’s worth of source in the browser in front of me! That’s just the Web, but how can anyone go from noticing a typo on a webpage to proposing a diff to offering it up to the devs’ accepting it?
If the purpose of a system is what it does, who benefits from this being damn near impossible? No self-respecting programmer would ever consent to live like this; it’s the opposite of everything free and open software claims to stand for, and it’s how far too many programmers insist that other people should live.
The ongoing failing and ML-distilled containerization of search don’t just keep you from finding the answers to problems you care about; it keeps you from finding the people who share your problems or care about the same things you do. In a world of forums, whether it’s reddit or discourse or phpbb or anything, search is a soft path to social discovery; view-source, diff and patch if you have them, are likewise a soft path to collaboration and community.
And I don’t think either of these things are going away by accident. I think they’re being taken from us, for the unforgivable sin of not driving this quarter’s top line growth. Mutual discovery, collaboration, assistance and support, the path to that goes through the technology that enables it to happen, and ideally as easily as possible.
I’m ready to elevate that to a general principle: you can know that a technology serves the people, that a developers’ first constituency is humans, when diff and patch works for two strangers needing nobody’s consent but theirs. These are the tools of the people, and anything else is control that turns extractive eventually.