Removing Harmful Terminology From Our Products
For years the tech industry has had a dubious relationship with the words "master" and “slave,” utilizing them to denote how software instances and machines relate to each other. The name “Puppet Master” originated as a playful twist on “puppet master,” a term that is problematic in its own right. Puppet avoided the worst connotations by using the "master/agent" paradigm in its software architecture, but we recognize that the distinction is not enough and have moved to establish alternatives to master-slave terminology.
Table of Contents:
Alternatives to Master-Slave Terminology
In 2014 we began the technical work of replacing the "master" service with compiler threads running within the server. Today the Puppet Master only exists in vestiges: config settings, documentation references, and concepts that we talk about in the community. But we never undertook a comprehensive effort to change language everywhere it existed. The words “master,” “server,” “compiler,” “Puppet Server,” “master node,” “server node,” “compiler node,” and others are conflated throughout our ecosystem, sometimes used interchangeably when they should not be, and often in reference to the wrong part of the stack.
Language matters. Today, we are finishing the work we started to remove and replace harmful terms in our software & documentation:
- Completing the replacement of the “master” service with the “server”
- Following GitHub’s lead and using the “main” branch of repositories instead of “master”
- Replacing “whitelist/blacklist” with “allowlist/blocklist”
The necessary work is done in Puppet Bolt and is underway for Puppet Enterprise, Open Source Puppet, and our other products. Timelines vary, and changes will be released for each product as they are completed.
We have a few general guidelines for folks wishing to incorporate these changes into the way they talk about their own infrastructures. In most cases, the word “master” is simply replaced with “server.” We talk about the Puppet server, and when we want to identify components that may or may not be on different machines we just refer to those services, e.g. the CA server or the PuppetDB server. See the Vox Pupuli reference architectures for examples of this language in use today.
Updating Ethical and Inclusive Design Principles
We also updated our UX Design Principles to explicitly center ethical and inclusive design.
Technologists must collaborate to ensure software and services do no harm. The activities outlined here are individual steps on a long road to raise our collective intelligence about ethical product design and engineering, and to help outcomes improve for everyone. Our work will continue and we hope yours will too.