项目治理

本文档描述了 pypdf 项目的管理方式。它描述了不同的参与者、他们的角色和他们的责任。

术语

  • 项目是 pypdf——一个免费的开源纯 Python PDF 库,能够拆分、合并、裁剪和转换 PDF 文件的页面。它包括 GitHub 上的代码、问题和讨论ReadTheDocs 上的文档PyPI 上的包,以及 GitHub 上的网站

  • 维护者是拥有技术权限来更改项目某一部分的人。维护者的职责是确保项目运行并不断改进。

  • 贡献者是为项目做出贡献的人。贡献方式可以是编写代码——最好是通过分叉并创建一个 pull 请求,但这由维护者决定。其他贡献者可能会描述问题,帮助提问已有问题,以便更容易回答,参与讨论,或帮助改进文档。贡献者类似于维护者,但没有技术权限。

  • 用户是将 pypdf 导入到自己代码中的人。所有 pypdf 用户都是开发者,但并不是了解 pypdf 内部实现的开发者。他们只使用 pypdf 的公共接口。相比贡献者,他们对 PDF 的了解可能较少。

  • 社区是所有人——用户、贡献者和维护者。

治理、领导与推动 pypdf 前进

pypdf 是一个免费开源项目,拥有超过 100 名贡献者,并且可能有超过 1000 名用户。

由于 pypdf 与任何公司没有正式关系,也没有资金支持,所有由社区完成的工作都是志愿贡献。人们并没有报酬,而是选择在空闲时间创造软件,供更多人使用。对此必须给予尊重和认可。

尽管社区庞大,但项目在 2016 年到 2022 年期间处于休眠状态。尽管仍然有人提问、报告问题和创建 pull 请求,但维护者没有时间推动 pypdf 的发展。在这段时间里,没有其他人主动承担起新的维护者角色。

因此,pypdf 采用了 仁慈独裁者 治理模式。仁慈独裁者是一个拥有所有技术权限的维护者——最重要的是有权限将新版本的 pypdf 推送到 PyPI。

作为仁慈独裁者,他们会倾听社区的意见,尽力做出对整个社区有益的决策——包括当前的社区和未来可能的社区。作为独裁者,仁慈独裁者始终拥有独立决策的权力和权利——即使是与某些社区成员的意见相悖。

由于 pypdf 是开源软件,社区的部分成员可以分叉代码并创建新的社区。这有助于限制一个不称职的仁慈独裁者所能造成的损害。

项目语言

项目的语言是(美式)英语。所有文档和问题必须使用英语编写,以确保社区能够理解。

我们非常感谢社区中很多成员的母语不是英语。我们会尽力理解他人——自动翻译工具 可能会有所帮助。

期望

社区可以期待以下内容:

  • 仁慈独裁者会尽力做出对整个社区有益的决策。仁慈独裁者意识到自己的决策会影响整个社区。一旦仁慈独裁者发现自己没有足够的时间推动 pypdf 发展时,他们会寻找新的仁慈独裁者。预计仁慈独裁者会在某个时刻选择下台(希望是在去世之前),因此这并不是一个终身职位(BDFL)。

  • 每个 维护者(包括仁慈独裁者)都意识到自己的权限以及可能带来的影响。他们重视安全性,确保项目不受到损害。如果他们不再需要这些技术权限,他们会主动放回去。任何长期贡献者都可以成为维护者。当维护者意识到自己无法再投入足够时间时,他们应该主动辞去维护者职务。对他们的贡献将在 历史 中得到表彰。

  • 每个 贡献者 都意识到维护者和仁慈独裁者的时间是有限的。简短的 pull 请求,简要描述解决的问题并附带单元测试,通常更容易被合并——因为维护者能更容易看出这个贡献不会对项目整体造成损害。贡献者的贡献会在 Git 历史和公开问题中得到记录。如果你希望看到其他方式的记录,请告诉我们

  • 每个 社区成员 都使用尊重他人的语言。我们都是人,都会因为关心的事情而感到沮丧,生活中也有很多不为人知的事。pypdf 不为贡献者提供报酬——在与他人互动时,请记住这一点。我们在这里是因为我们希望帮助他人。

问题和讨论

问题是任何旨在推动 pypdf 前进的技术描述:

  • 错误报告:由于 pypdf 开发者的错误,导致某些问题发生。

  • 功能请求:pypdf 并未支持 PDF 规范中的所有功能。肯定还有一些便捷方法,能大大帮助用户。

  • 稳定性请求:目前有很多损坏的 PDF 文件。在某些情况下,我们可以处理这些问题。这是一种介于错误报告和功能请求之间的情况。

  • 性能报告:pypdf 可能更快——告诉我们你遇到的具体情况。

任何不帮助讨论的评论都可以被删除。尤其是“我也是”类型的错误评论或为期望功能的“顶顶”评论。人们可以用 👍 / 👎 来表达自己的看法。

讨论是开放的。在这里,不会删除任何评论——除非它们明显是无关的垃圾邮件或仅仅是侮辱他人的内容(幸运的是,社区到目前为止一直非常尊重他人 🤞)。

发布

维护者遵循 语义化版本控制。最重要的是,这意味着破坏性变更会导致主版本号的提升。

请注意,意外的破坏性变更仍然可能发生。pypdf 维护者会尽力及时修复这些问题——如果遇到此类问题,请报告

人员

  • Martin Thoma 自 2022 年 4 月起担任仁慈独裁者。

  • 维护者:

    • Matthew Stamy (mstamy2) 曾长期担任仁慈独裁者。他偶尔会出现在 GitHub 上,并且在 PyPI 和 GitHub 上有权限。

    • Matthew Peveler (MasterOdin) 是 GitHub 上的维护者。