GitHubの全リポジトリに「恒久的なオーナー」が設定可能に!管理体制が劇的に変わる
How GitHub gave every repository a durable owner
How GitHub gave every repository a durable owner
GitHubは、すべてのリポジトリに対して永続的なオーナー(durable owner)を割り当てる新しい仕組みを導入しました。これにより、組織の構成変更やメンバーの入れ替えが発生しても、リポジトリの管理権限や所有権がこれまで以上に明確かつ強固に維持されるようになります。プロジェクトの継続性を高めるための、エンジニア必見のアップデートです。
前の職場で、レガシーな機能が山ほどあって管理者が誰なのか分からず、バグ報告をどこに回せばいいか不明っていう問題にぶち当たったことがあるんだよね。
そこで取った解決策は、すべての機能のカタログを作って、既存のチームに必ず一つは割り当てるっていう方法。
中には今まで見たこともない、全く知識のない機能を担当することになったチームもあったけど…まあ、他のチームも同じ状況だから問題なしってことで。
これがかなり上手くいったんだ。バグは直るようになったし、チームもなんとかやりくりするようになったよ。
GitHubは、オーナーが突然音信不通になった時の問題を解決すべきだね。Forkすればいいって言うのは簡単だけど、新しいメンテナーがそのまま引き継げるのが一番楽だし。
実現には解決すべき課題もあるだろうけど、元のメンテナー(個人)が消えて実質死んでしまったプロジェクトをいくつも知ってる。例えば spellhold-studio のBG2チームはFork(spellholdstudio から spellhold-studio へ)で解決したけど、そのまま引き継げる仕組みがあればどれだけ楽だったか。これはほんの一例に過ぎないよ。
GitHubがいかにしてすべてのリポジトリに永続的なオーナーを付けたか
確かにそうしたよね。まあ、GitHub自体がかなり息の長いサービスだし。
サービスカタログの全項目に「エグゼクティブスポンサー(役割やチームじゃなくて個人)」を指定しなきゃいけないなんて、ただの無意味な官僚主義にしか見えない。
それに、リポジトリごとに「カスタムプロパティ」を付けるっていうのも、JIRAを管理したり、GitOpsの世界に蔓延してるスキーマレスなYAMLの塊をいじったりしてるのと大差ない気がする。
これって自分だけかな?わざわざリアルタイムなバリデーションも効かないメタデータを継ぎ足すより、素直にデータベースとAPIを使ったほうが明らかに解決策として適切じゃないの?
GitHubで14,000以上のリポジトリがあったんだな。
リポジトリの数を減らすっていうアイデアが出なかったことに驚いてる。リポジトリが14,000個もあるような極端な多さだと、所有権の管理が大変になるはずだよ。一つのリポジトリの中にいくつかのフォルダがあって、その中に複数のプロジェクトがあるような構成なら、管理もしやすいだろうしね。他のプロジェクトとの距離が近いと感じられると、リポジトリがどこか遠くにある孤立した存在だと感じるよりも、自然と「自分たちのもの」という感覚が持てるんだ。
結局のところ、n個のプロジェクトを個別に追跡するより、一つのディレクトリに所有権を割り当てるほうがずっと楽なんだよ。
「明確なオーナー」がいなかったとしたら、マージのためのコード変更って誰が承認してたわけ?
マイクロソフトの他の主要部門はみんな、ソースコードのあらゆる本番変更を追跡するための厳しい管理を課されてるのに、GitHubはリポジトリの約80%(14,000中11,000)で、まともな所有権のシステムや記録なしで運用されてたってこと?