Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The master/slave stuff is just terrible terminology. Seriously, it means about a dozen different things depending on context. Sometimes the "slave" is a clone of the master, sometimes it's an alternative of the master, sometimes it merely has the role of a responder in a protocol, and rarely is it actually under the full control of the master (funny enough, the technology closest to "total and absolute control" I can think of - JTAG - calls that the "target", not the "slave"... :-) ). That particular set of terms has been so thoroughly abused and overused so as to lose all nuanced meaning, and we'd do much better to drop it just out of sheer uselessness and switch to more accurate, varied terms that properly fit the context (like primary/secondary, primary/replica, initiator/responder, host/device, leader/follower, etc.).

This isn't out of wokeness; quoting the previous version of the I²C specification:

"Some devices are masters – they generate bus clock and initiate communication on the bus, other devices are slaves and respond to the commands on the bus."

... if you're going to have to define what your terms mean in other terms because your original terms are unclear, why not just use the other terms directly? Initiator/responder would've been perfectly appropriate here (that terminology is used by IPSec, FWIW). Initiator/target would've also worked (iSCSI calls them that).

Interestingly, just a couple months ago the spec was updated to replace the terms with "controller/target" instead, which is actually worse; "controller" is already a widely used term to mean the hardware that implements I²C inside any given chip, and which can work in either "controller" or "target" mode, which is very confusing.

So yeah, I'm all for replacing master/slave since it's terribly ambiguous, just please pick something that doesn't make things worse.

As for git master vs main, that has less of a technical argument to it... but it doesn't hurt anyone, it's easy to change the default branch name, "main" is just as descriptive as "master", and "main" is shorter anyway, so "main" it is. There's absolutely no reason to die on that hill even if you reject the (tenuous) argument of a master -> master/slave -> slavery association (in my mind "master" here is in the sense of "master record" or "master bus" and there is no "slave" counterpart, so I never had a problem with this one, but I still find "main" perfectly fine and it saves typing).

This thing about ant colonies... yeah, that's pretty different and clearly utterly illogical.



You are making the mistake that anyone you are arguing against wants you to make.

It’s not about this or that word. It’s about controlling language and letting you discuss it seriously is still them winning.

If it “doesn’t work”, they’ll find a new word that is racist or sexist or whatever, and they’ll want you to discuss that one too.

The only way to win (for everyone) is to not play the game. Mock, belittle, double down before you take it seriously.


Master in git I assumed is the same as tape master, master copy etc. I never heard about slave in git context. Which makes it even more absurd.


Master in git comes from BitKeeper, where it was used in master/slave context.


That connection has been contested, but even if that is the case, nobody using git would think of that, since slaves aren't a thing in git itself.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: