Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Consider relicensing to a permissive license (MIT/Apache-2.0) for enterprise adoption

オープン
#326 コメント 7 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
25/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
静か
技術スタック
python
領域
release

調査の方向性

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:

  1. File-level copyleft: Any modifications to MPL-2.0 licensed files must be released under the same license
  2. Distribution triggers: Distributing the software (e.g., in Docker images, CI pipelines, packaged test frameworks) can trigger compliance obligations
  3. 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 はありません

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

pytest-dev/pytest-rerunfailures のほかの issue

pytest-dev/pytest-rerunfailures の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。