この世に git があって良かった. とは思っている.

世の中の多くのプロジェクトで, git はほぼ当たり前のように使われているだろう. 当たり前すぎて, 特にそれがどういうものか, どう使うのがいいのか, これからどうなるべきなのか, などとあまり考えることもないかも知れない.

でも, いくつか考えてみて欲しいこともある. 例えば, 以下のようなことどもについて.

pull request について

pull request (あるいは merge request) というのは,

「あなたのリポジトリをクロンして, もっと良くしたリポジトリがここにあります. だから, このリポジトリを pull して, あなたのリポジトリに merge してください. その分少しだけど, 世の中がよくなるのではないか, と僕は思うんです」

という機能である.

実に分散的で, 開放的で, 対話的で, 興味深い概念, 機能だ. 素晴らしい.

そして, 今やたいていの (商業的/産業的なものも含めて) プロジェクトで, pull request 機能を利用し, そのついでにリヴュをしたりして, 品質向上に努めているのではないだろうか.

でも, ちょっと待って.

pull request という考え方が生まれたのは, もともとフリー/オープンなソフトウェア・プロジェクトにおいてだった.

フリー/オープンなソフトウェア・プロジェクトでは, 世界中の誰でもがプロジェクトに貢献 (機能追加とか, 修正とか, …) してくれることを期待している. とは言え, どこの誰とも分からないひとから, 突然のタイミングで, 中身もよく分からない貢献をしました! と言われても困るのも確かなのだ.

だから, 貢献してくれるのなら, まず現時点でのプロジェクトのリポジトリをクロンして, それに貢献分の変更を加えた上で, pull request を送ってくれ給えないか, 諸君. というのはとても良きやり方である.

送られた pull request は, プロジェクトのメンテナと呼ばれるひと (ひとりとか, 大きなプロジェクトだと何人もいることもある) が受け取り, 自分のタイミングに合わせて pull request の中身を調べ, 納得すればそれを 都合の良いタイミングで プロジェクトに merge する. そしてそのプロジェクトは (世の中は) 少しだけ良くなる.

メンテナが納得できないような pull request はいつまでたっても merge されなかったり, 丁重に (理由を付けて) お断りされたり, 別のプロジェクトが fork されたりする.

よろしい! pull request という考え方/機能が生まれ, 重宝されているのは, そこがオープン・ワールドだからだ.

さて, では今度はオープンではないプロジェクト, つまりメンバも決まっており, 作るべきプロダクトもだいたい決まっており, スケジュールもだいたい分かっているようなプロジェクト (たいていの読者が仕事でやっているようなプロジェクト) について考えてみようか.