失去维护是每个开源项目都会遇到的情况,如何自救呢?
前几天,在 B
站上面看到了 Grey Li
在 PyCon China 2023 上面的一个小演讲。主要讲的是,关于自己最近尝试把几个失去维护的 Flask
扩展通过各种方式救活的故事,号召大家多多参与开源项目。
下面是我总结了一下 PPT
,提取的主要内容:
如何拯救一个被遗弃的开源项目?
- 赢得信任
- 做贡献提升权限
- 发邮件要权限
- 获得权限
GitHub
仓库权限PyPI
法宝权限
- 给维护者的建议 -
Bus Factor
- 至少两个
GitHub
维护者 - 至少两个
PyPI
维护者 - 设置
GitHub Actions for PyPI publish
- 设置
GitHub
账户继任者 - 捐赠项目给社区组织(比如
pallets-eco
)
- 至少两个
- 最后一招
Make a new one
- 赢得信任
如何更新一个古老
Python
项目?- nose -> pytest
- Example: miracle2k/flask-assets/pull/161
- Travis -> GitHub Actions
- Example: miracle2k/flask-assets/pull/162
- setup.py -> pyproject.toml
pip install build & python -m build
- Example: writing-pyproject-toml
- pyupgrade
pip install pyupgrade
pyupgrade --py36-plus app.py
- nose -> pytest
值得注意的是,关于 GitHub Actions for PyPI publish 的知识点,其可以不需要获取项目的 PyPI
权限,就可以触发打包更新。对应自己或者拯救失去维护的 Flask
扩展都是一个很好的实践。
jobs:
pypi-publish:
name: upload release to PyPI
runs-on: ubuntu-latest
# Specifying a GitHub environment is optional, but strongly encouraged
environment: release
permissions:
# IMPORTANT: this permission is mandatory for trusted publishing
id-token: write
steps:
# retrieve your distributions here
- name: Publish package distributions to PyPI
- uses: pypa/gh-action-pypi-publish@release/v1