脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Golang - 给 Go 提问题?充分了解 Go 提案流程

给 Go 提问题?充分了解 Go 提案流程

2023-10-31 14:00陈煎鱼 Golang

Go 提案的整体流程规范是比较明确的,但其并不是每个标签(栏)都一定会用到。从实际的情况来看,会根据 issues 讨论的激烈和复杂度还决定是否使用 “可能接受/可能拒绝” 等场景。

今天这篇文章将给大家分享,也可以借此学习社区的运作模式。

前言

在官方资料《Proposing Changes to Go》中,给出了一系列的提案指导意见、流程规划以及目标。

Go 语言项目,开发过程以设计为驱动。

有以下的要求:在实施重要的语言、库或工具更改(包括 Go 主仓库和所有 golang.org/x 仓库中的 API 更改,以及 go 命令的命令行更改)之前,必须首先进行讨论,有时还需要正式文档化。

提案流程是怎么样的

提案(proposal)过程指的是对提案进行审查并决定是否接受或拒绝提案的过程。

整个提案的流程是使用 GitHub 中的 Label(标签)来做流程规范的,在此也可以称其为分类的栏目。

创建提案描述

第一步,提案作者需要创建一个简要的问题描述提案。一般对应提 issues 时的对应分类:

给 Go 提问题?充分了解 Go 提案流程图片

而对应的不同的分类,会给出不同的 issues 模板:

给 Go 提问题?充分了解 Go 提案流程图片

基本上要满足社区所要求的模板才会有核心团队的人交流,否则一开口就会让你去补充内容。

此时是不需要设计文档的。

进行提案分类

第二步,需要对提案进行问题讨论和标签分类、跟踪。一般会将提案分为以下三种结果之一:

  • 接受提案(Accept proposal)
  • 拒绝提案(Decline proposal)
  • 索要设计文档(Ask for a design doc)

如果提案被接受或拒绝,则这一项完成。否则,预计需要基于更详细的设计进行进一步的问题讨论。

提供设计文档

第三步,提案作者编写和提供设计文档,以详细说明提议的设计并解决初始讨论中提出的问题。也就是提出提案者需要给出设计解决自己提出的问题。

最终讨论

完成第三步后,社区会结合设计文档和问题进行讨论,需要提案作者进行及时的修订。再进行多轮讨论。

最终确定提案的走向,两种结果之一:

  • 接受提案
  • 拒绝提案

在提案被接受或拒绝后,下一步的实施工作将按照常规的贡献代码的方式进行。

提案有哪些状态

Proposal Review(提案审查)

Go 核心团队大约每周召开一次 proposal review meetings(提案审查会议),审查和讨论待决定的提案。

这个会议会就已达成共识的提案,将流程推进到下一步(通过标记提案已被接受或拒绝,或要求提供设计文档)。

每周会议结束后,会议记录会发布到 golang.org/s/proposal-minutes[1],任何对哪些提案正在审议的小伙伴都可以关注这个 issues。

给 Go 提问题?充分了解 Go 提案流程图片

Incoming(传入)

新提案会被添加到 "Incoming" 这一栏。

每周的提案审查会议会优先审查 "活动"、"可能接受 "和 "可能拒绝" 栏中的所有问题。

如果还有剩余时间,则会选择将 "Incoming" 中的提案移至 "活跃" 栏。

给 Go 提问题?充分了解 Go 提案流程图片

Incoming 栏中的提案被相关成员识别、讨论后,很快就会转挪动到 Proposal 栏下。但由于官方文档未有提及,因此主要做此补充说明。

给 Go 提问题?充分了解 Go 提案流程图片

Active(活跃)

在每周的提案会议上,都会对 "活跃" 栏中的问题进行审查,以观察讨论中是否出现了共识。

提案审查小组还可以发表评论、提出建议、提出澄清性问题,并尝试重述提案,以确保每个人都同意讨论的具体内容。

给 Go 提问题?充分了解 Go 提案流程图片

Likely Accept(可能接受)

如果议题讨论似乎已达成接受提案的共识,提案审查小组会将该议题移至 "可能接受" 栏,并张贴评论,指出这一变化。

给 Go 提问题?充分了解 Go 提案流程图片

再继续等待一段时间,一般可能是数周。观察后续的新的讨论情况和内容。再继续推进下一步流程。

Likely Decline(可能拒绝)

如果提案讨论似乎已达成拒绝提案的共识,提案审查组就会将该问题移至 "可能拒绝 "栏。

如果提案审查小组认为不可能达成一致意见,因此默认不接受该提案是合适的,则也可将该提案移至 "可能否决 "栏。

等待时间和动作与 “可能接受” 会是一样的。

Accepted(已接受)

