PDEP-1: 目的とガイドライン

PDEPの定義、目的、範囲

PDEP (pandas enhancement proposal) は、PythonのPEPやNumPyのNEPと同様に、pandasにおける**主要な**変更に関する提案です。

バグ修正や概念的に軽微な変更(例:関数へのパラメータの追加)はPDEPの範囲外です。PDEPは、差し迫っておらず、明白でない変更、pandasコミュニティの全員が今後の変更の可能性を認識する必要がある場合に使用されます。そのような変更は、実装される前に詳細な文書化を必要とし、コミュニティ内で頻繁に重要な議論につながります。

PDEPは、ユーザー向けの変更、内部的な変更、および重要な議論に適しています。PDEPに値するトピックの例としては、実質的なAPI変更、破壊的な動作変更、モジュールをpandasから別のリポジトリに移動すること、またはpandasブロックマネージャーのリファクタリングなどが挙げられます。どの問題がPDEPプロセス全体を必要とするのに十分な範囲を持っているかを知るのは常に自明ではありません。一部の単純なAPI変更は、コアチーム内で十分な合意があり、コミュニティへの影響も最小限です。一方、問題が議論の的になった場合、つまり重要な議論を引き起こした場合、PDEPを開設して議論を形式化し文書化することを提案することで、より広範なコミュニティが参加しやすくなるでしょう。参考として、PDEPとなりえた問題のリストを参照してください。

PDEPガイドライン

対象読者

PDEPは誰でも利用できる公開文書ですが、PDEPを作成する際に考慮すべき主要な利害関係者は次のとおりです。

PDEPの著者

誰でもPDEPを提案できますが、コアメンバーは非コア貢献者による提案について助言するために協力する必要があります。コミュニティメンバーとしてPDEPを提出するには、イシューでPDEPの概念を提案し、協力するpandasチームメンバーを見つけてください。彼らはPDEPプロセスについて助言することができ、PDEPがPDEPリポジトリに提出される際に、PDEPの助言者として記載されるべきです。

ワークフロー

論理的根拠

私たちのワークフローは、コンセンサスを求めるプロセスを支援し、現在の著者と将来の著者、および議決権を持つメンバーに明確性を提供するために作成されました。これは厳格なポリシーではなく、何らかの形で決定を「強制」または「こっそり行う」ような形でこれを利用しようとするいかなる解釈も推奨しません。私たちは、すべてのコミュニティメンバーからの透明性、活発な議論、フィードバック、妥協を期待し、奨励します。

PDEPの状態

PDEPの可能な状態は以下の通りです。

次に、PDEPがたどることができるワークフローについて説明します。

PDEPの提出

PDEPの提案は、web/pandas/pdeps/に新しいファイルを追加するPRを作成することによって行われます。このファイルはマークダウンファイルであり、期待される形式の参照としてweb/pandas/pdeps/0001-purpose-and-guidelines.mdを使用できます。

PDEPの初期ステータスは`Status: Draft`となります。意思決定プロセスに進む準備ができた場合、著者によって`Status: Under discussion`に変更されます。

PDEP議論のタイムライン

PDEPの議論は最大60日間開かれたままになります。この期間は、迅速に回答できない可能性のあるボランティアの参加を可能にし、参加者からの提案や考慮事項に基づいて変更を行う十分な時間を提供することを目的としています。同様に、その後の投票期間は15日間開かれたままになります。

PDEPに関する議論を可能にし、奨励するために、通知スケジュールに従います。以下の各ステップで、pandasチームとpandas-devメーリングリストはGitHubとEメールで通知されます。

議論開始から30日後、未対応のコメントがないまま15日が経過した場合、著者は投票期間開始まで残り15日であることを早めにリマインドすることで、議論期間を早期に終了させることができます。

投票

投票期間が開始されると、PDEPの議論プルリクエストにリンクするVOTE issueが作成されます。議決権を持つ著者を含め、各議決権メンバーは、以下のコメントのいずれかを追加することで投票できます。

不承認票には、PDEP議論イシューへの事前の参加が必要です。

議決権を持たないメンバーによる公開VOTEイシューへのコメントは削除されます。

投票期間が終了すると、どの投票者も、承認票の合計w、棄権票の合計x、不承認票の合計y、VOTEイシューに回答しなかった議決権メンバーの数zという形式で、コメントに投票を集計できます。投票の集計には、定足数が達成されたかどうかが記載されます。

定足数と多数決

