Flutter 提交权限体系全解从 Contributor Access 申请到 Dashboard、LUCI 与评审团队【免费下载链接】flutterFlutter makes it easy and fast to build beautiful apps for mobile and beyond项目地址: https://gitcode.com/GitHub_Trending/flutter41/flutter本文基于 Flutter 官方仓库中的 Contributor-access 文档完整梳理 Flutter 的 commit access贡献者权限制度什么人符合申请条件、需要什么提名机制、获得权限后承担哪些责任与享有何种特权、管理员执行权限授予的完整流程以及配套的 Flutter Dashboard、LUCI 配方、Flutter Gold、fcontrib.org 账号等周边权限。读完后你能清晰掌握从普通贡献者晋升为 flutter-hackers 成员的完整路径以及各扩展权限的申请入口并理解这些权限在 Autosubmit bot、CODEOWNERS 评审机制中的实际作用。谁需要 Commit Access对偶尔提交 issue、偶尔提交 PR、在 Discord 聊天的贡献者来说默认权限完全够用。但如果你是高频贡献者——例如经常参与 issue triage、经常修 bug、持续改进文档、在 #help 频道经常帮人、或参与高层设计讨论与优先级排序——那么拥有 commit access也称为 contributor access、flutter-hackers 组成员、Flutter 团队成员会让你的协作体验顺畅很多。Flutter 授予 commit access 的前提是信任与承诺该权限包含对 issue 数据库的完整权利如编辑标签以及内部聊天频道的访问权因此只授予已经赢得团队信任、并对 Flutter 有持续投入的人。申请条件与提名机制符合以下任意一条标准并且有一位提名者sponsor——即已经拥有 contributor access 且同意推荐你的人——即可发起申请。申请方式是请你的提名者在 Discord 的 #server-support Chat 频道提议让你成为团队成员然后你回复该消息说明你声称符合下面哪一条标准长期稳定的高质量参与史例如在 Chat 频道、Triage 工作中长期有效参与帮助其他贡献者定位问题、在他人 PR 中发现有价值的问题、在 #help 频道帮助他人并且行为完全符合 行为准则。近期有多个成功落地的 PR成功 landed获得 LGTM、被合并且未报告回归、未被 revert且过程中没有需要大量辅导。来自有贡献历史的公司的全职投入你所在的公司有向 Flutter 贡献的历史并且你是被公司派来持续贡献 Flutter 的。代表使用 Flutter 的开发团队你的团队使用 Flutter 开发应用、插件或包与 Flutter 的 developer relations 团队关系密切包括拥有 customer 标签并且有定期更新 issue 标签的强烈需求参见 Issue hygiene - Customers。这一条较为罕见。被授予 access 意味着你会被加入 GitHub 的flutter-hackers组和 Discord 的team角色。这是一项带有责任期望的特权贡献者是关心 Flutter、希望帮助 Flutter 沿着 Roadmap 前进的人。贡献者不只是能改代码或评论 issue 的人而是已经证明自己能与团队协作、能找到最有知识的人来评审代码、提交高质量代码、跟进修复 bug代码或测试中的、并在 issue 上提供有深度见解的人。Flutter 的授权策略是乐观授予基于少量但合理的善意证据就授予 access相应地一旦发现信任被违背也会迅速回收access。拥有 commit access 的贡献者仍须遵守所有流程与政策并严格遵循 行为准则原文特别提示请认真读一遍它比大多数项目的准则严格得多。贡献者的责任执行行为准则拥有 commit access 或 Discord team 权限的人有责任执行Flutter 的行为准则。原文强调Flutter 的准则比大多数项目严格得多——团队不会等到有人出格辱骂才采取行动任何形式的 disrespect 都构成处理依据。例如被动攻击式的抱怨和笼统的建设性缺失的 negativity 都违反准则如果某人当天状态不好团队更希望他那天避免参与 Flutter 的贡献。原文给出的处理流程是看到可能不欢迎或违反准则的行为时立即联系当事者请其阅读行为准则并思考如何更好地践行其精神——大多数人对此反应积极如果对方反应消极或持续让环境变得不愉快应将其移出环境在 Discord 上将其移出频道kick累犯者封禁ban在 GitHub 上可从组织中 block可请 Discord 上的 github-admin 操作做上述任何操作后告知 #server-support Chat 频道以便团队掌握此类事件的发生频率。维护文档贡献者的一部分工作是确保文档包括面向团队内部的文档如本文档所在的 wiki保持最新。发现错了就修是贡献者的义务且贡献者拥有 wiki 的编辑权限。获得权限后的具体特权GitHub flutter-hackers 组的特权自合self-merge能力PR 经过评审后你可以合并自己的 PR参见 Tree Hygieneissue 管理能力可以在 GitHub issue 上添加标签、里程碑等参见 Issue HygienePR 测试速度略快豁免2 个并发未合并 PR限制普通贡献者受限于每个公开 Flutter 仓库最多 2 个并发 open PRflutter-hackers 成员不受此限制。这些特权在仓库其他文档中可以得到印证Tree-hygiene 的 tl;dr 明确指出无写权限的贡献者每个仓库最多 2 个并发 open PRdraft PR 豁免并说明 flutter-hackers 组成员在满足评审条件后可自行添加autosubmit标签由 bot 落地补丁见 docs/contributing/Tree-hygiene.md 附近的说明。Autosubmit-bot 文档定义了评审数量规则作者是 flutter-hackers 成员时至少需要 1 个其他 flutter-hackers 成员的评审最好是该区域的 code owner非成员则需要至少 2 个 flutter-hackers 成员的评审。任何 reviewer 若 request changes无论已有多少批准bot 都不会合并并会移除 autosubmit 标签见 docs/infra/Autosubmit-bot.md。Autosubmit 的配置表中approval_group字段必填项规定了 PR 作者必须获得哪个组的批准才能合并Flutter 侧的配置即为approval_group: flutter-hackers见 docs/infra/Autosubmit-bot.md。Discord team 组的特权在 #hackers-* 频道发言不受限流可以kick移出人员可以管理服务器 emoji。权限授予流程管理员视角以下是 Flutter 仓库管理员实际执行的流程核实申请人符合上文所有条件并确保其提名者不是执行流程的自己核实申请人身份请其在 Discord 上确认已阅读 style guide、issue / tree hygiene wiki 页面、行为准则以及其他与其相关的文档将其加入内部私有成员表格go/flutter-organization-members在 GitHub 的 flutter-hackers 团队页面点击 Add a member 按钮在文本框中输入其用户名选中后点击 Invite在 Discord 上将其加入 team 组。注意核实你提升的是正确的人——Discord 上可以有多个同名昵称的人。针对新加入的 Googler你需要请团队中的某人主动添加你。加入 flutter Google 组后不会自动获得该权限。不活跃与权限回收团队会定期检查长期未使用的 commit access 账号。活跃的门槛极低——评论一个 issue甚至给 issue 加一个 emoji reaction 都算。如果你的账号超过一年不活跃团队会在回收权限之前先尝试联系你如邮件或 Discord。如果权限被回收后你仍想回归贡献团队欢迎你随时回来在 Discord Chat 上联系团队任何人按上述流程重新提名即可。周边权限一Flutter DashboardFlutter Dashboard 展示近期 landed 的提交以及这些提交对应测试的通过/失败情况。要使用rerun tasks功能需要被加入一个 allowlist任何拥有 commit access 的人都符合加入资格但只有部分团队成员有权限更新存储这些权限的后端数据库。申请方式是在 #hackers-infra 频道提出加入 allowlist。为贡献者添加 Dashboard 访问仅限拥有 Dashboard Datastore 权限的团队成员打开 flutter-dashboard 项目的 Datastore 实体页面Cloud Console 中flutter-dashboard项目、AllowedAccountkind点击Create Entity点击Email: Empty- 编辑属性填入贡献者的 Google 账号点击Create。周边权限二LUCI 配方与配置仓库如果你需要使用 LUCI recipesCI 配方需要被加入相应的 ACL。申请方式是在 #hackers-infra 频道提出加入 LUCI ACL。注意只有 Googler 才能授予该权限相关工具的使用文档在 Google 内部gob-ctl 文档可查。周边权限三Flutter Gold如果你需要triage 图片处理 golden 文件的图像对比差异需要在 Flutter Gold 中被登记为授权用户。google.com域的用户已经默认被授权而gmail.com地址也可以被加入 allowlist。授权用户名单维护在 skia build-bot 仓库google/skia-buildbot也有 GitHub 镜像中的golden/k8s-instances/flutter/flutter-skiacorrectness.json5文件里。Googler 可以提交一次变更来把某人加入授权用户。周边权限四fcontrib.org 账号如果你是团队成员、想分享设计文档参见 Chat 中的 Design Documents 相关约定但不想使用自己的个人账号可以向 Flutter 管理员申请一个 fcontrib.org 账号在 Discord #server-support 频道 Hixie 或其他管理员。管理员的操作流程开始前需要收集用户在其他平台使用的邮箱、姓名first and last name、期望的 fcontrib.org 登录名打开无痕窗口用管理员自己的fcontrib 凭据登录 Google 管理后台admin.google.com在主内容区左上角 Users 下点击 Add a User按提示操作密码选择 Generate Password并通过新账号持有者的非 fcontrib 账号把密码发给他——他可以先用它登录再自行修改密码。评审团队Review Teams与 CODEOWNERS代码库的某些部分指定了评审团队PR 会按轮转round-robin方式自动分配评审人。要加入这些团队、增删成员或修改任何设置在 Discord 上 ping github-admin。成员必须先是 Flutter Hackers 组成员即本文档开头所述权限。当前定义的评审团队及其讨论频道评审团队用途讨论频道android-reviewersAndroid 移植方向的工作#hackers-androiddevtools-reviewersdevtools 仓库#hackers-devexpios-reviewersiOS 移植方向的工作#hackers-ioslinux-reviewersLinux 移植方向的工作#hackers-desktopmacos-reviewersmacOS 移植方向的工作#hackers-desktopwebsite-reviewerswww.flutter.dev 与 docs.flutter.dev#hackers-devrelwindows-reviewersWindows 移植方向的工作#hackers-desktop要新建团队联系 Discord 上的 github-admin并且必须创建一个CODEOWNERS文件才能真正触发评审分配。这一点在仓库根目录的 CODEOWNERS 中可以直接印证文件头部注释说明这些条目是建议的评审人实际评审可由他人完成并给出了查看匹配文件的方法git ls-files :(glob)pattern不带/前缀。从源码结构看各评审团队的 glob 规则与.github/labeler.yml的对应 section 保持同步例如/engine/src/flutter/shell/platform/android/**、/packages/flutter_tools/**/*android*等路径都指定flutter/android-reviewersCODEOWNERSiOS / macOS / Linux / Windows 各平台的引擎与 flutter_tools 路径分别绑定到对应的flutter/*-reviewers团队CODEOWNERS其中 darwin 共享路径同时绑定 iOS 与 macOS 两个团队除评审团队外CODEOWNERS 还单独指定了个人 owner例如/engine/src/flutter/shell/platform/embedder/embedder.h这类定义了必须保持前后兼容的 ABI 的文件被特别标注改动应被严格审查因为错误不可逆。Pusher 权限分支保护部分分支受保护以避免误操作只有特定组的人能向这些分支 push。任何人可以申请加入或移出这些组——它们存在只是为了减少事故而非安全隔离。同样在 Discord 上 ping github-admin 处理成员必须先是 Flutter Hackers 组成员。目前为此目的定义的组有pushers-beta和pushers-fuchsia。小结Flutter 的贡献者权限体系可以概括为一条主线与四个扩展面主线满足四类标准之一 有 flutter-hackers 成员提名 → 由管理员执行六步授予流程 → 进入 GitHub flutter-hackers 组与 Discord team 角色获得自合并、issue 管理、更快 CI、豁免 2-PR 限制等特权同时承担执行行为准则与维护文档的责任扩展面Flutter Dashboard rerun allowlist#hackers-infra 申请、LUCI ACL仅 Googler 可授予、Flutter Gold 图像 triage 授权维护在 skia-buildbot 的 json5 文件中、fcontrib.org 共享文档账号治理机制一年不活跃先联系后回收、CODEOWNERS 驱动的轮转评审团队、pushers-beta / pushers-fuchsia 分支保护组共同保证这套乐观授权模式进得快、管得住。如果你正准备向 Flutter 提交更多贡献建议同时阅读 Tree-hygienePR 落地与 autosubmit 规则、Issue-hygieneissue 管理细则与 Autosubmit-bot评审与自动合并的判定逻辑它们与本文的权限描述互为印证。【免费下载链接】flutterFlutter makes it easy and fast to build beautiful apps for mobile and beyond项目地址: https://gitcode.com/GitHub_Trending/flutter41/flutter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
