# 项目治理 本文档描述了 pypdf 项目的管理方式。它描述了不同的参与者、他们的角色和他们的责任。 ## 术语 * **项目**是 pypdf——一个免费的开源纯 Python PDF 库,能够拆分、合并、裁剪和转换 PDF 文件的页面。它包括 [GitHub 上的代码、问题和讨论](https://github.com/py-pdf/pypdf),[ReadTheDocs 上的文档](https://pypdf.readthedocs.io/en/latest/),[PyPI 上的包](https://pypi.org/project/pypdf/),以及 [GitHub 上的网站](https://py-pdf.github.io/pypdf/dev/bench/)。 * **维护者**是拥有技术权限来更改项目某一部分的人。维护者的职责是确保项目运行并不断改进。 * **贡献者**是为项目做出贡献的人。贡献方式可以是编写代码——最好是通过分叉并创建一个 pull 请求,但这由维护者决定。其他贡献者可能会描述问题,帮助提问已有问题,以便更容易回答,参与讨论,或帮助改进文档。贡献者类似于维护者,但没有技术权限。 * **用户**是将 pypdf 导入到自己代码中的人。所有 pypdf 用户都是开发者,但并不是了解 pypdf 内部实现的开发者。他们只使用 pypdf 的公共接口。相比贡献者,他们对 PDF 的了解可能较少。 * **社区**是所有人——用户、贡献者和维护者。 ## 治理、领导与推动 pypdf 前进 pypdf 是一个免费开源项目,拥有超过 100 名贡献者,并且可能有超过 1000 名用户。 由于 pypdf 与任何公司没有正式关系,也没有资金支持,所有由社区完成的工作都是志愿贡献。人们并没有报酬,而是选择在空闲时间创造软件,供更多人使用。对此必须给予尊重和认可。 尽管社区庞大,但项目在 2016 年到 2022 年期间处于休眠状态。尽管仍然有人提问、报告问题和创建 pull 请求,但维护者没有时间推动 pypdf 的发展。在这段时间里,没有其他人主动承担起新的维护者角色。 因此,pypdf 采用了 **仁慈独裁者** 治理模式。仁慈独裁者是一个拥有所有技术权限的维护者——最重要的是有权限将新版本的 pypdf 推送到 PyPI。 作为仁慈独裁者,他们会倾听社区的意见,尽力做出对整个社区有益的决策——包括当前的社区和未来可能的社区。作为独裁者,仁慈独裁者始终拥有独立决策的权力和权利——即使是与某些社区成员的意见相悖。 由于 pypdf 是开源软件,社区的部分成员可以分叉代码并创建新的社区。这有助于限制一个不称职的仁慈独裁者所能造成的损害。 ## 项目语言 项目的语言是(美式)英语。所有文档和问题必须使用英语编写,以确保社区能够理解。 我们非常感谢社区中很多成员的母语不是英语。我们会尽力理解他人——[自动翻译工具](https://translate.google.com/) 可能会有所帮助。 ## 期望 社区可以期待以下内容: * **仁慈独裁者**会尽力做出对整个社区有益的决策。仁慈独裁者意识到自己的决策会影响整个社区。一旦仁慈独裁者发现自己没有足够的时间推动 pypdf 发展时,他们会寻找新的仁慈独裁者。预计仁慈独裁者会在某个时刻选择下台(希望是在去世之前),因此这并不是一个终身职位(BDFL)。 * 每个 **维护者**(包括仁慈独裁者)都意识到自己的权限以及可能带来的影响。他们重视安全性,确保项目不受到损害。如果他们不再需要这些技术权限,他们会主动放回去。任何长期贡献者都可以成为维护者。当维护者意识到自己无法再投入足够时间时,他们应该主动辞去维护者职务。对他们的贡献将在 {doc}`历史` 中得到表彰。 * 每个 **贡献者** 都意识到维护者和仁慈独裁者的时间是有限的。简短的 pull 请求,简要描述解决的问题并附带单元测试,通常更容易被合并——因为维护者能更容易看出这个贡献不会对项目整体造成损害。贡献者的贡献会在 Git 历史和公开问题中得到记录。[如果你希望看到其他方式的记录,请告诉我们](https://github.com/py-pdf/pypdf/discussions/798)! * 每个 **社区成员** 都使用尊重他人的语言。我们都是人,都会因为关心的事情而感到沮丧,生活中也有很多不为人知的事。pypdf 不为贡献者提供报酬——在与他人互动时,请记住这一点。我们在这里是因为我们希望帮助他人。 ### 问题和讨论 问题是任何旨在推动 pypdf 前进的技术描述: * 错误报告:由于 pypdf 开发者的错误,导致某些问题发生。 * 功能请求:pypdf 并未支持 PDF 规范中的所有功能。肯定还有一些便捷方法,能大大帮助用户。 * 稳定性请求:目前有很多损坏的 PDF 文件。在某些情况下,我们可以处理这些问题。这是一种介于错误报告和功能请求之间的情况。 * 性能报告:pypdf 可能更快——告诉我们你遇到的具体情况。 任何不帮助讨论的评论都可以被删除。尤其是“我也是”类型的错误评论或为期望功能的“顶顶”评论。人们可以用 👍 / 👎 来表达自己的看法。 [讨论](https://github.com/py-pdf/pypdf/discussions)是开放的。在这里,不会删除任何评论——除非它们明显是无关的垃圾邮件或仅仅是侮辱他人的内容(幸运的是,社区到目前为止一直非常尊重他人 🤞)。 ### 发布 维护者遵循 [语义化版本控制](https://semver.org/)。最重要的是,这意味着破坏性变更会导致主版本号的提升。 请注意,意外的破坏性变更仍然可能发生。pypdf 维护者会尽力及时修复这些问题——如果遇到此类问题,请[报告](https://github.com/py-pdf/pypdf/issues)! ## 人员 * Martin Thoma 自 2022 年 4 月起担任仁慈独裁者。 * 维护者: * Matthew Stamy (mstamy2) 曾长期担任仁慈独裁者。他偶尔会出现在 GitHub 上,并且在 PyPI 和 GitHub 上有权限。 * Matthew Peveler (MasterOdin) 是 GitHub 上的维护者。