PDEPの投票が提案の承認につながるには、定足数が必要です。すべての投票(棄権を含む)は定足数に数えられます。定足数は、次の2つの値の低い方として計算されます。

定足数が満たされた場合、棄権しない投票の70%の過半数も必要です。つまり、承認票と不承認票の70%が賛成でなければなりません。

したがって、棄権票は定足数には数えられますが、過半数には数えられません。議決権を持つメンバーは、議論に参加し、提案に異議があるものの、提案の進行を止めたり、完全な支持を示したりしたくない場合に、棄権を選択することができます。

投票期間終了までに定足数が達成されなかった場合、PDEPは承認されません。そのステータスは却下に変更されます。

承認済みPDEP

PDEPが承認されると、完了期限は無期限で、PDEPの実装に向けてあらゆる貢献を行うことができます。pandasへの貢献者はボランティアと様々な財源から報酬を得ている開発者の混合であり、優先順位も異なるため、pandasの開発を理解し予測することは困難です。PDEPが実装されることに関心のある企業、機関、または個人、あるいはpandasのロードマップの進捗を全体的に確認したい場合は、貢献ページで協力できる方法を確認してください。

実装されたPDEP

PDEPが実装され、pandasのメインブランチで利用可能になると、そのステータスは`Status: Implemented`に変更されます。これにより、PDEPがロードマップや将来の計画の一部ではなく、すでに起こった変更であることが明確になります。PDEPの実装が利用可能になる最初のpandasバージョンも、例えば`Implemented: v2.0.0`のようにPDEPヘッダーに含まれます。

却下されたPDEP

PDEPは、その実装がプロジェクトの最善の利益にならないという最終決定が下された場合、却下されることがあります。却下されたPDEPは、議論する価値のある議論があり、pandasへの変更に関する決定が下されるため、承認されたPDEPと同様に有用です。これらは`Status: Rejected`としてマージされ、何が議論され、議論の結果がどうであったかという可視性が確保されます。PDEPはさまざまな理由で却下される可能性があり、例えば、後方互換性のない優れたアイデアで、破壊的な変更が実装する価値がないと判断される場合があります。

PDEPの著者自身がPDEPが実際には悪いアイデアであると判断した場合、または広く支持されていない、あるいは競合する提案の方が優れた代替案であると受け入れた場合、最終決定が下される前にPDEPの著者(たち)がPDEPを撤回すること(`Status: Withdrawn`)もできます。

著者は、却下または撤回されたPDEPを再提出することを選択できます。その場合、さらなる議論や修正された提案が異なる結果につながる可能性があると信じるかどうかについて、著者の判断に委ねられます。その後、以前却下されたPDEPへのリンクを含む新しいPDEPが作成されます。

無効なPDEP

提出されたPDEPで、適切な文書が含まれていない、範囲外である、またはその他の理由でコミュニティに役立たない場合、PRは却下としてマージされるのではなく、著者との議論の後にクローズされます。これは、承認されたPDEPと同様に優れた文書を含むべきだが、最終的な決定が変更を実装しないことだった却下されたPDEPのリストにノイズを追加することを避けるためです。

PDEPの進化

ほとんどのPDEPは、承認後は変更されないと予想されます。変更に関する合意が形成され、それらが実装されると、PDEPは開発がなぜ行われたのか、そして議論の詳細を理解するためにのみ役立つでしょう。

しかし、場合によっては、PDEPが更新されることがあります。たとえば、このPDEP-1のように、手順やポリシーを定義するPDEP。または、実装を試みた後、元のPDEPを時代遅れにする新しい知識が得られ、変更が必要になる場合です。元のPDEPに特定の変更が行われる場合、これは編集され、その`Revision: X`ラベルは1つ増え、`PDEP-N history`セクションに注記が追加されます。これにより、読者はPDEPが変更されたことを理解し、混乱を避けることができます。

PDEPとなりえた問題のリスト(参考)

潜在的なPDEPの明確な例

際どい例

DataFrameSeriesといったコア機能の小さな変更は、ユーザーに大きな影響を与える可能性が高いため、常にPDEP候補として検討すべきです。しかし、他の機能における同じ種類の変更は、PDEP候補として適切ではないでしょう。とはいえ、どんなに小さな変更であっても議論の的となった場合はPDEP候補となります。より多くの注意や正式な意思決定プロセスが役立つかどうかを検討してください。以下に、私たちの意味を明確にするのに役立つと思われるいくつかの例を示します。

PDEP-1の履歴