提案转到 "可能接受" 栏一周后,如果共识没有改变,提案审查小组就会将提案转到 "已接受" 一栏。

如果在这一周内进行了大量讨论,提案审查小组可能会将提案在 "可能接受" 栏中再保留一周,甚至将提案移回 "活跃" 栏。

一旦提案被标记为 "已接受",就会贴上 "提案-已接受" 标签,它就会从 "提案" 里程碑移到 "工作" 里程碑中,问题也会被重新使用,以跟踪提案的实施工作。

给 Go 提问题?充分了解 Go 提案流程图片

Declined(已拒绝)

在提案转为 "可能已被否决" 一周后,如果共识没有改变,提案审查小组会将提案转到 "已被否决" 一栏。

如果在这一周内进行了重要讨论,提案审查小组可能会将提案在 "可能拒绝 "栏中再保留一周,甚至将提案移回 "激活" 栏。一旦提案被标记为 "拒绝",该提案即被关闭。

给 Go 提问题?充分了解 Go 提案流程图片

否决还会分为四种情况,处理流程类似,分别归类为:

  • 因重复而被拒绝(Declined as Duplicate)
  • 因不可行而被拒绝(Declined as Infeasible)
  • 因撤回而被拒绝(Declined as Retracted)
  • 因已过时而被拒绝(Declined as Obsolete)

Hold(搁置)

如果讨论提案需要修改设计或补充信息,而这些信息在几周或更长时间内都无法获得,提案审查小组就会将提案移到 "搁置" 栏,并注明等待的内容。

给 Go 提问题?充分了解 Go 提案流程图片

一旦准备就绪,任何可以编辑问题跟踪器的人都可以将提案移回 "激活 "栏,以便在下一次提案审核会议上进行审议。

给 Go 提问题?充分了解 Go 提案流程图片

总结

Go 提案的整体流程规范是比较明确的,但其并不是每个标签(栏)都一定会用到。从实际的情况来看,会根据 issues 讨论的激烈和复杂度还决定是否使用 “可能接受/可能拒绝” 等场景。

我们在官方提案文档上也会有提到提案的讨论一定是能得到适当、公平、及时、有记录的评估,能得到明确的答复。且要求在 “proposal review meetings” 上审查和记录。

给 Go 提问题?充分了解 Go 提案流程图片

同时会发现,这套流程打标签挪栏目的动作,非常依赖人的行为。大部分的行为都相当的主观。

结合上次的已接受、已合并提案被 rsc 突然一句话撤销来看,规范也仅仅是规范。话事人的行径一旦有所缺失(例如:离职、生病等),这套流程就很有可能会跑不通了。

延伸 · 阅读

精彩推荐
  • Golang详解Golang实现请求限流的几种办法

    详解Golang实现请求限流的几种办法

    这篇文章主要介绍了详解Golang实现请求限流的几种办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    ALA耀绛4832021-05-26
  • Golang在Golang中使用Redis的方法示例

    在Golang中使用Redis的方法示例

    这篇文章主要介绍了在Golang中使用Redis的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...

    zzayne4232020-05-16
  • Golanggo:垃圾回收GC触发条件详解

    go:垃圾回收GC触发条件详解

    这篇文章主要介绍了go:垃圾回收GC触发条件详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    Alex_z089713762021-05-27
  • GolangGo泛型:提前掌握Go泛型的基本使用

    Go泛型:提前掌握Go泛型的基本使用

    泛型,是 Go 语言多年来最令人兴奋和根本性的变化之一。没有泛型,很多人以此「鄙视」Go 语言。当然,也有人觉得根本不需要泛型。有泛型,不代表你一...

    polarisxu9282021-09-30
  • Golanggolang gin框架实现大文件的流式上传功能

    golang gin框架实现大文件的流式上传功能

    这篇文章主要介绍了golang gin框架中实现大文件的流式上传,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要...

    ahfuzhang11562022-10-28
  • GolangGoLand编译带有构建标签的程序思路详解

    GoLand编译带有构建标签的程序思路详解

    这篇文章主要介绍了GoLand编译带有构建标签的程序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可...

    道道法11932021-02-19
  • Golang基于golang中container/list包的用法说明

    基于golang中container/list包的用法说明

    这篇文章主要介绍了基于golang中container/list包的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    msn21711532021-05-31
  • Golanggo micro集成链路跟踪的方法和中间件原理解析

    go micro集成链路跟踪的方法和中间件原理解析

    这篇文章主要介绍了go-micro集成链路跟踪的方法和中间件原理,关于Http或者说是Restful服务的链路跟踪,go-micro的httpClient支持CallWrapper,可以用WrapCall来添加链...

    波斯马11582022-09-30