Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python Enhancement Proposals

PEP 13 – Python Language Governance

Autor:
The Python core team and community
Status:
Aktiv
Typ:
Prozess
Thema:
Governance
Erstellt:
16-Dez-2018

Inhaltsverzeichnis

Zusammenfassung

Diese PEP definiert den formellen Governance-Prozess für Python und dokumentiert, wie sich dieser im Laufe der Zeit geändert hat. Derzeit basiert die Governance auf einem Steuerungsausschuss. Der Ausschuss hat weitreichende Befugnisse, die er so selten wie möglich auszuüben sucht.

Aktueller Steuerungsausschuss

Der Steuerungsausschuss für die Amtszeit 2025 besteht aus

  • Barry Warsaw
  • Donghee Na
  • Emily Morehouse
  • Gregory P. Smith
  • Pablo Galindo Salgado

Gemäß den Ergebnissen der Abstimmung, die in PEP 8106 dokumentiert ist.

Das Kernteam besteht aus den in https://github.com/python/voters/ aufgeführten Personen, das öffentlich über https://devguide.python.org/developers/ geteilt wird.

Spezifikation

Der Steuerungsausschuss

Zusammensetzung

Der Steuerungsausschuss ist ein 5-köpfiges Komitee.

Mandat

Der Steuerungsausschuss wird sich bemühen, Folgendes zu tun:

  • Aufrechterhaltung der Qualität und Stabilität der Python-Sprache und des CPython-Interpreters,
  • Beiträge so zugänglich, inklusiv und nachhaltig wie möglich zu gestalten,
  • Formalisierung und Aufrechterhaltung der Beziehung zwischen dem Kernteam und der PSF,
  • Festlegung geeigneter Entscheidungsfindungsprozesse für PEPs,
  • Konsens unter Mitwirkenden und dem Kernteam zu suchen, bevor formell gehandelt wird,
  • Als „letzte Berufungsinstanz“ für Entscheidungen zu fungieren, bei denen alle anderen Methoden fehlgeschlagen sind.

Befugnisse

Der Ausschuss hat weitreichende Befugnisse zur Entscheidungsfindung über das Projekt. Zum Beispiel können sie

  • PEPs annehmen oder ablehnen
  • Den Verhaltenskodex des Projekts durchsetzen oder aktualisieren
  • Mit der PSF zusammenarbeiten, um Projektvermögenswerte zu verwalten
  • Teile ihrer Befugnisse an andere Unterausschüsse oder Prozesse delegieren

Sie können jedoch dieses PEP nicht ändern oder die Zusammensetzung des Kernteams beeinflussen, außer über die in diesem PEP festgelegten Mechanismen.

Der Ausschuss sollte nach Wegen suchen, diese Befugnisse so wenig wie möglich einzusetzen. Anstatt abzustimmen, ist es besser, Konsens zu suchen. Anstatt über einzelne PEPs zu entscheiden, ist es besser, einen Standardprozess für die PEP-Entscheidungsfindung zu definieren (z. B. durch Annahme einer der anderen PEPs der Serie 801x). Es ist besser, ein Komitee für Verhaltenskodizes einzurichten, als über Einzelfälle zu entscheiden. Und so weiter.

Zur Ausübung seiner Befugnisse stimmt der Ausschuss ab. Jedes Ausschussmitglied muss entweder abstimmen oder sich ausdrücklich enthalten. Mitglieder mit Interessenkonflikten bei einer bestimmten Abstimmung müssen sich enthalten. Für eine Annahme ist eine strikte Mehrheit der nicht-enthobenen Ausschussmitglieder erforderlich.

Wo immer möglich, sollen die Beratungen und Abstimmungen des Ausschusses öffentlich stattfinden.

Wahl des Ausschusses

Eine Ausschusswahl besteht aus zwei Phasen

  • Phase 1: Kandidaten werben um Interesse an einer Teilnahme. Kandidaten müssen von einem Mitglied des Kernteams nominiert werden. Selbstnominierungen sind zulässig.
  • Phase 2: Jedes Mitglied des Kernteams kann jedem Kandidaten null bis fünf Sterne zuweisen. Die Abstimmung erfolgt anonym. Das Ergebnis der Abstimmung wird mit dem STAR-Wahlsystem bestimmt, modifiziert zur Anwendung des Multi-Winner Bloc STAR)-Ansatzes. Bei einem Gleichstand kann dieser durch gegenseitige Einigung der Kandidaten gelöst werden, andernfalls wird der Gewinner zufällig ausgewählt.

