golang/go issuesの対象傾向を見る
golang/goのissues傾向を調べるため、パッケージなどprefixごとにどのくらいのissueが作られているのかを簡単&ざっくりですが調べてみました。
# Github API(v3) から愚直にpagingしつつissueを取得します # credentialなしでも叩けますが、rate limitが緩和されるので付与(credentialなしで60/h,ありで5000/h) $ for i in {1..600}; do curl -XGET "https://api.github.com/repos/golang/go/issues?page=$i&per_page=100&state=all" \ -H "Accept: application/vnd.github.v3+json" \ -H "Authorization: token xxx..." \ | jq ".[].title" >> ~/golang_go_issues_20220619_all.txt; done $ cat golang_go_issues_20220619_all.txt| wc -l 52904 # issue template で指定されている `affected/package: title` のタイトルフォーマットを前提にparse(一部従っていないissueもある)・上位20件を表示 $ cat ~/golang_go_issues_20220619_all.txt | sed 's/"//g' | awk -F: '{print $1}' | sort -n | uniq -c | sort -nr | head -n 20 3833 cmd/go 3047 cmd/compile 3000 runtime 2541 proposal 1638 net/http 1500 x/tools/gopls 1076 net 887 x/pkgsite 592 cmd/link 578 x/build 521 doc 500 cmd/cgo 484 os 470 time 468 spec 459 cmd/gc 427 encoding/json 419 x/mobile 414 gccgo 404 x/website
コマンド・処理系関連とproposalが圧倒的に多いですね。
次いでnet/http
net
が多いのもGoらしく、webを意識した言語らしさを感じます。
(特に net/http
だけでも多く、goplsやdocなど周辺ツールよりも多い)
issueが多く作られているパッケージは(バグを多く含んでいたとか、改善点が多いという可能性もありますが)皆が多くの関心を寄せているパッケージという見方もできるので、 Go標準パッケージを読むときの優先順位順位付けなどに使ったりできそうだなと思いました。