プロジェクト管理
"一人ではシンフォニーを奏でることはできない。それを演奏するにはオーケストラ全体が必要だ"
— Halford E. Luccock
このドキュメントでは、REST framework のプロジェクト管理プロセスについて概説します。
目標は、プロジェクトに高い「バス係数」を持たせ、近い将来も十分にサポートされ続けるようにすることです。私たちのプロセス改善のための提案は大歓迎です。
メンテナンスチーム
私たちは四半期ごとのメンテナンスサイクルを持っており、新しいメンバーがメンテナンスチームに参加することがあります。現在、チームの規模は5人に制限しており、新しいメンバーの参加を促進するために、メンバーが1サイクルチームから離れることを推奨する場合があります。
現在のチーム
- @tomchristie
- @xordoquy (リリース管理者)
- @carltongibson
- @kevin-brown
- @jpadilla
メンテナンスサイクル
各メンテナンスサイクルは、Process
ラベルが付いた issue が開かれることによって開始されます。
- メンテナーの役割を検討するには、issue にコメントしてください。
- 既存のメンバーは、自分の名前をチェックマークで示すことで、次のサイクルに明示的に参加する必要があります。
- 新しいチームに関する最終決定は
@tomchristie
によって行われます。
メンテナンスチームのメンバーは、リポジトリへの共同作業者として追加されます。
次のテンプレートは、issue の説明に使用する必要があり、チームを選択するための正式なプロセスとして機能します。
This issue is for determining the maintenance team for the *** period.
Please see the [Project management](https://django-rest-framework.dokyumento.jp/topics/project-management/) section of our documentation for more details.
---
#### Renewing existing members.
The following people are the current maintenance team. Please checkmark your name if you wish to continue to have write permission on the repository for the *** period.
- [ ] @***
- [ ] @***
- [ ] @***
- [ ] @***
- [ ] @***
---
#### New members.
If you wish to be considered for this or a future date, please comment against this or subsequent issues.
To modify this process for future maintenance cycles make a pull request to the [project management](https://django-rest-framework.dokyumento.jp/topics/project-management/) documentation.
チームメンバーの責任
チームメンバーは次の責任を負います。
- 無効なチケットまたは解決済みのチケットをクローズします。
- チケットにトリアージラベルとマイルストーンを追加します。
- 確定済みのプルリクエストをマージします。
mkdocs gh-deploy
を使用してドキュメントをビルドおよびデプロイします。- 含まれる翻訳パックをビルドおよび更新します。
メンテナー向けの追加注意事項
- コード変更はプルリクエストの形式で行う必要があります。masterに直接プッシュしないでください。
- メンテナーは通常、自分のプルリクエストをマージすべきではありません。
- 各issue/プルリクエストには、トリアージ後に正確に1つのラベルが必要です。
- トリアージされていないissueは、is:open no:labelで検索してください。
REST framework プロジェクトに積極的に参加することは、メンテナンスチームの一員である必要はないことに注意してください。issue のトリアージやプロジェクトの改善のほとんどすべての重要な部分は、リポジトリでの共同作業者のステータスに関係なく、積極的に取り組むことができます。
リリースプロセス
リリースマネージャーは、四半期ごとのメンテナンスサイクルごとに選出されます。
- マネージャーは、
@tomchristie
によって選出される必要があります。 - マネージャーには、PyPIパッケージにメンテナーの役割が追加されます。
- 前のマネージャーは、PyPIパッケージからメンテナーの役割が削除されます。
PyPI リリースは、現在のリリースマネージャーまたは@tomchristie
によって処理されます。すべてのリリースには、Release
ラベルが付けられ、適切なマイルストーンに対してマークされたオープンなissueが必要です。
次のテンプレートは、issue の説明に使用する必要があり、リリースチェックリストとして機能します。
Release manager is @***.
Pull request is #***.
During development cycle:
- [ ] Upload the new content to be translated to [transifex](https://django-rest-framework.dokyumento.jp/topics/project-management/#translations).
Checklist:
- [ ] Create pull request for [release notes](https://github.com/encode/django-rest-framework/blob/master/docs/topics/release-notes.md) based on the [*.*.* milestone](https://github.com/encode/django-rest-framework/milestones/***).
- [ ] Update supported versions:
- [ ] `setup.py` `python_requires` list
- [ ] `setup.py` Python & Django version trove classifiers
- [ ] `README` Python & Django versions
- [ ] `docs` Python & Django versions
- [ ] Update the translations from [transifex](https://django-rest-framework.dokyumento.jp/topics/project-management/#translations).
- [ ] Ensure the pull request increments the version to `*.*.*` in [`restframework/__init__.py`](https://github.com/encode/django-rest-framework/blob/master/rest_framework/__init__.py).
- [ ] Ensure documentation validates
- Build and serve docs `mkdocs serve`
- Validate links `pylinkvalidate.py -P http://127.0.0.1:8000`
- [ ] Confirm with @tomchristie that release is finalized and ready to go.
- [ ] Ensure that release date is included in pull request.
- [ ] Merge the release pull request.
- [ ] Push the package to PyPI with `./setup.py publish`.
- [ ] Tag the release, with `git tag -a *.*.* -m 'version *.*.*'; git push --tags`.
- [ ] Deploy the documentation with `mkdocs gh-deploy`.
- [ ] Make a release announcement on the [discussion group](https://groups.google.com/forum/?fromgroups#!forum/django-rest-framework).
- [ ] Make a release announcement on twitter.
- [ ] Close the milestone on GitHub.
To modify this process for future releases make a pull request to the [project management](https://django-rest-framework.dokyumento.jp/topics/project-management/) documentation.
リリースを PyPI にプッシュするときは、ドキュメントと PyPI インストールが固定されたパッケージセットに対して一貫してビルドされるように、環境が開発版のrequirement.txt
からインストールされていることを確認してください。
翻訳
メンテナンスチームは、REST framework に含まれる翻訳パックの管理を担当します。ソース文字列を複数の言語に翻訳することは、transifexサービスを通じて管理されます。
Transifexの管理
公式のTransifexクライアントは、翻訳をTransifexにアップロードおよびダウンロードするために使用されます。クライアントは pip を使用してインストールされます。
pip install transifex-client
それを使用するには、パスワードを持つTransifexへのログインが必要になり、Transifexプロジェクトへの管理者アクセス権が必要です。資格情報を含む~/.transifexrc
ファイルを作成する必要があります。
[https://www.transifex.com]
username = ***
token = ***
password = ***
hostname = https://www.transifex.com
新しいソースファイルのアップロード
ユーザーに表示される文字列が変更された場合は、翻訳者が翻訳を開始できるように、それらを Transifex にアップロードする必要があります。これを行うには、次を実行してください。
# 1. Update the source django.po file, which is the US English version.
cd rest_framework
django-admin makemessages -l en_US
# 2. Push the source django.po file to Transifex.
cd ..
tx push -s
ソースファイルをプッシュすると、Transifex はリソースのソース文字列を新しいソースファイルのものと一致するように更新します。
古いソースファイルと新しいソースファイルの違いがどのように処理されるかを次に示します。
- 新しい文字列が追加されます。
- 変更された文字列も追加されます。
- 新しいソースファイルに存在しない文字列は、その翻訳とともにデータベースから削除されます。後でそのソース文字列が再追加された場合、Transifex翻訳メモリに翻訳文字列が自動的に含まれます。
翻訳のダウンロード
翻訳者が翻訳作業を完了したら、その作業を Transifex から REST framework リポジトリにダウンロードする必要があります。これを行うには、次を実行します。
# 3. Pull the translated django.po files from Transifex.
tx pull -a --minimum-perc 10
cd rest_framework
# 4. Compile the binary .mo files for all supported languages.
django-admin compilemessages
プロジェクト要件
すべてのテスト要件は、テスト実行が再現可能であることを保証するために、正確なバージョンに固定されています。requirements
ディレクトリに要件を保持します。要件ファイルは、tox.ini
設定ファイルから参照され、テストで使用されるパッケージバージョンの単一の信頼できる情報源を確保します。
パッケージのアップグレードは、一般的に分離されたプルリクエストとして処理する必要があります。pip list --outdated
を使用すると、新しいバージョンで利用可能なパッケージがあるかどうかを確認できます。
プロジェクトの所有権
PyPI パッケージは@tomchristie
によって所有されています。バックアップとして、@j4mie
もパッケージの所有権を持っています。
@tomchristie
がプロジェクトへの参加を中止した場合、@j4mie
には所有権の譲渡義務があります。
未解決の管理と所有権の問題
次の問題はまだ対処する必要があります。