[Proposal] Deprecate Python plugin framework and consolidate on Go
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Refactoring
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Ambito
- backend, build-system, ci-cd, developer-experience, devops
Direzione di ricerca
Inizia esaminando backend/python/, backend/Dockerfile, Dockerfile.local, .github/workflows/test.yml, .github/workflows/test-e2e.yml e i Make targets elencati. Poi confronta il plugin Python azuredevops con azuredevops_go, in particolare l’estrazione dell’ambiente CI/CD. Il lavoro è considerato completato quando i maintainer concordano sulla proposta e sono stati identificati i responsabili delle fasi di avviso, migrazione e rimozione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Proposal: Deprecate the Python plugin framework and consolidate on Go
Summary
Propose to deprecate the Python plugin framework (backend/python/, a.k.a. PyDevLake) and remove it from the codebase after a 3-month deprecation window. Going forward, all plugins should be written in Go. This reduces maintenance overhead, simplifies the Docker image and CI, and focuses contributor effort on a single, well-supported runtime.
Background
The Python plugin framework was introduced in Feb 2023 (#3702, #4438) to lower the barrier for writing plugins. In practice it never saw adoption:
- Only one plugin ever shipped on it:
azuredevops(Python). - The
dbtPython plugin was already removed on 2026-08-31 (#8970). - A fully-featured Go implementation,
azuredevops_go, now exists and is actively developed (on-premises support landed 2026-08-16, #9014).
Evidence: Python plugins are not being maintained
| Plugin | Last meaningful commit | Note |
|---|---|---|
azuredevops (Python) |
2025-12-31 feat: add environment_pattern (#8671) |
No feature/fix since; only deps refresh & runtime bumps |
pydevlake framework |
2025-12-31 (same as above) | Last real fix: #8957 on 2026-07-15 (missing composite PKs) |
dbt (Python) |
removed 2026-08-31 (#8970) | Already gone |
In the last ~12 months, the only commits touching backend/python/ are dependency refreshes, Poetry/uv lock bumps, a Python 3.9→3.11 runtime bump, and a single primary-key fix. Meanwhile the Go side shipped 40+ plugins and continues to receive features weekly.
Benefits
- One runtime to maintain. Eliminate the parallel PyDevLake framework, its RPC bridge,
pydevlakepackage,uv/Poetry tooling, and Python-specific test/build scripts. - Simpler Docker build. Today
backend/Dockerfileis based onpython:3.11-slim-bookworm, installs python3-dev/pip/uv, copiespython/, and runsbuild.sh. After removal the image can be a slim Go-based image — smaller, fewer CVEs, faster builds.Dockerfile.local's "empty python plugins dir" workaround also goes away. - Simpler CI. Two workflows (
.github/workflows/test.yml,test-e2e.yml) and Make targets (python-dep,python-unit-test,build-python,build-pydevlake) can be dropped. - Clearer contributor story. New plugin authors get one path (Go) with 40+ reference implementations instead of choosing between two frameworks where one is unmaintained.
- No functional loss. The only remaining Python plugin (
azuredevops) is superseded byazuredevops_go, which already has broader feature coverage (Server/on-prem support).
Plan & Timeline
| Phase | Window | Actions |
|---|---|---|
| 1. Warning | T+0 (on issue merge) | Add deprecation notices to: backend/python/README.md, plugin README.mds, server startup log line, and config-ui plugin selection UI. Mark azuredevops (Python) as deprecated in the plugin registry; point users to azuredevops_go. |
| 2. Freeze | T+1 month | Stop accepting new features/fixes for Python plugins. Only critical security fixes land. Add a CI gate rejecting new files under backend/python/plugins/. |
| 3. Migration assist | T+1~T+3 months | Ship a migration guide + script to move any remaining azuredevops (Python) connections/scopes to azuredevops_go. Document data-layer equivalence. |
| 4. Removal | T+3 months | Delete backend/python/, PyDevLake, the Python Dockerfile stage, make python-* targets, and Python CI jobs. Remove azuredevops (Python) from the plugin registry. |
Total deprecation window: 3 months from the date this proposal is accepted.
Risks & Mitigations
- Existing users of
azuredevops(Python): Mitigated byazuredevops_goparity + migration guide in Phase 3. The Go plugin already covers cloud + on-prem. - External contributors with in-progress Python plugins: The 3-month window + the warning phase gives them time to port. No private Python plugins are known to exist in the wild.
- Reverting later: Not needed; Go covers all current and planned use cases.
What we need
- 👍 / 👎 from maintainers and community on deprecating Python.
- Owners to confirm
azuredevops_gofeature parity with the Pythonazuredevopsplugin (esp. CI/CD environment extraction). - Volunteers to write the Phase-3 migration guide.
- Lingua principale
- Go
- Stelle
- 3.1k
- Fork
- 812
- Merge medio
- 2g 9h
- PR unite (30g)
- 56
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/devlake
-
type/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
type/bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
Tutte le issue di apache/devlake
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
bazel-contrib/rules_go#4726 · 1 commento ·
-
area/auto-scaling area/monitoring area/ops-productivity kind/enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Type/Improvement
Difficoltà 1/5 1-3 ore Idoneità per principianti 90/100
OpenNSW/nsw-srilanka#522 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 92/100