[Proposal] Deprecate Python plugin framework and consolidate on Go
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- リファクタリング
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
調査の方向性
まず backend/python/、backend/Dockerfile、Dockerfile.local、.github/workflows/test.yml、.github/workflows/test-e2e.yml、および記載されている Make targets を確認します。次に、Python azuredevops plugin と azuredevops_go を比較し、特に CI/CD 環境の抽出に注目します。maintainers が提案に合意し、警告、移行、削除の各フェーズの担当者が特定されれば完了です。
索引モデルが issue の本文から書いたものです。
説明
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.
- 主要言語
- Go
- スター
- 3.1k
- フォーク
- 812
- 平均マージ
- 2日 9時間
- マージ済み PR(30日)
- 56
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/devlake のほかの issue
-
type/bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 65/100
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
-
type/bug
難易度 4/5 3〜5日 初心者へのやさしさ 52/100
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
-
Bob Shell support オープンenhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
santhosh-tekuri/jsonschema#276 ·