(needs a sponsor)

latest version at https://github.com/gerritholl/peps/blob/animal-friendly/pep-9999.rst

PEP: 9999 Title: Retire animal-unfriendly language Author: Gerrit Holl gerrit.holl@gmail.com Discussions-To: python-ideas@python.org Status: Draft Type: Informational Content-Type: text/x-rst Created: 01-Apr-2020 Post-History: 01-Apr-2020 Sponsor:

Abstract

Python has long used metasyntactic variables that are based on the consumption of meat and dairy products, such as "spam", "ham", and "eggs". This language is not considerate to pigs or chicken and violates the spirit of the Code of Conduct. This PEP proposes to retire the use of those names in official Python documentation and source code and to recommend users of Python to do the same.

Motivation and Rationale

Estimates for the number of animals slaughtered for meat every year vary, but worldindata _ estimates around 80 billion individuals. Farmed animals are often kept in small cages with little to no access to daylight, suffer stress during life and slaughter, or are otherwise systematically mistreated.

The Python Code of Conduct _ describes that community members are open, considerate, and respectful. The Python standard library and documentation contain numerous references to meat or dairy based food products that are not respectful to our fellow inhabitants of planet Earth. Examples include "spam", "bacon", and "eggs".

To align the language use in the standard library and documentation with the Code of Conduct, use of such language should be retired.

Current practice

There is a widespread tradition in the Python standard library, the documentation, and the wider community, to include references to Monty Pythons Flying Circus. The use of "spam", "bacon", "sausage", and "eggs" can be traced back to the "Spam" sketch _ originally broadcast by the British Broadcasting Corporation (BBC) on 8 September 1972. In this sketch, a couple are trying to order food in a diner where all items contain spam. The woman does not like spam and wants to order food without spam. A group of horned vikings then sing about the wonderful spam.

To get an overview of the usage in the current standard library, the command cat $(find . -name '*.py') | grep -oi term | wc -l was used. This showed 2615 occurences for spam, 593 for ham (this include some false positives, among other reasons due to references to people whose name innociously contains the substring ham), 517 for eggs, 57 for bacon, and 10 for sausage. Searching *.rst in the documentation revealed 391 occurrences for spam, 82 for ham, 96 for eggs, 28 for bacon, and 10 for sausage. The source code for cpython revealed just 2 usages for spam and 1 for eggs.

Proposed alternatives

Keeping with the good practice of referencing sketches from Monty Python's Flying Circus, this PEP proposes to adopt the fruits mentioned in the "Self-Defence Against Fresh Fruit" sketch _:

raspberry (not currently in use)

banana (68 times in standard library)

apricot (not currently in use)

pineapple (8 times in standard library)

peach (once in standard library)

redcurrant (not currently in use)

damson (not currently in use)

prune (23 times in standard library)

Other possible alternatives keeping with food items:

salad (occurs once in standard library)

aubergine (referred to in the spam sketch)

shallot (the same)

tofu (vegan protein alternative)

Specification

For the reasons mentioned in the rationale, all references to meat or dairy products shall be removed from the Python standard library, the documentation, and the cpython source code. The wider Python community is recommended to follow this practice. In core Python:

Programmers SHALL NOT use the metasyntactic variables "spam", "ham", "bacon", or "sausage", neither as variable names, nor in example strings, nor in documentation.

Programmers SHALL NOT use the metasyntactic variable "eggs" in context with food items, but may still use it in context of other body parts. Prohibited: ["salad", "eggs"] . Allowed: ["ovaries", "pouch", "eggs"] .

. Allowed: . Programmers SHALL NOT use any other metasyntactic variable that is unfriendly to animals.

The wider Python community is encouraged to adopt these practices as well, but the continued use of animal-unfriendly metasyntactic variables will not be considered a violation of the code of conduct.

Rejected ideas

The authors carefully considered the widespread use of the word "bug" in the meaning of a source code error. Insects including bugs play a crucial role in ecosystems around the world, and it is not fair to blame them for an error that can only be the programmer's. However, the use of the word "bug" for a source code error is too much ingrained into daily use, it far predates the Python community, is not limited to the Python community, and the word "bug" is less unfriendly than "spam", "ham", or "bacon". Therefore, the word "bug" may still be used.

Reference Implementation

The author promises to provide a reference implementation for Python 3.10, should this PEP be accepted.

References

.. _worldindata: https://ourworldindata.org/meat-production .. _Python code of conduct: https://www.python.org/psf/conduct/ .. _"Spam" sketch: http://www.montypython.net/scripts/spam.php .. _"Self-Defence Against Fresh Fruit" sketch: http://www.montypython.net/scripts/fruit.php

Copyright

This document is placed in the public domain or under the CC0-1.0-Universal license, whichever is more permissive.

.. Local Variables: mode: indented-text indent-tabs-mode: nil sentence-end-double-space: t fill-column: 70 coding: utf-8 End: