[GH-ISSUE #572] Discussion: replace all master/slave references in docs and code #242

Closed
opened 2026-03-07 22:58:04 +03:00 by kerem · 7 comments
Owner

Originally created by @bluejekyll on GitHub (Oct 7, 2018).
Original GitHub issue: https://github.com/hickory-dns/hickory-dns/issues/572

As we get closer to working on substantive pieces related to primary and secondary instances, with some acting as sources of truth, and others as caching or backup systems, I think this is a good time to discuss naming options.

I know this is contentious, but what I want is both something techinically clear and yet also not reminiscent of oppressive concepts. We will remove all mention of ‘slave’ and possibly ‘master’, with one exception and that’s for backward and cross compatibility with other systems (ie read from configs and accept ‘slave’, but translate to the new replacement term). Should we also replace ‘master’ there will be one exception to where it won’t be replaced, and that’s “master files”, referring to the zone configuration files, as that is out of scope. We can also change it, but that would be a separate discussion.

This follows on from a whimsical idea I had in #570, of using ‘queen’/‘drone’, but even that was pointed out as having potential of not referring to bees and the hive queen.

As ideas are put forward, I’ll capture them here (order does not imply importance). As we think through names, remember that we may have scenarios where there are multiple primaries (active/active) configurations:

‘leader’/‘follower’
‘primary’/‘secondary’
‘teacher’/‘learner’

Originally created by @bluejekyll on GitHub (Oct 7, 2018). Original GitHub issue: https://github.com/hickory-dns/hickory-dns/issues/572 As we get closer to working on substantive pieces related to primary and secondary instances, with some acting as sources of truth, and others as caching or backup systems, I think this is a good time to discuss naming options. I know this is contentious, but what I want is both something techinically clear and yet also not reminiscent of oppressive concepts. We will remove all mention of ‘slave’ and possibly ‘master’, with one exception and that’s for backward and cross compatibility with other systems (ie read from configs and accept ‘slave’, but translate to the new replacement term). Should we also replace ‘master’ there will be one exception to where it won’t be replaced, and that’s “master files”, referring to the zone configuration files, as that is out of scope. We can also change it, but that would be a separate discussion. This follows on from a whimsical idea I had in #570, of using ‘queen’/‘drone’, but even that was pointed out as having potential of not referring to bees and the hive queen. As ideas are put forward, I’ll capture them here (order does not imply importance). As we think through names, remember that we may have scenarios where there are multiple primaries (active/active) configurations: ‘leader’/‘follower’ ‘primary’/‘secondary’ ‘teacher’/‘learner’
kerem 2026-03-07 22:58:04 +03:00
  • closed this issue
  • added the
    question
    label
Author
Owner

@moonshiner commented on GitHub (Oct 7, 2018):

I've been known to run some DNS Infrastructure, and I never used master/slave, always primary/secondary. But I've been hammering on the DNS s/w vendors for a few years now that the "1 primary/1 secondary" server configuration that is every deployment document is quaint and outdated.

There is this other term "hidden master" which I don't like also. In reality what one has is a key-value data store (not really a database) that is replicated across more than 1 servers. Maybe we're viewing this through the lens of history ?

I'll get off my soapbox.

<!-- gh-comment-id:427680301 --> @moonshiner commented on GitHub (Oct 7, 2018): I've been known to run some DNS Infrastructure, and I never used master/slave, always primary/secondary. But I've been hammering on the DNS s/w vendors for a few years now that the "1 primary/1 secondary" server configuration that is every deployment document is quaint and outdated. There is this other term "hidden master" which I don't like also. In reality what one has is a key-value data store (not really a database) that is replicated across more than 1 servers. Maybe we're viewing this through the lens of history ? I'll get off my soapbox.
Author
Owner

@bluejekyll commented on GitHub (Oct 7, 2018):

I think you’re right about the historical context.

I want to enable active/active scenarios, across highly latent areas (how, I don’t know yet exactly). In that scenario there isn’t really even a ‘secondary’ so to speak.

<!-- gh-comment-id:427685756 --> @bluejekyll commented on GitHub (Oct 7, 2018): I think you’re right about the historical context. I want to enable active/active scenarios, across highly latent areas (how, I don’t know yet exactly). In that scenario there isn’t really even a ‘secondary’ so to speak.
Author
Owner

@hawkw commented on GitHub (Oct 16, 2018):

Personally, I think "primary"/"secondary" is the clearest language in this case --- I think "leader"/"follower" more accurately reflects a scenario where one component in a system drives or controls the operation of another; when the "secondary" component is acting in a backup role, I think "primary"/"backup" or "active"/"standby" also works.

IMO the use of "master" without a counterpart to refer to an authoritative copy or source of truth for a piece of data reflects the use of "masters" in the audio industry to refer to the authoritative copies of an audio recording. AFAIK this usage, such as in "master files", is not considered offensive, but I defer to someone with more knowledge to confirm that.

<!-- gh-comment-id:430057988 --> @hawkw commented on GitHub (Oct 16, 2018): Personally, I think "primary"/"secondary" is the clearest language in this case --- I think "leader"/"follower" more accurately reflects a scenario where one component in a system drives or controls the operation of another; when the "secondary" component is acting in a backup role, I think "primary"/"backup" or "active"/"standby" also works. IMO the use of "master" without a counterpart to refer to an authoritative copy or source of truth for a piece of data reflects the use of "masters" in the audio industry to refer to the authoritative copies of an audio recording. AFAIK this usage, such as in "master files", is not considered offensive, but I defer to someone with more knowledge to confirm that.
Author
Owner

@tarqd commented on GitHub (Dec 8, 2018):

I've always been a fan of primary/replica or master/replica myself. For DNS specifically authority/replica might be a better way to describe the relationship

<!-- gh-comment-id:445455950 --> @tarqd commented on GitHub (Dec 8, 2018): I've always been a fan of primary/replica or master/replica myself. For DNS specifically authority/replica might be a better way to describe the relationship
Author
Owner

@vorner commented on GitHub (Jan 14, 2021):

Looking at this… should this get resolved on some globalish DNS-standards mailing list first, so everyone has the same ones instead of each implementation coming up with independent names to describe it? What do the RFCs use? Should any changes start there?

<!-- gh-comment-id:760205534 --> @vorner commented on GitHub (Jan 14, 2021): :question: Looking at this… should this get resolved on some globalish DNS-standards mailing list first, so everyone has the same ones instead of each implementation coming up with independent names to describe it? What do the RFCs use? Should any changes start there?
Author
Owner

@moonshiner commented on GitHub (Jan 14, 2021):

We're currently updating RFC8499 https://www.rfc-editor.org/rfc/rfc8499.html to address the language and add a few teams like DoH (DNS-over-HTTPS), DoT (DNS-over-TLS), etc.

https://tools.ietf.org/html/draft-ietf-dnsop-rfc8499bis-01

Folks are more than welcome to weigh in, offer opinions, etc.!
tim
(co-chair DNS OPerataions)

<!-- gh-comment-id:760409701 --> @moonshiner commented on GitHub (Jan 14, 2021): We're currently updating RFC8499 https://www.rfc-editor.org/rfc/rfc8499.html to address the language and add a few teams like DoH (DNS-over-HTTPS), DoT (DNS-over-TLS), etc. https://tools.ietf.org/html/draft-ietf-dnsop-rfc8499bis-01 Folks are more than welcome to weigh in, offer opinions, etc.! tim (co-chair DNS OPerataions)
Author
Owner

@bluejekyll commented on GitHub (Jan 14, 2021):

Ugh, I never connected this to the PR that resolved this: #1141

We changed to primary/secondary, but allow for backward compatibility.

@moonshiner, Thanks for pushing this forward!

<!-- gh-comment-id:760414366 --> @bluejekyll commented on GitHub (Jan 14, 2021): Ugh, I never connected this to the PR that resolved this: #1141 We changed to `primary`/`secondary`, but allow for backward compatibility. @moonshiner, Thanks for pushing this forward!
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/hickory-dns#242
No description provided.