|
| 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 | +CPython repository |
| 48 | +------------------ |
| 49 | + |
| 50 | +* The user's GitHub handle is removed from ``/.github/CODE_OWNERS``. |
| 51 | +* The user is marked as deceased in the private |
| 52 | + `voters/python-core.toml <https://github.com/python/voters/blob/main/python-core.toml>`_ |
| 53 | + file with the ``left=`` field set to the day of passing, if known. |
| 54 | + |
| 55 | +discuss.python.org |
| 56 | +------------------ |
| 57 | + |
| 58 | +* The user's "custom status" is set to 🕊 ``in memoriam``; |
| 59 | +* The user's "about me" is amended with ``$firstname passed away on $date. [In memoriam.]($in_memoriam_post_url)``; |
| 60 | +* In the user's security "recently used devices" the staff member chooses "Log out all"; |
| 61 | +* In the user's permissions the staff member chooses "Deactivate account"; |
| 62 | +* The user's trust level is reset to ``1: basic user`` (trust level 0 doesn't allow links in "About Me"); |
| 63 | +* The user's "associated accounts" (like GitHub) that provide an alternative |
| 64 | + login method, are all disconnected; |
| 65 | +* The user's API keys are revoked; |
| 66 | +* The user's admin or moderator right is revoked; |
| 67 | +* The user's primary email address is reset to ``username@in-memoriam.invalid`` and |
| 68 | + secondary email addresses are removed (this step requires the administrator |
| 69 | + to contact Discourse.org staff via ``team@discourse.org``) |
| 70 | + |
| 71 | +The "in memoriam" Discourse topic mentioned above is best created by |
| 72 | +a community member close to the deceased. |
| 73 | + |
| 74 | +The general best practice for deceased community members on |
| 75 | +Discourse-powered forums is described `here <https://meta.discourse.org/t/best-practices-for-deceased-community-members/146210>`_. |
| 76 | + |
| 77 | +python.org email account |
| 78 | +------------------------ |
| 79 | + |
| 80 | +The PSF staff member emails ``postmaster@python.org`` to ask the email |
| 81 | +administrator to: |
| 82 | + |
| 83 | +* remove SMTP access from ``USERNAME@python.org``; |
| 84 | +* reset the password to POP3/IMAP for ``USERNAME@python.org``; |
| 85 | +* disable email forwarding, if set up, for ``USERNAME@python.org``; |
| 86 | +* remove this email from all mailing lists under ``@python.org``; |
| 87 | +* remove any known alternate emails for the same user from all mailing lists |
| 88 | + under ``@python.org``. |
| 89 | + |
| 90 | +python.org admin |
| 91 | +---------------- |
| 92 | + |
| 93 | +* The user's account (``/admin/users/user``) is deactivated (NOT deleted) |
| 94 | + and their staff and superuser status is unchecked; |
| 95 | +* The user's password is reset to a long random string; |
| 96 | +* The user's primary email address is set to ``USERNAME@in-memoriam.invalid`` |
| 97 | + and set as unverified; |
| 98 | +* The user's secondary email addresses are deleted; |
| 99 | +* The user's API keys (both on the account and ``tastypie``) are deleted; |
| 100 | +* The user's "I would like to be a PSF Voting Member" field is cleared. |
| 101 | + |
| 102 | +devguide.python.org |
| 103 | +------------------- |
| 104 | + |
| 105 | +* The user is marked as deceased in `developers.csv <https://github.com/python/devguide/blob/main/core-developers/developers.csv>`_; |
| 106 | +* The user is removed from the `Experts Index <https://github.com/python/devguide/blob/main/core-developers/experts.rst>`_. |
| 107 | + |
| 108 | +bugs.python.org |
| 109 | +--------------- |
| 110 | + |
| 111 | +While the issue tracker was migrated to GitHub, the Roundup instance |
| 112 | +is still up for historical purposes. |
| 113 | + |
| 114 | +* the PSF staff member logs into ``bugs.nyc1.psf.io``; |
| 115 | +* the PSF staff member runs ``roundup-admin`` to set the user's email |
| 116 | + address to ``USERNAME@in-memoriam.invalid``; |
| 117 | +* the user's alternate emails are removed; |
| 118 | +* the user's password is reset to a long random string; |
| 119 | +* the PSF staff member removes any active login sessions from Postgres. |
| 120 | + |
| 121 | +SSH server access |
| 122 | +----------------- |
| 123 | + |
| 124 | +* The user is removed from Salt configuration for the PSF infrastructure |
| 125 | + in `/pillar/base/users <https://github.com/python/psf-salt/tree/main/pillar/base/users>`_. |
| 126 | + |
| 127 | +PyPI |
| 128 | +---- |
| 129 | + |
| 130 | +* The PSF staff member notifies PyPI admins to mark the user as inactive, |
| 131 | + remove their email addresses, prohibit their password resets, and |
| 132 | + revoke all API keys. |
0 commit comments