Speak UNIX or Die

Developers employed at Microsoft have plainly given up on meeting people where they are.




Joe Petro has a problem with GitHub. I don’t blame him. GitHub is a piece of shit, and wasn’t much better before Microsoft bought it. It has too many menus that are meant to build a “friendly” web-based GUI around what is fundamentally a UNIX command-line tool, but end up making things worse. Of course, that’s not all GitHub does. GitHub wants to be for developers what MySpace had been for musicians: a “social” platform where people compete for attention and a shot at getting a gig.

I know how to use it. I prefer not to unless my day job demands it of me, or if I’m determined to contribute to a project hosted on GitHub. And, frankly, the older I get the less willing I am to do the latter; you could be writing software that will cure cancer, and I might be able to help, but if you’re hosting on GitHub I probably won’t bother because Microsoft isn’t paying me to contribute training data for Copilot. More on that later.

Of course, I found out when digging up Petro’s email address so that I could let him know that I was writing in sympathy to his post that his main website is hosted by GitHub Pages. I don’t begrudge him that; it’s his money, his website, and he can use any provider he likes. Nevertheless, the fact that his website is hosted by GitHub Pages suggests that he either figured enough of this shit out to make it happen, or he knew somebody who was willing and able to hook him up.

What does that mean, Occasional Reader? It could mean that he has a genuine beef with the way GitHub works and the way techies seem to be pushing it on people for whom it might be overkill. Or, he could be writing satire; he is a comedy writer, after all.

Also, whoever pointed Petro to this video as a guide to GitHub isn’t as tech-savvy as he claims to be, ’cause git and GitHub aren’t the same thing. You don’t need GitHub to use git. Anybody who insists otherwise has been drinking Microsoft’s equivalent of the Flavor-Aid that Jim Jones used to whip up for his cultists back in the day.

For my part, I would never encourage anybody to use GitHub. It is, as I mentioned, a pile of corporate shit. If you were to ask me what I’d use instead for my own projects, I might mention Codeberg or Sourcehut – most likely the latter. However, that is highly unlikely.

The internet has always been a place where you aren’t a first-class citizen unless you speak UNIX. The Web is no different. Otherwise, URLs might separate directories with backslashes instead, and we wouldn’t be talking about directories in the first place. I adapted, and learned to speak UNIX, because getting exposed to any sort of UNIX (in my case, SunOS on a SPARCstation) after growing up on Apple IIs, Commodore 64s, and IBMs running MS-DOS and Windows 3.11 on token ring networks was practically a revelation. I was finally messing around with a Real Computer.

But I was fucked in the head back then, and I’m even worse today. Yes, I still think it’s preferable to work in plain text, and I still write my fiction in Emacs with Org mode and convert it to other formats with pandoc as needed. Is that a reasonable workflow for every writer?

Hell no.

A writer shouldn’t need to know anything about GitHub. Hell, even developers should consider GitHub optional, and an inferior option at that. Why? Because you don’t need a server to use git. If you’re working alone, you need not push to another repository or pull from one. Having a repository hosted on a platform like GitHub gives a solo developer little more than convenient offsite backups and an easy way to sync a project between computers if one has both a desktop PC and a laptop. That’s been my use case as a writer for years, and it’s also convenient for config files since I use Linux and Emacs at home.

You only need a “central” repository if you’re working with other people, and that’s mainly for convenience; it’s easier to keep versions straight if somebody is maintaining a primary repository and pulling changes from individual developers’ branches or feature branches into the main branch. However, there’s no need to dick around with “pull requests”. That’s something GitHub built on top of git; git itself can distribute changes via email and has always been able to do so.

However, as a writer none of this should be relevant to you. You shouldn’t have to “speak UNIX” to do the work you want to do. For example: suppose you’re still using Microsoft Word (if so, please accept my condolences). Do you know the files Word creates are made of? Every Word document is a ZIP file that has a .docx at the end of its file name instead of .zip. Inside that compressed archive are a bunch of XML files. The format is standardized as “Office Open XML” if you care. You shouldn’t have to.

Now, what is a git repository? At risk of oversimplifying things, a git repository is a hidden directory created within a directory you’ve created for a project. Within that hidden directory, git doesn’t store entire files. Instead, it stores files representing changes to the files you’re working on within that project. For example, if I add a file called nuclear-boogaloo.txt to my ~/projects/fiction/ directory, and then commit that file to my fiction repository, git will create a change containing whatever is currently in nuclear-boogaloo.txt. If it’s a brand new file, it might well be empty, or just contain the title, author, etc. However, every change to that file that I commit afterward (and committing is a separate process from saving the file) does not make a full copy of that file. Instead, it compares the current version of nuclear-boogaloo.txt against the original and all previous changes, and creates a file containing the most recent changes.

At least, that’s how it works if you’re working with any sort of file that you can open and read in Notepad. It’s more complicated with images, video, and audio, but git wasn’t really made for multimedia. If you change an image that you’ve already committed to a git repository and commit the change, git will copy over the entire new image.

However, none of the above should be relevant to you as a writer. What Microsoft should have done was work with ECMA and ISO to revise the Office Open XML standard so that it is possible to create Word Documents that are compressed git repositories and saving such a document automatically commits the most recent changes since the last save. From there it should be possible to create versions of a given document within the document so that an editor can make changes that don’t touch the writer’s version until the writer has examined the editor’s changes and chosen to pull them into their version. None of this “nuclear-boogaloo-draft69-final-revision5150.docx” bullshit.

Of course, that will never happen. It sounds simple enough to me, but the developers who actually work on Microsoft Word will probably be able to come up with dozens of reasons why this is either not feasible or an outright bad idea. It’s not like I can be bothered to prove them wrong by implementing such functionality in LibreOffice by extending their open document format to be XML wrapped in a zipped git repository and modifying LibreOffice to work with git to commit on save.

Regardless, developers should be looking for ways to make useful UNIX tools like git more accessible to people who aren’t developers instead of demanding that everybody else “speak UNIX or die”. After all, the Stormtroopers of Death used “Speak English or Die” as the title of their first album not because they agreed with the xenophobic sentiment, but because they wanted to mock it and annoy people who were too uptight (like Tipper Gore and her fellow Beltway yentas). You sure as hell shouldn’t have to speak UNIX to have a website, email, chat, and text messaging that doesn’t require you to hand over control of your identity and data to unaccountable corporations; the biggest reason it’s not possible to run all of that on the equivalent of a Sony PlayStation on a residential internet connection is that dispersing power and decentralizing (and thus democratizing) the internet doesn’t further enrich the already wealthy.

We could do it, instead of pining for the days when secretaries would write memos with ed on VT-100 dumb terminals and typeset them with troff (which was probably only ever a thing at Bell Labs in the 1970s). We have the technology. But we’d rather let our best and brightest devote their intellects to getting people to click ads or argue with strangers on the internet over bullshit instead of banding together to put billionaires to the sword and corporate empires to the torch.

Computers and the internet, the church, the state, the economy, and society itself should serve people. People should not have to serve systems, and a system that does not serve all people deserves to be dismantled by those it has failed.

tangent on Github Copilot and other LLMs