|
| 1 | +.. _memorialize-core-developer: |
| 2 | + |
| 3 | +=============== |
| 4 | +Memorialization |
| 5 | +=============== |
| 6 | + |
| 7 | +Rationale |
| 8 | +========= |
| 9 | + |
| 10 | +When a core developer passes away, memorializing accounts helps create |
| 11 | +a space for remembering the contributor and protects against attempted |
| 12 | +logins and fraudulent activity. |
| 13 | + |
| 14 | +The process |
| 15 | +=========== |
| 16 | + |
| 17 | +The memorialization process is performed by a member of the PSF staff |
| 18 | +with administrative access to current and historical systems where |
| 19 | +core developers have access. |
| 20 | + |
| 21 | +After the status of the core developer in question is confirmed, |
| 22 | +access to the systems listed below is revoked and some changes are |
| 23 | +made to how the user displays to others. |
| 24 | + |
| 25 | +To respect the choices that someone made while alive, we aim to preserve |
| 26 | +content of their accounts without changes after they've passed away. |
| 27 | +To support the bereaved, in some instances, we may remove or change |
| 28 | +certain content when the legacy contact or family members request it. |
| 29 | + |
| 30 | +GitHub |
| 31 | +------ |
| 32 | + |
| 33 | +* The user is removed from the `python/ <https://github.com/orgs/python/>`_ |
| 34 | + organization on GitHub; |
| 35 | +* The user is removed from the `psf/ <https://github.com/orgs/psf/>`_ |
| 36 | + organization on GitHub; |
| 37 | +* The user is removed from the `pypa/ <https://github.com/orgs/pypa/>`_ |
| 38 | + organization on GitHub. |
| 39 | + |
| 40 | +The PSF staff does not follow up with GitHub with regards to GitHub account |
| 41 | +cancellation as this action is reserved for next-of-kin or designated by |
| 42 | +the deceased GitHub user to act as an account successor. |
| 43 | + |
| 44 | +The general policy regarding deceased users on GitHub is described |
| 45 | +`here <https://docs.github.com/en/site-policy/other-site-policies/github-deceased-user-policy>`_. |
| 46 | + |
| 47 | +Repositories in the organization |
| 48 | +-------------------------------- |
| 49 | + |
| 50 | +* The user's GitHub handle is removed from ``/.github/CODEOWNERS``. |
| 51 | + To see all that need action, perform |
| 52 | + `this query <https://github.com/search?q=org%3Apython+path%3A**%2F.github%2FCODEOWNERS+USERNAME&type=code>`_. |
| 53 | +* The user is marked as deceased in the private |
| 54 | + `voters/python-core.toml <https://github.com/python/voters/blob/main/python-core.toml>`_ |
| 55 | + file with the ``left=`` field set to the day of passing, if known. |
| 56 | + |
| 57 | +discuss.python.org |
| 58 | +------------------ |
| 59 | + |
| 60 | +* The user's "custom status" is set to 🕊 ``in memoriam``; |
| 61 | +* The user's "about me" is amended with ``$firstname passed away on $date. [In memoriam.]($in_memoriam_post_url)``; |
| 62 | +* In the user's security "recently used devices" the staff member chooses "Log out all"; |
| 63 | +* In the user's permissions the staff member chooses "Deactivate account"; |
| 64 | +* The user's trust level is reset to ``1: basic user`` (trust level 0 doesn't allow links in "About Me"); |
| 65 | +* The user's "associated accounts" (like GitHub) that provide an alternative |
| 66 | + login method, are all disconnected; |
| 67 | +* The user's API keys are revoked; |
| 68 | +* The user's admin or moderator right is revoked; |
| 69 | +* The user's primary email address is reset to `` [email protected]`` and |
| 70 | + secondary email addresses are removed (this step requires the administrator |
| 71 | + to contact Discourse.org staff via `` [email protected]``) |
| 72 | + |
| 73 | +The "in memoriam" Discourse topic mentioned above is best created by |
| 74 | +a community member close to the deceased. |
| 75 | + |
| 76 | +The general best practice for deceased community members on |
| 77 | +Discourse-powered forums is described `here <https://meta.discourse.org/t/best-practices-for-deceased-community-members/146210>`_. |
| 78 | + |
| 79 | +python.org email account |
| 80 | +------------------------ |
| 81 | + |
| 82 | +The PSF staff member emails `` [email protected]`` to ask the email |
| 83 | +administrator to: |
| 84 | + |
| 85 | +* remove SMTP access from `` [email protected]``; |
| 86 | +* reset the password to POP3/IMAP for `` [email protected]``; |
| 87 | +* disable email forwarding, if set up, for `` [email protected]``; |
| 88 | +* remove this email from all mailing lists under ``@python.org``; |
| 89 | +* remove any known alternate emails for the same user from all mailing lists |
| 90 | + under ``@python.org``. |
| 91 | + |
| 92 | +python.org admin |
| 93 | +---------------- |
| 94 | + |
| 95 | +* The user's account (``/admin/users/user``) is deactivated (NOT deleted) |
| 96 | + and their staff and superuser status is unchecked; |
| 97 | +* The user's password is reset to a long random string; |
| 98 | +* The user's primary email address is set to `` [email protected]`` |
| 99 | + and set as unverified; |
| 100 | +* The user's secondary email addresses are deleted; |
| 101 | +* The user's API keys (both on the account and ``tastypie``) are deleted; |
| 102 | +* The user's "I would like to be a PSF Voting Member" field is cleared. |
| 103 | + |
| 104 | +devguide.python.org |
| 105 | +------------------- |
| 106 | + |
| 107 | +* The user is marked as deceased in `developers.csv <https://github.com/python/devguide/blob/main/core-developers/developers.csv>`_; |
| 108 | +* The user is removed from the `Experts Index <https://github.com/python/devguide/blob/main/core-developers/experts.rst>`_. |
| 109 | + |
| 110 | +bugs.python.org |
| 111 | +--------------- |
| 112 | + |
| 113 | +While the issue tracker was migrated to GitHub, the Roundup instance |
| 114 | +is still up for historical purposes. |
| 115 | + |
| 116 | +* the PSF staff member logs into ``bugs.nyc1.psf.io``; |
| 117 | +* the PSF staff member runs ``roundup-admin`` to set the user's email |
| 118 | + |
| 119 | +* the user's alternate emails are removed; |
| 120 | +* the user's password is reset to a long random string; |
| 121 | +* the PSF staff member removes any active login sessions from Postgres. |
| 122 | + |
| 123 | +Other PSF-related infrastructure |
| 124 | +-------------------------------- |
| 125 | + |
| 126 | +* The PSF staff member notifies administrators of the Python Core Devs |
| 127 | + Discord server to remove the user from the server. The PSF staff |
| 128 | + does not follow up with Discord with regards to Discord account |
| 129 | + cancellation. The general policy regarding deceased users on Discord |
| 130 | + is available `here <https://support.discord.com/hc/en-us/articles/19872987802263--Deceased-or-Incapacitated-Users>`_. |
| 131 | + |
| 132 | +* The user is removed from Salt configuration for the PSF infrastructure |
| 133 | + in `/pillar/base/users <https://github.com/python/psf-salt/tree/main/pillar/base/users>`_ |
| 134 | + that allows SSH access to PSF-controlled servers. |
| 135 | + |
| 136 | +* The user might have ran a buildbot worker. The PSF staff member will |
| 137 | + look for that in the |
| 138 | + `buildmaster-config <https://github.com/search?q=repo%3Apython%2Fbuildmaster-config%20USERNAME&type=code>`_ |
| 139 | + repository. |
| 140 | + |
| 141 | +PyPI |
| 142 | +---- |
| 143 | + |
| 144 | +* The PSF staff member notifies PyPI admins by emailing them at |
| 145 | + `` [email protected]`` to mark the user as inactive, remove their email |
| 146 | + addresses, prohibit their password resets, and revoke all API keys. |
0 commit comments