[Proposal] Deprecate Python plugin framework and consolidate on Go
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 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 环境提取。维护者同意该提案,并确定警告、迁移和移除阶段的负责人后,即可视为完成。
由索引模型根据 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 小时
- 30 天内合并 PR
- 56
贡献指南
这个仓库没有索引到贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
apache/devlake 的其他 Issue
-
type/bug
难度 2/5 1-3 小时 新手友好度 82/100
-
难度 3/5 1-2 天 新手友好度 65/100
-
难度 5/5 一周以上 新手友好度 35/100
-
type/bug
难度 4/5 3-5 天 新手友好度 52/100
-
难度 5/5 一周以上 新手友好度 35/100
相似的 Issue
-
agentic-workflows
难度 2/5 1-3 小时 新手友好度 76/100
-
agentic-workflows
难度 2/5 1-3 小时 新手友好度 70/100
microsoft/agent-framework-go#1179 ·
-
bug
难度 2/5 1-3 小时 新手友好度 76/100
-
[Bug]: OLLAMA_KEEP_ALIVE="5m" / "24h" crashes Ollama embedding and vision models with ValueError 未关闭
难度 2/5 1-3 小时 新手友好度 75/100
infiniflow/ragflow#20223 · 1 个 reaction ·
-
bug needs triage pkg/translator/faro
难度 2/5 1-3 小时 新手友好度 88/100
open-telemetry/opentelemetry-collector-contrib#51484 · 1 条评论 ·