Consider relicensing to a permissive license (MIT/Apache-2.0) for enterprise adoption
まだ誰も着手していません。
評価
調査の方向性
pyproject.toml のライセンスメタデータから始め、誰の同意が必要かを判断するためにコントリビューターの履歴を確認します。メンテナーは MIT と Apache-2.0 のどちらかを決定し、プロジェクトのライセンスを変更する前にすべてのコントリビューターから同意を得る必要があります。選択したライセンスが承認され、リポジトリのメタデータに反映されていれば完了です。
索引モデルが issue の本文から書いたものです。
説明
pytest-rerunfailures is licensed under MPL-2.0 (Mozilla Public License 2.0). While MPL-2.0 is an OSI-approved open source license, its copyleft provisions create adoption barriers in enterprise environments.
From pyproject.toml:
license.text = "MPL-2.0"
Why This Matters
Enterprise organizations running security/license scanners (Snyk, Black Duck, FOSSA, WhiteSource) commonly have policies that flag or block MPL-2.0 dependencies because:
- File-level copyleft: Any modifications to MPL-2.0 licensed files must be released under the same license
- Distribution triggers: Distributing the software (e.g., in Docker images, CI pipelines, packaged test frameworks) can trigger compliance obligations
- Legal review overhead: Each MPL-2.0 dependency typically requires legal review and an exception approval process
In practice, this means teams that want to use pytest-rerunfailures in enterprise CI/CD pipelines either:
- Go through a lengthy legal exception process
- Build custom retry plugins from scratch to avoid the dependency
We chose the latter — building a ~190-line custom retry plugin that reimplements the core functionality (--reruns, --reruns-delay, per-test @pytest.mark.flaky) using pytest_runtest_protocol and
runtestprotocol. It works, but it's duplicated effort that wouldn't be necessary under a permissive license.
Context: The pytest Ecosystem is Permissive
Most of the pytest plugin ecosystem uses permissive licenses:
┌──────────────────────┬──────────────────────┐
│ Package │ License │
├──────────────────────┼──────────────────────┤
│ pytest │ MIT │
├──────────────────────┼──────────────────────┤
│ pytest-xdist │ MIT │
├──────────────────────┼──────────────────────┤
│ pytest-html │ MPL-2.0 (same issue) │
├──────────────────────┼──────────────────────┤
│ pytest-playwright │ Apache-2.0 │
├──────────────────────┼──────────────────────┤
│ pytest-asyncio │ Apache-2.0 │
├──────────────────────┼──────────────────────┤
│ pytest-cov │ MIT │
├──────────────────────┼──────────────────────┤
│ pytest-mock │ MIT │
├──────────────────────┼──────────────────────┤
│ pytest-timeout │ MIT │
├──────────────────────┼──────────────────────┤
│ pytest-rerunfailures │ MPL-2.0 │
└──────────────────────┴──────────────────────┘
pytest-rerunfailures is one of the few popular pytest plugins that uses a copyleft license. This creates friction for teams that can freely use the rest of the ecosystem.
Suggestion
Consider relicensing to MIT or Apache-2.0 to align with the broader pytest ecosystem and remove enterprise adoption barriers.
This package has no transitive dependencies beyond packaging and pytest itself (both permissive). A license change would have no upstream implications.
I understand relicensing requires consent from all contributors, and this may not be a simple change. But given the package's role as essential testing infrastructure, a permissive license would
significantly broaden adoption in enterprise environments where license compliance is non-negotiable.
Our Workaround
For reference, we built a custom replacement (~190 lines) that provides:
- --retries N CLI flag (equivalent to --reruns)
- --retry-delay CLI flag (equivalent to --reruns-delay)
- @pytest.mark.retry(count=N) marker (equivalent to @pytest.mark.flaky)
- Full protocol re-run (setup + call + teardown) so Playwright fixtures get fresh browser contexts
This works but represents duplicated community effort.
Environment
- pytest-rerunfailures 16.1
- Python 3.13
- Snyk enterprise license policy (blocks MPL-2.0)
- 主要言語
- Python
- スター
- 480
- フォーク
- 110
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
pytest-dev/pytest-rerunfailures のほかの issue
-
Zero rerun delay can abort with OverflowError for a large finite backoff factor対応中かも @AryanRG が 11 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
Non-finite rerun delay settings abort pytest with INTERNALERROR対応中かも @Arham-Begani が 9 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 35/100
-
fail-on-flaky returns success after a rerun with xdist対応中かも @harbinresearcher が 11 日前に担当しました。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 15/100
-
Add ability to raise runtime warnings on reruns対応中かも @LouisDeconinck が 40 日前に担当しました。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
pytest-dev/pytest-rerunfailures#318 · コメント 2 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
pytest-dev/pytest-rerunfailures#313 · コメント 5 件 ·
pytest-dev/pytest-rerunfailures の issue をすべて見る
似ている issue
-
backlog
難易度 1/5 1時間未満 初心者へのやさしさ 91/100
EchoTools/nevr-runtime#1108 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
btclib-org/btclib-wallet#587 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
Judgment-Pack/judgment-pack-spec#275 ·
メンテナーはふだん 1 日以内に返信