From 481e1f03b540c1dd6d43e654b6ba32fd0f246303 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Tue, 18 Feb 2025 13:52:16 +0100 Subject: [PATCH 1/6] Describe memorialization procedure --- core-developers/index.rst | 1 + core-developers/memorialization.rst | 132 ++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 core-developers/memorialization.rst diff --git a/core-developers/index.rst b/core-developers/index.rst index 8555943a0..49d6337f7 100644 --- a/core-developers/index.rst +++ b/core-developers/index.rst @@ -13,3 +13,4 @@ Core developers developer-log motivations become-core-developer + memorialization \ No newline at end of file diff --git a/core-developers/memorialization.rst b/core-developers/memorialization.rst new file mode 100644 index 000000000..e44fe310b --- /dev/null +++ b/core-developers/memorialization.rst @@ -0,0 +1,132 @@ +.. _memorialize-core-developer: + +=============== +Memorialization +=============== + +Rationale +========= + +When a core developer passes away, memorializing accounts helps create +a space for remembering the contributor and protects against attempted +logins and fraudulent activity. + +The process +=========== + +The memorialization process is performed by a member of the PSF staff +with administrative access to current and historical systems where +core developers have access. + +After the status of the core developer in question is confirmed, +access to the systems listed below is revoked and some changes are +made to how the user displays to others. + +To respect the choices that someone made while alive, we aim to preserve +content of their accounts without changes after they've passed away. +To support the bereaved, in some instances, we may remove or change +certain content when the legacy contact or family members request it. + +GitHub +------ + +* The user is removed from the `python/ `_ + organization on GitHub; +* The user is removed from the `psf/ `_ + organization on GitHub; +* The user is removed from the `pypa/ `_ + organization on GitHub. + +The PSF staff does not follow up with GitHub with regards to GitHub account +cancellation as this action is reserved for next-of-kin or designated by +the deceased GitHub user to act as an account successor. + +The general policy regarding deceased users on GitHub is described +`here `_. + +CPython repository +------------------ + +* The user's GitHub handle is removed from ``/.github/CODE_OWNERS``. +* The user is marked as deceased in the private + `voters/python-core.toml `_ + file with the ``left=`` field set to the day of passing, if known. + +discuss.python.org +------------------ + +* The user's "custom status" is set to 🕊 ``in memoriam``; +* The user's "about me" is amended with ``$firstname passed away on $date. [In memoriam.]($in_memoriam_post_url)``; +* In the user's security "recently used devices" the staff member chooses "Log out all"; +* In the user's permissions the staff member chooses "Deactivate account"; +* The user's trust level is reset to ``1: basic user`` (trust level 0 doesn't allow links in "About Me"); +* The user's "associated accounts" (like GitHub) that provide an alternative + login method, are all disconnected; +* The user's API keys are revoked; +* The user's admin or moderator right is revoked; +* The user's primary email address is reset to ``username@in-memoriam.invalid`` and + secondary email addresses are removed (this step requires the administrator + to contact Discourse.org staff via ``team@discourse.org``) + +The "in memoriam" Discourse topic mentioned above is best created by +a community member close to the deceased. + +The general best practice for deceased community members on +Discourse-powered forums is described `here `_. + +python.org email account +------------------------ + +The PSF staff member emails ``postmaster@python.org`` to ask the email +administrator to: + +* remove SMTP access from ``USERNAME@python.org``; +* reset the password to POP3/IMAP for ``USERNAME@python.org``; +* disable email forwarding, if set up, for ``USERNAME@python.org``; +* remove this email from all mailing lists under ``@python.org``; +* remove any known alternate emails for the same user from all mailing lists + under ``@python.org``. + +python.org admin +---------------- + +* The user's account (``/admin/users/user``) is deactivated (NOT deleted) + and their staff and superuser status is unchecked; +* The user's password is reset to a long random string; +* The user's primary email address is set to ``USERNAME@in-memoriam.invalid`` + and set as unverified; +* The user's secondary email addresses are deleted; +* The user's API keys (both on the account and ``tastypie``) are deleted; +* The user's "I would like to be a PSF Voting Member" field is cleared. + +devguide.python.org +------------------- + +* The user is marked as deceased in `developers.csv `_; +* The user is removed from the `Experts Index `_. + +bugs.python.org +--------------- + +While the issue tracker was migrated to GitHub, the Roundup instance +is still up for historical purposes. + +* the PSF staff member logs into ``bugs.nyc1.psf.io``; +* the PSF staff member runs ``roundup-admin`` to set the user's email + address to ``USERNAME@in-memoriam.invalid``; +* the user's alternate emails are removed; +* the user's password is reset to a long random string; +* the PSF staff member removes any active login sessions from Postgres. + +SSH server access +----------------- + +* The user is removed from Salt configuration for the PSF infrastructure + in `/pillar/base/users `_. + +PyPI +---- + +* The PSF staff member notifies PyPI admins to mark the user as inactive, + remove their email addresses, prohibit their password resets, and + revoke all API keys. \ No newline at end of file From 3de8e17d0435d3ecd4b57f33d05d183774661ece Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Tue, 18 Feb 2025 13:56:48 +0100 Subject: [PATCH 2/6] Fix lint --- core-developers/index.rst | 2 +- core-developers/memorialization.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core-developers/index.rst b/core-developers/index.rst index 49d6337f7..2e6db104f 100644 --- a/core-developers/index.rst +++ b/core-developers/index.rst @@ -13,4 +13,4 @@ Core developers developer-log motivations become-core-developer - memorialization \ No newline at end of file + memorialization diff --git a/core-developers/memorialization.rst b/core-developers/memorialization.rst index e44fe310b..ac15aa661 100644 --- a/core-developers/memorialization.rst +++ b/core-developers/memorialization.rst @@ -129,4 +129,4 @@ PyPI * The PSF staff member notifies PyPI admins to mark the user as inactive, remove their email addresses, prohibit their password resets, and - revoke all API keys. \ No newline at end of file + revoke all API keys. From 2d009ad7478fb9b175420a1f898984289efc39c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Tue, 18 Feb 2025 14:15:45 +0100 Subject: [PATCH 3/6] Apply suggestions from code review Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> --- core-developers/memorialization.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core-developers/memorialization.rst b/core-developers/memorialization.rst index ac15aa661..1db643ebb 100644 --- a/core-developers/memorialization.rst +++ b/core-developers/memorialization.rst @@ -47,7 +47,7 @@ The general policy regarding deceased users on GitHub is described CPython repository ------------------ -* The user's GitHub handle is removed from ``/.github/CODE_OWNERS``. +* The user's GitHub handle is removed from ``/.github/CODEOWNERS``. * The user is marked as deceased in the private `voters/python-core.toml `_ file with the ``left=`` field set to the day of passing, if known. @@ -64,7 +64,7 @@ discuss.python.org login method, are all disconnected; * The user's API keys are revoked; * The user's admin or moderator right is revoked; -* The user's primary email address is reset to ``username@in-memoriam.invalid`` and +* The user's primary email address is reset to ``USERNAME@in-memoriam.invalid`` and secondary email addresses are removed (this step requires the administrator to contact Discourse.org staff via ``team@discourse.org``) From b279552e5f80cf1b72bc5d56273ddb0b257cc3c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Tue, 18 Feb 2025 14:18:09 +0100 Subject: [PATCH 4/6] Show a helpful search query for CODEOWNERS Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> --- core-developers/memorialization.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core-developers/memorialization.rst b/core-developers/memorialization.rst index 1db643ebb..3d97bd07b 100644 --- a/core-developers/memorialization.rst +++ b/core-developers/memorialization.rst @@ -44,10 +44,12 @@ the deceased GitHub user to act as an account successor. The general policy regarding deceased users on GitHub is described `here `_. -CPython repository ------------------- +Repositories in the organization +-------------------------------- * The user's GitHub handle is removed from ``/.github/CODEOWNERS``. + To see all that need action, perform + `this query `_. * The user is marked as deceased in the private `voters/python-core.toml `_ file with the ``left=`` field set to the day of passing, if known. From 77074a41ff5d2499daab1c6d37baf0fdf31492e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Wed, 19 Feb 2025 14:38:49 +0100 Subject: [PATCH 5/6] Be explicit about contacting PyPI admins Co-authored-by: Seth Michael Larson --- core-developers/memorialization.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core-developers/memorialization.rst b/core-developers/memorialization.rst index 3d97bd07b..d5b798b1f 100644 --- a/core-developers/memorialization.rst +++ b/core-developers/memorialization.rst @@ -129,6 +129,6 @@ SSH server access PyPI ---- -* The PSF staff member notifies PyPI admins to mark the user as inactive, - remove their email addresses, prohibit their password resets, and - revoke all API keys. +* The PSF staff member notifies PyPI admins by emailing them at + ``admin@pypi.org`` to mark the user as inactive, remove their email + addresses, prohibit their password resets, and revoke all API keys. From 29928a2f49133477a12a53da716b64821d5783f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Wed, 19 Feb 2025 15:12:19 +0100 Subject: [PATCH 6/6] Add information about Discord and buildbots --- core-developers/memorialization.rst | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/core-developers/memorialization.rst b/core-developers/memorialization.rst index d5b798b1f..3167beca5 100644 --- a/core-developers/memorialization.rst +++ b/core-developers/memorialization.rst @@ -120,11 +120,23 @@ is still up for historical purposes. * the user's password is reset to a long random string; * the PSF staff member removes any active login sessions from Postgres. -SSH server access ------------------ +Other PSF-related infrastructure +-------------------------------- + +* The PSF staff member notifies administrators of the Python Core Devs + Discord server to remove the user from the server. The PSF staff + does not follow up with Discord with regards to Discord account + cancellation. The general policy regarding deceased users on Discord + is available `here `_. * The user is removed from Salt configuration for the PSF infrastructure - in `/pillar/base/users `_. + in `/pillar/base/users `_ + that allows SSH access to PSF-controlled servers. + +* The user might have ran a buildbot worker. The PSF staff member will + look for that in the + `buildmaster-config `_ + repository. PyPI ----