Jede Phase dauert ein bis zwei Wochen, nach Ermessen des abtretenden Ausschusses. Für die erste Wahl dauern beide Phasen jeweils zwei Wochen.

Der Wahlprozess wird von einem Wahlleiter verwaltet, der vom abtretenden Steuerungsausschuss nominiert wird. Für die erste Wahl wird der Wahlleiter vom Geschäftsführer der PSF nominiert.

Der Ausschuss sollte idealerweise die Vielfalt der Python-Beitragenden und -Nutzer widerspiegeln, und die Mitglieder des Kernteams werden ermutigt, entsprechend abzustimmen.

Amtszeit

Ein neuer Ausschuss wird nach jeder Feature-Veröffentlichung gewählt. Die Amtszeit jedes Ausschusses beginnt, wenn seine Wahlergebnisse feststehen, und endet, wenn die Amtszeit des nächsten Ausschusses beginnt. Es gibt keine Amtszeitbeschränkungen.

Vakanzen

Ausschussmitglieder können jederzeit von ihrer Position zurücktreten.

Wenn während der regulären Amtszeit des Ausschusses eine Vakanz eintritt, kann der Ausschuss per Abstimmung einen Nachfolger ernennen, der den Rest der Amtszeit ausfüllt.

Wenn ein Ausschussmitglied den Kontakt verliert und einen Monat oder länger nicht erreichbar ist, kann der Rest des Ausschusses per Abstimmung einen Ersatz ernennen.

Interessenkonflikte

Obwohl wir darauf vertrauen, dass die Ausschussmitglieder im besten Interesse von Python handeln und nicht in ihrem eigenen oder dem ihrer Arbeitgeber, kann bereits der bloße Anschein, dass ein einziges Unternehmen die Python-Entwicklung dominiert, schädlich sein und das Vertrauen untergraben. Um jeglichen Anschein eines Interessenkonflikts zu vermeiden, dürfen höchstens 2 Mitglieder des Ausschusses für denselben Arbeitgeber tätig sein.

Bei einer Rats-/Komiteewahl werden, wenn 3 der 5 bestplatzierten Kandidaten für denselben Arbeitgeber arbeiten, die von ihnen am niedrigsten platzierten disqualifiziert und der 6. Kandidat rückt auf den 5. Platz auf; dies wird wiederholt, bis ein gültiger Rat gebildet ist.

Wenn sich während einer Amtszeit des Ausschusses die Umstände ändern und diese Regel gebrochen wird (z. B. aufgrund eines Arbeitgeberwechsels eines Ausschussmitglieds), müssen ein oder mehrere Ausschussmitglieder zurücktreten, um das Problem zu beheben, und die entstehenden Vakanzen können dann wie gewohnt besetzt werden.

Ausschluss von Kernteammitgliedern

Unter außergewöhnlichen Umständen kann es notwendig sein, jemanden gegen seinen Willen aus dem Kernteam zu entfernen. (Beispiel: grobe und fortlaufende Verstöße gegen den Verhaltenskodex.) Dies kann durch eine Abstimmung des Steuerungsausschusses erfolgen, erfordert jedoch, anders als bei anderen Abstimmungen des Steuerungsausschusses, mindestens eine Zwei-Drittel-Mehrheit. Bei 5 stimmberechtigten Mitgliedern bedeutet dies, dass eine 3:2-Stimme nicht ausreicht; 4:1 ist das Minimum, damit eine solche Abstimmung erfolgreich ist. Darüber hinaus ist dies die einzige Befugnis des Steuerungsausschusses, die nicht delegiert werden kann, und diese Befugnis kann nicht genutzt werden, während ein Misstrauensvotum läuft.

Wenn das ausgeschlossene Mitglied des Kernteams auch dem Steuerungsausschuss angehört, wird es auch aus dem Steuerungsausschuss entfernt.

Misstrauensvotum

Unter außergewöhnlichen Umständen kann das Kernteam ein amtierendes Ausschussmitglied oder den gesamten Ausschuss durch ein Misstrauensvotum absetzen.

