
Carbon Language 群组与访问控制体系解析Groups、Carbon Leads、Admins 与 Access Groups【免费下载链接】carbon-langCarbon Languages main repository: documents, design, implementation, and related tools. (NOTE: Carbon Language is experimental; see README)项目地址: https://gitcode.com/GitHub_Trending/ca/carbon-lang本文以 docs/project/groups.md 为蓝本系统梳理 Carbon Language 项目在 GitHub、Discord、Google Groups 三大协作平台上维护的全部群组与访问控制机制。读完本文你将理解每个群组Carbon leads、Conduct team、Moderators、Admins、Implementation team、Security、Access groups的职责边界、成员管理方式、加入途径以及 GitHub 提交权限、Label/Review 权限、Google Drive 权限的具体申请与回收流程并能在 CODEOWNERS 中看到这套群组体系在真实代码仓库中的落地方式。总览群组用于集中跟踪成员由团队负责人管理groups.md 开篇即给出总原则These are groups used by the Carbon Language project, listed here for central tracking. Membership will typically be managed by a team owner or admin.即这些群组在此文档中集中列出、集中跟踪成员通常由团队负责人team owner或 admin管理每个群组的摘要部分说明了如何加入。文档还特别指出部分链接受管理员或成员访问限制文档在可能的情况下提供的是公开链接。Linked entities群组在各论坛中的关联实体文档中最重要的概念是Linked entities关联实体——群组并非某个平台独有的而是在 Carbon 的各个协作平台中都有对应实体来定义关联实体用途GitHub teams主要用于GitHub ACLs访问控制例如限制哪些人能 merge、改 label、访问内部资源GitHub organization members原则上只应包含在某个 team 中的人This should only contain people in teamsDiscord roles用于在 Discord 上识别团队成员同样承担 ACL 职责Google groups兼作联系名单contact list与 ACL如邮件列表和 Google Drive 权限这套一个群组、多平台实体的模型贯穿下文所有群组描述每介绍一个群组都按GitHub teams / Discord roles / Google groups三个维度列出其关联实体。Carbon leads演进治理的核心groups.md 将 Carbon leads 指向 evolution.md 的 Governance structure 一节并列出其关联实体GitHub teams:LeadsDiscord roles:leadGoogle groups: None无从 evolution.md 的治理章节可以确认 leads 的具体职责审查提案proposals每个 proposal PR 会被分配一位 Carbon lead 负责基本审查或委托他人并做最终批准设定路线图与管理演进见 roadmap_process.md阻塞性共识决策leads 可以单独批准提案但对被上报到他们的问题应以两人法定人数quorum of two的阻塞性共识来决策。evolution.md 同时列出了当时的 leadschandlerc、KateGregory、zygoloid并提到随着项目增长leads 可以组建聚焦特定领域的Subteams子团队子团队决策可以升级到 Carbon leads。Conduct team 与 ModeratorsConduct team行为准则团队该团队拥有并驱动项目的行为准则Code of Conduct、相关问题与举报详见 docs/project/teams/conduct_team.md。关联实体GitHub teams: NoneDiscord roles: NoneGoogle groups:conductcarbon-lang.dev—— 仅作为联系名单使用从 conduct_team.md 可以看到该团队的量化目标目标是至少 5 名受训成员处理行为升级事件且任何时候至少 3 名成员可及时响应考虑休假、生病等常态干扰成员通常从活跃 moderator 中招募。Moderators版主详见 moderators.md。关联实体GitHub teams:ModeratorsDiscord roles:moderator、senior-moderatorGoogle groups:moderators—— 用于Google Drive ACLsmoderators.md 说明了版主的两级结构所有版主都有 Discord 的moderator角色高级版主senior moderators拥有额外权限以处理有害行为持有senior-moderator角色。其权限按平台细分例如Discord所有版主可Timeout user最长一周禁言删除消息、踢人、封禁、Slow-mode等为 senior 权限GitHub所有版主可Convert issue to discussion与Hide message折叠消息锁定对话、编辑消息/标题、删除消息/对话、Block user为 senior 权限。文档特别强调 GitHub 侧使用的是自定义角色custom roles其访问选项比基础权限base permissions更受限Google Docs版主权限有限正确做法是按需回复/评论必要时上报 Conduct team。Admins基础设施维护者groups.md 对 Admins 的定义是维护基础设施Maintains infrastructure成员变动由 leads 按需as-needed处理。文档还坦承虽然存在各种群组但 admins 的实际配置方式比这更复杂一点。关联实体GitHub teams:Admins规范上等价于按role:owner搜索组织成员Discord roles:adminGoogle groups:admins—— 用于carbon-lang.dev的安全设置值得注意的是groups.md 中该 Google group 链接的锚文本写的是admins而其 URL 指向的是groups.google.com/a/carbon-lang.dev/g/conduct/about页面这提示 Google 侧的组配置与文档描述可能存在漂移实际权限以组织内配置为准。Implementation team只负责实现不负责设计这是文档中职责描述最完整的一个群组该团队负责 Carbon主参考实现与工具链的开发并监督项目中其他相关实现工作——从语言规范的配套工具到测试套件。它与 Admins 可能有部分重叠任何争议都可以升级到 Carbon leads 解决。特别强调该团队不负责语言本身的设计design只负责其实现。关联实体GitHub teams: None文档未单列 GitHub teamDiscord role:implementation-teamGoogle groups: NoneSecurity接收 GitHub 安全报告职责单一明确接收 GitHub security reports成员变动同样由 leads 按需处理。关联实体GitHub teams:SecurityDiscord roles: NoneGoogle groups: NoneAccess groups按授予的访问定义的群组Access groups 与上文社区型群组的关键区别在于它们按所授予的权限来定义不与上述任何社区群组直接绑定。共三组。GitHub commit access提交访问可以在 GitHub 上 merge 并批准变更的开发者详细规则见 commit_access.md。关联实体GitHub teamsCommit access无 Discord/Google 侧实体。commit_access.md 给出了完整生命周期值得完整继承到实践中1. 提交权限不是贡献的前提commit access isnot requiredfor contributing to Carbon! Anyone can send a pull request...绝大多数开发活动对有无 commit access 的贡献者完全相同这是项目刻意保留的 GitHub 工作流特性。commit access 的主要价值是可以将 PRmerge 进 carbon-lang 主仓库仍需 review且通常由有 commit access 的评审者执行 merge可以批准并合并变更作者可以自动获得 GitHub Action 结果并合并自己的 PR——包括解决冲突、或在批准后修复琐碎评论时的后续推送。2. 持有者的行为期望对他人 PR 的 approve/merge 要做合理判断变更要么在无需上下文的情况下即可理解如清理、错别字要么开发者对相应代码有上下文拿不准就先 review把 approve/merge 留给别人对自己已批准的 PRmerge 前再做变更同样要克制——拿不准就再要一轮 review。3. 获取权限Getting access基于提交历史申请希望持有权限者熟悉代码库的风格与结构通常在开发者贡献过多个 PR 且预期继续贡献时授予流程合并若干非琐碎 PR后贡献者可请求某位评审者提名nominate自己评审者也可主动提名提名需要至少一位 lead 批准批准后GitHub 会发送加入Commit accessteam 的邀请也可主动访问组织的 invitation 页面接受邀请后权限即生效。4. 回收权限Removing access对闲置超过 6 个月的贡献者定期回收权限闲置由多个来源综合判断包括是否还在提交或 review PR计划重新贡献或休整归来者可以申请恢复历史贡献仍然有效恢复很轻松文档给出了验证活跃度的 GitHub 搜索示例以用户jonmeow为例repository:carbon-language/carbon-lang author:jonmeowrepository:carbon-language/carbon-lang commenter:jonmeowGitHub label and review accessLabel 与评审访问可以在 GitHub 上为 PR 和 issue 打 label 和指派任务的开发者尤其是 proposals。关联实体GitHub teamsLabel and review access无 Discord/Google 侧实体。申请方式见 CONTRIBUTING.md 的 Getting access 一节在 Discord 的#access-requests频道提出请求并注明 GitHub 用户名该权限被 proposal 流程使用。Google Drive accessGoogle Drive 访问对 Google Drive 及其中的文档项目将**评论commenting与贡献修改和创建**拆成两个独立群组GitHub teams: NoneDiscord roles: NoneGoogle groups:commenters与contributors—— 用于 Google Drive ACLs结合 CONTRIBUTING.md 的权限矩阵两者的具体能力为权限组Google DocsGoogle CalendarCommenter评论文件查看事件详情Contributor新增、编辑、评论文件查看并编辑事件详情申请须知申请任何此类访问都需要说明理由且所有请求都要求已签署 CLA加入群组后请到 Discord 的#access-requests频道告知一声——否则管理员收不到通知如果只是想参与 GitHub/Discord 讨论不需要任何上述权限想参加会议可申请 commenter 权限写 proposal 则两种 contributor 级访问都很有帮助。仓库内的落地证据CODEOWNERS 如何引用这些团队群组体系不止存在于文档它在仓库中也有可见的落地。CODEOWNERS 文件文件头注明仅用于 PR 自动分配分支保护不强制执行它把关键路径绑定到具体团队* carbon-language/toolchain-reviewers # 兜底工具链评审者 /*.md carbon-language/leads # 顶层文档由 leads 评审 /LICENSE carbon-language/leads /docs/project/evolution.md carbon-language/leads /docs/project/goals.md carbon-language/leads /docs/project/principles/* carbon-language/leads /docs/project/roadmap.md carbon-language/leads /proposals/*.md carbon-language/leads /toolchain carbon-language/toolchain-reviewers从该文件结构可以印证两点其一groups.md 所描述的Leads团队确实承担关键文档与全部提案的评审兜底与 evolution.md 中每个提案 PR 分配一位 lead的流程相互呼应其二工具链代码默认路由给carbon-language/toolchain-reviewers——结合 groups.md 中 Implementation team 的 GitHub teams 标注为 None可以推断实现团队在 GitHub 侧的 ACL 并非通过implementation-team这个 team 名表达而是以toolchain-reviewers等按领域划分的 team 形式体现这正是文档所说实际配置方式比列表更复杂一点的具体例子之一。群组与关联实体速查表汇总 groups.md 的全部信息方便按我要什么权限/我要参与什么角色快速定位群组GitHub teamsDiscord rolesGoogle groups主要用途Carbon leadsLeadslead无提案审查、路线图、治理决策evolution.mdConduct team无无conductcarbon-lang.dev联系名单行为准则与举报处理conduct_team.mdModeratorsModeratorsmoderator/senior-moderatormoderatorsDrive ACLDiscord/GitHub 社区版务moderators.mdAdminsAdmins≈role:owneradminadminscarbon-lang.dev安全设置基础设施维护成员由 leads 按需变更Implementation team无文档未单列implementation-team无参考实现与工具链开发不负责语言设计SecuritySecurity无无接收 GitHub security reportsCommit accessCommit access无无merge/approve见 commit_access.mdLabel and review accessLabel and review access无无为 PR/issue尤其 proposals打 label、指派Google Drive access无无commenters/contributorsDrive 评论 / 修改与创建见 CONTRIBUTING.md适用前提与限制以上权限描述以当前仓库文档为准各平台实体GitHub team 成员、Discord role、Google group的实际名单并不公开在仓库内且存在文档链接可能受限或指向其他配置页的情况如 Admins 的 Google group 链接。对贡献者而言参与 GitHub/Discord 讨论无需任何特殊权限写提案所需的 contributor 级访问与 label/review 访问均需按 CONTRIBUTING.md 的流程在#access-requests中申请并附理由、已签 CLA。【免费下载链接】carbon-langCarbon Languages main repository: documents, design, implementation, and related tools. (NOTE: Carbon Language is experimental; see README)项目地址: https://gitcode.com/GitHub_Trending/ca/carbon-lang创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考