給 Go 提問題?充分了解 Go 提案流程
今天這篇文章將給大家分享,也可以借此學(xué)習(xí)社區(qū)的運(yùn)作模式。
前言
在官方資料《Proposing Changes to Go》中,給出了一系列的提案指導(dǎo)意見、流程規(guī)劃以及目標(biāo)。
Go 語(yǔ)言項(xiàng)目,開發(fā)過程以設(shè)計(jì)為驅(qū)動(dòng)。
有以下的要求:在實(shí)施重要的語(yǔ)言、庫(kù)或工具更改(包括 Go 主倉(cāng)庫(kù)和所有 golang.org/x 倉(cāng)庫(kù)中的 API 更改,以及 go 命令的命令行更改)之前,必須首先進(jìn)行討論,有時(shí)還需要正式文檔化。
提案流程是怎么樣的
提案(proposal)過程指的是對(duì)提案進(jìn)行審查并決定是否接受或拒絕提案的過程。
整個(gè)提案的流程是使用 GitHub 中的 Label(標(biāo)簽)來做流程規(guī)范的,在此也可以稱其為分類的欄目。
創(chuàng)建提案描述
第一步,提案作者需要?jiǎng)?chuàng)建一個(gè)簡(jiǎn)要的問題描述提案。一般對(duì)應(yīng)提 issues 時(shí)的對(duì)應(yīng)分類:
圖片
而對(duì)應(yīng)的不同的分類,會(huì)給出不同的 issues 模板:
圖片
基本上要滿足社區(qū)所要求的模板才會(huì)有核心團(tuán)隊(duì)的人交流,否則一開口就會(huì)讓你去補(bǔ)充內(nèi)容。
此時(shí)是不需要設(shè)計(jì)文檔的。
進(jìn)行提案分類
第二步,需要對(duì)提案進(jìn)行問題討論和標(biāo)簽分類、跟蹤。一般會(huì)將提案分為以下三種結(jié)果之一:
- 接受提案(Accept proposal)
- 拒絕提案(Decline proposal)
- 索要設(shè)計(jì)文檔(Ask for a design doc)
如果提案被接受或拒絕,則這一項(xiàng)完成。否則,預(yù)計(jì)需要基于更詳細(xì)的設(shè)計(jì)進(jìn)行進(jìn)一步的問題討論。
提供設(shè)計(jì)文檔
第三步,提案作者編寫和提供設(shè)計(jì)文檔,以詳細(xì)說明提議的設(shè)計(jì)并解決初始討論中提出的問題。也就是提出提案者需要給出設(shè)計(jì)解決自己提出的問題。
最終討論
完成第三步后,社區(qū)會(huì)結(jié)合設(shè)計(jì)文檔和問題進(jìn)行討論,需要提案作者進(jìn)行及時(shí)的修訂。再進(jìn)行多輪討論。
最終確定提案的走向,兩種結(jié)果之一:
- 接受提案
- 拒絕提案
在提案被接受或拒絕后,下一步的實(shí)施工作將按照常規(guī)的貢獻(xiàn)代碼的方式進(jìn)行。
提案有哪些狀態(tài)
Proposal Review(提案審查)
Go 核心團(tuán)隊(duì)大約每周召開一次 proposal review meetings(提案審查會(huì)議),審查和討論待決定的提案。
這個(gè)會(huì)議會(huì)就已達(dá)成共識(shí)的提案,將流程推進(jìn)到下一步(通過標(biāo)記提案已被接受或拒絕,或要求提供設(shè)計(jì)文檔)。
每周會(huì)議結(jié)束后,會(huì)議記錄會(huì)發(fā)布到 golang.org/s/proposal-minutes[1],任何對(duì)哪些提案正在審議的小伙伴都可以關(guān)注這個(gè) issues。
圖片
Incoming(傳入)
新提案會(huì)被添加到 "Incoming" 這一欄。
每周的提案審查會(huì)議會(huì)優(yōu)先審查 "活動(dòng)"、"可能接受 "和 "可能拒絕" 欄中的所有問題。
如果還有剩余時(shí)間,則會(huì)選擇將 "Incoming" 中的提案移至 "活躍" 欄。
圖片
Incoming 欄中的提案被相關(guān)成員識(shí)別、討論后,很快就會(huì)轉(zhuǎn)挪動(dòng)到 Proposal 欄下。但由于官方文檔未有提及,因此主要做此補(bǔ)充說明。
圖片
Active(活躍)
在每周的提案會(huì)議上,都會(huì)對(duì) "活躍" 欄中的問題進(jìn)行審查,以觀察討論中是否出現(xiàn)了共識(shí)。
提案審查小組還可以發(fā)表評(píng)論、提出建議、提出澄清性問題,并嘗試重述提案,以確保每個(gè)人都同意討論的具體內(nèi)容。
圖片
Likely Accept(可能接受)
如果議題討論似乎已達(dá)成接受提案的共識(shí),提案審查小組會(huì)將該議題移至 "可能接受" 欄,并張貼評(píng)論,指出這一變化。
圖片
再繼續(xù)等待一段時(shí)間,一般可能是數(shù)周。觀察后續(xù)的新的討論情況和內(nèi)容。再繼續(xù)推進(jìn)下一步流程。
Likely Decline(可能拒絕)
如果提案討論似乎已達(dá)成拒絕提案的共識(shí),提案審查組就會(huì)將該問題移至 "可能拒絕 "欄。
如果提案審查小組認(rèn)為不可能達(dá)成一致意見,因此默認(rèn)不接受該提案是合適的,則也可將該提案移至 "可能否決 "欄。
等待時(shí)間和動(dòng)作與 “可能接受” 會(huì)是一樣的。
Accepted(已接受)
提案轉(zhuǎn)到 "可能接受" 欄一周后,如果共識(shí)沒有改變,提案審查小組就會(huì)將提案轉(zhuǎn)到 "已接受" 一欄。
如果在這一周內(nèi)進(jìn)行了大量討論,提案審查小組可能會(huì)將提案在 "可能接受" 欄中再保留一周,甚至將提案移回 "活躍" 欄。
一旦提案被標(biāo)記為 "已接受",就會(huì)貼上 "提案-已接受" 標(biāo)簽,它就會(huì)從 "提案" 里程碑移到 "工作" 里程碑中,問題也會(huì)被重新使用,以跟蹤提案的實(shí)施工作。
圖片
Declined(已拒絕)
在提案轉(zhuǎn)為 "可能已被否決" 一周后,如果共識(shí)沒有改變,提案審查小組會(huì)將提案轉(zhuǎn)到 "已被否決" 一欄。
如果在這一周內(nèi)進(jìn)行了重要討論,提案審查小組可能會(huì)將提案在 "可能拒絕 "欄中再保留一周,甚至將提案移回 "激活" 欄。一旦提案被標(biāo)記為 "拒絕",該提案即被關(guān)閉。
圖片
否決還會(huì)分為四種情況,處理流程類似,分別歸類為:
- 因重復(fù)而被拒絕(Declined as Duplicate)
- 因不可行而被拒絕(Declined as Infeasible)
- 因撤回而被拒絕(Declined as Retracted)
- 因已過時(shí)而被拒絕(Declined as Obsolete)
Hold(擱置)
如果討論提案需要修改設(shè)計(jì)或補(bǔ)充信息,而這些信息在幾周或更長(zhǎng)時(shí)間內(nèi)都無法獲得,提案審查小組就會(huì)將提案移到 "擱置" 欄,并注明等待的內(nèi)容。
圖片
一旦準(zhǔn)備就緒,任何可以編輯問題跟蹤器的人都可以將提案移回 "激活 "欄,以便在下一次提案審核會(huì)議上進(jìn)行審議。
圖片
總結(jié)
Go 提案的整體流程規(guī)范是比較明確的,但其并不是每個(gè)標(biāo)簽(欄)都一定會(huì)用到。從實(shí)際的情況來看,會(huì)根據(jù) issues 討論的激烈和復(fù)雜度還決定是否使用 “可能接受/可能拒絕” 等場(chǎng)景。
我們?cè)诠俜教岚肝臋n上也會(huì)有提到提案的討論一定是能得到適當(dāng)、公平、及時(shí)、有記錄的評(píng)估,能得到明確的答復(fù)。且要求在 “proposal review meetings” 上審查和記錄。
圖片
同時(shí)會(huì)發(fā)現(xiàn),這套流程打標(biāo)簽挪欄目的動(dòng)作,非常依賴人的行為。大部分的行為都相當(dāng)?shù)闹饔^。
結(jié)合上次的已接受、已合并提案被 rsc 突然一句話撤銷來看,規(guī)范也僅僅是規(guī)范。話事人的行徑一旦有所缺失(例如:離職、生病等),這套流程就很有可能會(huì)跑不通了。