Django 项目组织结构¶
原则¶
Django 项目由一个志愿者团队管理,该团队追求三个目标:
推动 Django Web 框架的开发,
培育 Django 相关软件的生态系统,
按照 Django 行为准则 中描述的价值观引导 Django 社区。
Django 项目本身不是一个法人实体。Django 软件基金会 (Django Software Foundation) 是一家非营利组织,负责处理与 Django 项目相关的财务和法律事务。除此以外,Django 软件基金会让 Django 项目自行管理 Django 框架、其生态系统及其社区的开发。
合并者 (Mergers)¶
角色¶
合并者是一小群有权将拉取请求 (pull request) 合并到 Django Git 仓库的人员。
特权¶
合并者拥有以下特权:
成员资格¶
指导委员会根据需要选拔合并者,以确保其人数至少为三人,从而分担工作量并避免给任何个人合并者造成过重负担或导致其倦怠。合并者的数量没有上限。
合并者不一定非要是 Django 研究员 (Django Fellow),但 Django 软件基金会有权利用研究员职位的资助,使合并者这一角色可持续发展。
以下限制适用于合并者角色:
任何人不得同时担任指导委员会成员。如果一名合并者当选为指导委员会成员,其在加入指导委员会的同时应立即停止担任合并者。
一个人可以同时担任发布者 (Releaser) 和合并者角色。
当出现空缺或指导委员会认为有必要选拔额外人员担任此角色时,选拔流程如下:
任何在适当讨论场所表现良好的成员,或在 DSF 研究员委员会建议下的 Django 软件基金会董事会,均可建议候选人供考虑。
指导委员会审议提出的建议,然后由任何一名指导委员会成员正式提名候选人担任该角色。
指导委员会对被提名人进行投票。
合并者可以随时辞职,但应尽量提前通知,以便选出继任者。Django 软件基金会终止与 Django 研究员的合同时,该人员的合并者角色将暂时中止,直至指导委员会投票决定其提名事宜。
此外,合并者可能因以下原因被免职:
因当选指导委员会成员而失去资格。
因 Django 软件基金会行为准则委员会采取的行动而失去资格。
经指导委员会投票表决。
发布者 (Releasers)¶
角色¶
发布者是一小群拥有将 Django 打包版本上传至 Python Package Index 和 djangoproject.com 网站权限的人员。
特权¶
发布者负责构建 Django 版本并将其上传至 Python Package Index 和 djangoproject.com 网站。
成员资格¶
指导委员会根据需要选拔发布者,以确保其人数至少为三人,从而分担工作量并避免给任何个人发布者造成过重负担或导致其倦怠。发布者的数量没有上限。
发布者不一定非要是 Django 研究员,但 Django 软件基金会有权利用研究员职位的资助,使发布者这一角色可持续发展。
一个人可以同时担任发布者 (Releaser) 和合并者角色。
当出现空缺或指导委员会认为有必要选拔额外人员担任此角色时,选拔流程如下:
任何在适当讨论场所表现良好的成员,或在 DSF 研究员委员会建议下的 Django 软件基金会董事会,均可建议候选人供考虑。
指导委员会审议提出的建议,然后由任何一名指导委员会成员正式提名候选人担任该角色。
指导委员会对被提名人进行投票。
发布者可以随时辞职,但应尽量提前通知,以便选出继任者。Django 软件基金会终止与 Django 研究员的合同时,该人员的发布者角色将暂时中止,直至指导委员会投票决定其提名事宜。
此外,发布者可能因以下原因被免职:
因 Django 软件基金会行为准则委员会采取的行动而失去资格。
经指导委员会投票表决。
指导委员会¶
角色¶
指导委员会是由一群经验丰富的贡献者组成的团体,他们:
监督 Django 的开发和发布流程,
协助设定功能开发和发布的方向,
选拔合并者和发布者,以及
在其他决策流程失效时拥有决胜投票权。
他们主要关心的是维护 Django Web 框架的质量和稳定性。
特权¶
指导委员会拥有以下特权:
就 Django 的任何技术变更问题做出具有约束力的决定。
否决将任何特定代码合并到 Django 中,或命令撤销任何特定的合并或提交。
发布关于 Django 未来技术方向的提案和想法征集。
选拔和罢免合并者与发布者。
在认为合适时,参与罢免指导委员会成员。
在指导委员会认为有必要时,在自动触发的选举之外,召集指导委员会选举。
参与修改 Django 的治理规则(参见 组织变更)。
拒绝就指导委员会认为尚未成熟到可以做出约束性决定的事项进行投票,或拒绝投票表决其认为超出其权力范围的事项。
负责 Django 开源项目内其他技术团队的治理,并相应地管理这些团队。
成员资格¶
指导委员会是由五名经验丰富的贡献者组成的民选团体,他们证明具备:
在 Django 或 Django 生态系统中做出实质性贡献的历史记录。该历史记录必须从个人候选人资格提交前至少 18 个月开始,并包括在以下至少两项中做出过实质性贡献:
对 Django 项目或 Django 生态系统中主要第三方软件包的代码贡献
审查拉取请求和/或分类 Django 项目工单
文档、教程或博客文章
在 Django 论坛上关于 Django 的讨论
举办 Django 相关活动或用户组
参与 Django 方向和未来的历史记录。这不一定是近期的,但过去三年未参与的候选人仍必须证明其对这三年内 Django 的变化和方向有所了解。
在 Django 的每个发布周期后选举产生一个新的委员会。选举流程如下:
指导委员会指示其成员之一以书面形式通知 Django 软件基金会秘书触发选举,以及触发该选举的条件。秘书在适当的场所——Django 论坛发布公告,宣布选举及其时间表。
选举宣布后,DSF 董事会随即开启选民登记期。所有 DSF 个人成员自动注册,无需显式注册。所有其他认为自己有资格投票但尚未注册的个人,均可向 DSF 董事会申请投票权。选民登记表和选民名单由 DSF 董事会维护。DSF 董事会可质疑并拒绝其认为恶意注册、伪造资格或不符合资格者的注册。
选民登记在选举宣布一周后结束。随后,候选人登记开始。任何符合资格的人员均可登记为候选人。候选人登记表和候选人名单由 DSF 董事会维护,候选人必须在登记时提供其资格证明。DSF 董事会可质疑并拒绝其认为不符合指导委员会成员资格或恶意注册者的登记。
候选人登记在开放一周后结束。候选人登记结束一周后,DSF 秘书将候选人名单发布至 Django 论坛,选举正式开始。DSF 董事会提供可供注册选民访问的投票表,并负责保管选票。
投票采用无记名投票方式,投票单包含以随机顺序排列的候选人名单以及有关候选人的任何相关材料。每位选民最多可投给五名候选人。
选举在开始一周后结束。DSF 董事会随后清点选票并制作摘要,包括投票总数及每位候选人获得的票数。此摘要经 DSF 董事会多数票批准后,由 DSF 秘书发布至 Django 论坛。得票数最高的前五名候选人即刻成为新一届指导委员会。
指导委员会成员可能因以下原因被免职:
因 Django 软件基金会行为准则委员会采取的行动而失去资格。
确定其不再具备指导委员会成员的资格。此确定必须由指导委员会的其他成员和 DSF 董事会共同做出。认定丧失资格的有效条件是:所有其他指导委员会成员以及所有有投票权的 DSF 董事会成员(如相关人本身为 DSF 董事会成员,则不得投票)对该人丧失资格的动议投“赞成”票。