Ein Misstrauensvotum wird ausgelöst, wenn ein Mitglied des Kernteams öffentlich in einem geeigneten Kommunikationskanal des Projekts dazu aufruft und ein anderes Mitglied des Kernteams den Vorschlag innerhalb einer Woche unterstützt.

Die Abstimmung dauert zwei Wochen. Mitglieder des Kernteams stimmen dafür oder dagegen. Wenn mindestens zwei Drittel der Wähler mangelndes Vertrauen äußern, ist die Abstimmung erfolgreich.

Es gibt zwei Formen von Misstrauensvoten: solche, die sich gegen ein einzelnes Mitglied richten, und solche, die sich gegen den gesamten Ausschuss richten. Der anfängliche Aufruf zu einem Misstrauensvotum muss angeben, welche Art beabsichtigt ist. Wenn ein Votum gegen ein einzelnes Mitglied erfolgreich ist, wird dieses Mitglied aus dem Ausschuss entfernt und die daraus resultierende Vakanz kann wie üblich behandelt werden. Wenn ein Votum gegen den gesamten Ausschuss erfolgreich ist, wird der Ausschuss aufgelöst und eine Neuwahl des Ausschusses wird sofort ausgelöst.

Das Kernteam

Rolle

Das Kernteam ist die Gruppe vertrauenswürdiger Freiwilliger, die Python verwalten. Sie übernehmen viele Rollen, die zur Erreichung der Projektziele erforderlich sind, insbesondere solche, die ein hohes Maß an Vertrauen erfordern. Sie treffen die Entscheidungen, die die Zukunft des Projekts gestalten.

Von den Mitgliedern des Kernteams wird erwartet, dass sie als Vorbilder für die Gemeinschaft und als Hüter des Projekts im Namen der Gemeinschaft und aller, die auf Python angewiesen sind, handeln.

Sie greifen bei Bedarf in Online-Diskussionen oder bei offiziellen Python-Veranstaltungen ein, wenn in seltenen Fällen eine Situation eintritt, die ein Eingreifen erfordert.

Sie haben die Befugnis über die Infrastruktur des Python-Projekts, einschließlich der Website des Python-Projekts selbst, der Python GitHub-Organisation und -Repositories, des Bug-Trackers, der Mailinglisten, IRC-Kanäle usw.

Vorrechte

Mitglieder des Kernteams können an formellen Abstimmungen teilnehmen, typischerweise um neue Teammitglieder zu nominieren und den Steuerungsausschuss zu wählen.

Mitgliedschaft

Mitglieder des Python-Kernteams demonstrieren

  • ein gutes Verständnis der Philosophie des Python-Projekts
  • eine solide Erfolgsbilanz konstruktiven und hilfreichen Verhaltens
  • signifikante Beiträge zu den Projektzielen, in welcher Form auch immer
  • die Bereitschaft, einige Zeit für die Verbesserung von Python aufzuwenden

Da das Projekt reift, gehen die Beiträge über den Code hinaus. Hier ist eine unvollständige Liste von Bereichen, in denen Beiträge für den Beitritt zum Kernteam berücksichtigt werden können, in keiner bestimmten Reihenfolge

  • Arbeit an Community-Management und Öffentlichkeitsarbeit
  • Unterstützung auf Mailinglisten und im IRC
  • Bearbeitung von Tickets
  • Schreiben von Patches (Code, Dokumentation oder Tests)
  • Überprüfung von Patches (Code, Dokumentation oder Tests)
  • Teilnahme an Designentscheidungen
  • Bereitstellung von Fachwissen in einem bestimmten Bereich (Sicherheit, i18n usw.)
  • Verwaltung der Continuous-Integration-Infrastruktur
  • Verwaltung der Server (Website, Tracker, Dokumentation usw.)
  • Pflege verwandter Projekte (alternative Interpreter, Kerninfrastruktur wie Packaging usw.)
  • Erstellung von visuellen Designs

Die Kernteam-Mitgliedschaft erkennt nachhaltige und wertvolle Bemühungen an, die gut mit der Philosophie und den Zielen des Python-Projekts übereinstimmen.

Sie wird durch mindestens zwei Drittel positive Stimmen in einer Abstimmung des Kernteams gewährt, die eine Woche lang geöffnet ist und nicht vom Steuerungsausschuss verweigert wird.

Hinweis

