Slide 1

Slide 1 text

Go のProposal の追い方ガイド syumai Go Conference 2021 Autumn (2021/11/13)

Slide 2

Slide 2 text

自己紹介 syumai Go Language Specification 輪読会主催 普段はGo でGraphQL サーバー (gqlgen) や TypeScript でフロントエンドを書いていま す Twitter: @__syumai Website: https://syum.ai

Slide 3

Slide 3 text

話すこと Go の Proposal とは? Proposal を追うにあたって読んでおきたい資料 Proposal の議論方法について Proposal のプロセス Proposal review meetings Proposal のステージ どこを追っていけば良いのか?

Slide 4

Slide 4 text

本日のテーマ

Slide 5

Slide 5 text

Go のProposal の追い方

Slide 6

Slide 6 text

Go のProposal とは? Go の言語仕様や、標準ライブラリ、コマンドラインツールなどに 対する提案 golang/go リポジトリ上で GitHub Issue の形式で管理されている これを追っていけば、将来の Go がどうなっていくのかいち早くキ ャッチアップ出来る

Slide 7

Slide 7 text

Proposal を追うにあたって 読んでおきたい資料

Slide 8

Slide 8 text

Proposing Changes to Go Go の Proposal の議論方法について書かれた資料 Proposal のステージ遷移についてや、定例 MTG についてなどもこ こに書かれている 本日の発表内容も、この記事をベースにしています https://go.googlesource.com/proposal/+/master/README.md

Slide 9

Slide 9 text

Proposal の議論方法について

Slide 10

Slide 10 text

Proposal のプロセス ( Proposing Changes to Go に記載の内容から抜粋しました) 1. Proposal の著者が Issue を作成する (Design doc は不要) 2. Issue tracker 上で議論を行い、下記の3 つを結果とする 承認, 却下, Design doc の要求 3. (Design doc が必要な場合) Proposal の著者が Design doc を書く 4. 議論、Design doc の更新を繰り返し、下記の2 つを結果とする 承認, 却下 承認または却下後に、通常の contribution 同様に実装が行われる

Slide 11

Slide 11 text

( 補足) Design doc について Proposal の内容のみでは不足している場合に追加で提出される文 書 Proposal とは別で管理されている golang/proposal リポジトリ ファイル名に Issue 番号を付けた Markdown の形式で投稿される

Slide 12

Slide 12 text

Proposal review meetings Go に提出されている Proposal について、Go Team のメンバーが 議論するミーティング 週次で開催されている ( 大体水曜) ここで Proposal のステージを更新する 議論の対象になるのは Active, Likely Accept, Likely Decline の Proposal 結果は Proposal minutes (https://golang.org/s/proposal-minutes) に投稿される

Slide 13

Slide 13 text

Proposal minutes の投稿イメージ

Slide 14

Slide 14 text

Proposal のステージ Incoming Active Likely Accept Likely Decline Accepted Declined (Duplicate, Infeasible, Retracted) Hold Issue のラベルとして付与される Incoming => Active => Likely Accept => Accepted のように進む

Slide 15

Slide 15 text

Incoming 新しい Proposal はこのステージに追加される 次に議論すべき Proposal として判断されたら、Review meeting で Active に移動される

Slide 16

Slide 16 text

Active Review meeting での議論の中心 この時点で、実装が試験的に始まったりもする 例: https://github.com/golang/go/issues/48424 実装して、使ってみて問題ないかと言うのも議論の材料になる

Slide 17

Slide 17 text

Likely Accept / Likely Decline Accept / Decline 前のステージ ここから特に動きが無ければ、時間を置いてAccept / Decline され る

Slide 18

Slide 18 text

どこを追っていけばいいのか?

Slide 19

Slide 19 text

基本的な追い方 1. GitHub Issue から探す 2. GitHub の Proposal Project を見る ( これが楽!) 3. Proposal minutes を読む

Slide 20

Slide 20 text

1. GitHub Issue から探す golang/go リポジトリの Issues から、 Proposal タグ付きのもの を検索する 最新のものを見たり、検索する分にはいいものの、推移を追うのが 難しい!

Slide 21

Slide 21 text

2. GitHub の Proposal Project を見る https://github.com/golang/go/projects/1 各Proposal のステージ毎に列が分かれていて見やすい タグ検索も出来るので、よく generics で絞り込んでます

Slide 22

Slide 22 text

3. Proposal minutes を読む 大体毎週水曜に開催されているので、日本時間で木曜夜くらいに見 に行けば最新のminutes が上がっています ステージの推移は一番わかりやすいです ただ、一覧性や検索性は良くない

Slide 23

Slide 23 text

その他のパターン

Slide 24

Slide 24 text

Design doc の変更を追う たまに、 Proposal より前に Design doc が書かれるパターンがあ る proposal リポジトリへの追加 ( マージ) 自体は、Issue が投稿さ れて番号が確定してから 結局 Proposal として投稿はされるが、いち早くキャッチアップし たければこれを追うのもあり Gerrit の Design doc の CL 一覧 https://go-review.googlesource.com/q/project:proposal

Slide 25

Slide 25 text

GitHub Discussions Proposal を出す前に重要な議論が上がったりします Proposal の具体的な内容の議論にも使われます 重要な話題を見逃したくなければ時々チェックすると良さそうです https://github.com/golang/go/discussions

Slide 26

Slide 26 text

自己流の Proposal の追い方の紹介

Slide 27

Slide 27 text

自己流の Proposal の追い方の紹介 最近行っているのは下記2 つ 毎週木曜、GitHub Project で generics Label の Proposal の進行 をチェック 月に1 回、1 ヶ月分の Meeting minutes で Active になったものをま とめてチェック 自分に合う方法を選んで、ぜひ Proposal を読んでみてください!

Slide 28

Slide 28 text

ご清聴ありがとうございました!