Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

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

Aperta
#326 7 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
25/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
python
Ambito
release

Direzione di ricerca

Inizia dai metadati della licenza in pyproject.toml ed esamina la cronologia dei contributi per determinare chi deve dare il proprio consenso. I maintainer devono scegliere tra MIT e Apache-2.0 e ottenere l’accordo di tutti i contributori prima di modificare la licenza del progetto. Il lavoro è completato quando la licenza scelta è approvata e i metadati del repository la riflettono.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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)
Lingua principale
Python
Stelle
480
Fork
110
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di pytest-dev/pytest-rerunfailures

Tutte le issue di pytest-dev/pytest-rerunfailures

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.