Das Devguide enthält eine vorgeschlagene Vorlage für solche Abstimmungen.

Mitglieder des Kernteams suchen stets nach vielversprechenden Beitragenden, lehren sie, wie das Projekt verwaltet wird, und reichen ihre Namen zur Abstimmung des Kernteams ein, wenn sie bereit sind.

Es gibt keine Zeitbegrenzung für die Mitgliedschaft im Kernteam. Um jedoch der Öffentlichkeit eine angemessene Vorstellung davon zu geben, wie viele Personen Python pflegen, werden Mitglieder des Kernteams, die ihre Mitarbeit eingestellt haben, ermutigt, sich als „inaktiv“ zu bezeichnen. Personen, die in den letzten zwei Jahren keine nicht-trivialen Beiträge geleistet haben, können aufgefordert werden, sich in diese Kategorie zu verschieben, und werden dorthin verschoben, wenn sie nicht antworten. Um ihre Beiträge zu würdigen und zu ehren, werden inaktive Teammitglieder weiterhin neben aktiven Kernteammitgliedern aufgeführt; und wenn sie später ihre Mitarbeit wieder aufnehmen, können sie jederzeit zu ihrem aktiven Status zurückkehren. Während sie sich jedoch im inaktiven Status befinden, verlieren sie ihre aktiven Privilegien wie das Abstimmungsrecht oder die Nominierung für den Steuerungsausschuss sowie den Commit-Zugang.

Die anfänglichen aktiven Mitglieder des Kernteams bestehen aus allen, die derzeit im „Python core“-Team auf GitHub aufgelistet sind (Zugang nur für Kernmitglieder), und die anfänglichen inaktiven Mitglieder bestehen aus allen anderen, die in der Vergangenheit ein Committer waren.

Änderung dieses Dokuments

Änderungen an diesem Dokument erfordern mindestens eine Zwei-Drittel-Mehrheit der abgegebenen Stimmen in einer Abstimmung des Kernteams, die zwei Wochen lang geöffnet sein sollte.

Keine Abstimmung ist erforderlich, um Notizblöcke und die Abschnitte „Aktueller Steuerungsausschuss“ und „Geschichte der Ausschusswahlen“ mit aktuellen Informationen zu aktualisieren.

Historie

Erstellung dieses Dokuments

Das Python-Projekt wurde von Guido van Rossum ins Leben gerufen, der von Anfang bis Juli 2018 als Benevolent Dictator for Life (BDFL) fungierte, als er zurücktrat.

Nach Diskussionen wurden eine Reihe von Vorschlägen für ein neues Governance-Modell vorgelegt, und die Core-Entwickler stimmten ab, um zwischen ihnen zu wählen. Der Gesamtprozess wird in PEP 8000 und PEP 8001 beschrieben, eine Überprüfung anderer Projekte wurde in PEP 8002 durchgeführt, und die Vorschläge selbst wurden als PEPs der Serie 801x aufgeschrieben. Schließlich wurde der Vorschlag in PEP 8016 als neues Governance-Modell ausgewählt und zur Erstellung der ersten Version dieses PEP verwendet. Die PEPs der 8000er-Serie werden zu historischen Referenzzwecken aufbewahrt (und insbesondere enthält PEP 8016 zusätzliche Begründungen und Links zu zeitgenössischen Diskussionen), aber dieses PEP ist nun die offizielle Referenz und wird sich gemäß den hierin beschriebenen Regeln weiterentwickeln.

Geschichte der Ausschusswahlen

Geschichte der Änderungen

  • 17.04.2019: Hinzufügung der Abstimmungsdauer für Core-Entwickler und Änderungen an diesem Dokument.
  • 10.12.2024: Übernahme des Multi-Winner Bloc STAR-Abstimmungsverfahrens für Ausschusswahlen.
  • 10.12.2024: Hinzufügung einer einwöchigen Frist für die Unterstützung eines Misstrauensvotums.

Danksagungen

Dieses PEP begann als PEP 8016, das von Nathaniel J. Smith und Donald Stufft geschrieben wurde, basierend auf einem Django-Governance-Dokument von Aymeric Augustin, und integrierte Feedback und Unterstützung von zahlreichen anderen.


Quelle: https://github.com/python/peps/blob/main/peps/pep-0013.rst

Zuletzt geändert: 2025-02-01 08:55:40 GMT