Проект Python для соблюдения политкорректности избавляется от терминов "master" и "slave"
Гвидо ван Россум (Guido van Rossum) поставил точку в споре, возникшем среди разработчиков языка Python из-за изменений, предложенных Виктором Штиннером (Victor Stinner), работающим в Red Hat и входящим с число ключевых разработчиков Python. Виктор предложил вычистить код Python от упоминания слов "master" и "slave", так как их использование является неполиткорректным и ассоциируется с рабством и неравноправием. Несколько лет назад некоторые открытые проекты уже затронула череда подобных переименований, например, в Drupal термины "master" и "slave" были заменены на "primary" и "replica", а в Django и CouchDB на "leader" и "follower".
Предложение вызвало бурную дискуссию, которая привела к расколу сообщества на стороников и противников переименования. Противники мотивировали свою позицию тем, что не следует смешивать политику и программирование, "master" и "slave" лишь термины, значение которых уже устоялось в компьютерной технике и не имеет ничего общего с рабством и неравноправием. Кроме того, замена устоявшиеся терминов вызовет лишь путаницу среди разработчиков.
Несмотря на намерение уйти с поста великодушного пожизненного диктатора, в спор пришлось вмешаться Гвидо ван Россуму и принять конечное решение. Из пяти коммитов, предложенных при обсуждении переименования "master" и "slave" на "parent" и "children", в кодовую базу принято четыре. Изменения отразятся в релизе Python 3.8. Одно изменение отклонено, так как затрагивает устоявшуюся терминологию UNIX ptys.
Среди принятых изменений:
- "master process" заменен на "parent process";
- "master option mappings" на "main option mappings";
- "master pattern object" на "main pattern object";
- В модуле ssl слово "master" заменено на "server";
- В pty.spawn параметр master_read заменен на parent_read;
- Метод pty.slave_open переименован в pty.child_open, но вызов pty.slave_open пока оставлен для обратной совместимости;
- В os.openpty и os.forkpty параметры master_fd/slave_fd переименованы в parent_fd/child_fd;
- Внутренние переменные master_fd, slave_fd и slave_name переименованы в parent_fd, child_fd и child_name;
- Опция "--slaveargs" заменена на "--worker-args";
- Функция run_tests_slave переименована в run_tests_worker.