SubversionとMercurialとGITと
これらは今主流となってる(ほかにもいろいろあるが、やはり多いのはこの3つだろう)SCMだが、今の人気はやっぱりGITが強い気がする。
でも個人的にはMercurial頑張って欲しい。(vimもMercurialで管理されてるし)
Subversionや更に旧来のCVSは、MMS*1とかFMS*2とか、ZMS*3の時代からしたら凄まじい進歩だったんだろうし、それしか無かっただろうからしかたないと思う。
集中管理型のSubversionやCVSでは対処しきれなくなったということで、MercurialやGITが出てきたと。
で、なぜGITが強くなったか考えてみた。
まぁLinuxがそもそもGITで管理されてるのはでかいだろうけど、それ以上に重要なのがgithub.comの存在。
sourceforge.netがあるじゃんと言うだろうけど、sourceforge.netって個人的には、なんか固いというか真面目な感じがする。反面、github.comはフリーダムな感じがする。気に入ったプロジェクトはwatchしたり、さらには勝手にforkすることができる。さらにはコミュニティをサポートしている。だから、github.comはなんか気軽な感じがした。そして、ジョークコードも軽い気持ちでageられる。
じゃぁMercurialはどうなのか。
残念ながらそういったコミュニティが薄い気がする。採用されているのは先述のvimやMozillaといったところ。ちょっとしたOSSではあまり見かけない気がする。いや、採用されているのだろうが、日の目を見づらいクローズドな開発にしか使われていないのではないか。
というのもコマンドやらなんやらが非常にSubversionに近くて、Subversionから移行するにはもってこいのSCMであるからではないだろうか。初めてGITを触ったときなんか、任意のリビジョン(ハッシュ)に飛ぶ方法が解らなくて投げ出した。一方SubversionとMercurialはupdateコマンド(up)に-rオプションと言った具合だ。
Subversionが多くの開発現場で採用されていた(る)のは紛れもない事実だと思うが、OSSの現場は簡単にGITに移ることができる。なぜならその開発現場はオープンだし、企業の様にに引き継ぎとかをあまり考えないからだろう。開発者は各自の好きなように(そのプロジェクトの指針はあるだろうが)開発を進め、やめたくなったら勝手にいなくなるのが前提だからだ。一方企業は、現在の管理者が退職した時のことを考え後任を探したり募集をかける必要がある。そして会社というのは一般的に保守的なものだ(と思ってる)。
まぁあまり企業の話をしても離れるので一旦戻してまとめると、Subversion勢とGIT勢に挟まれてどうにも動けないのがMercurialな気がする。Subversion側はGITのコマンドの習得にコストがかかると言う。GIT側はSubversionは貧弱でかつ柔軟な開発ができないと言う。それぞれにある一定のコミュニティが存在し、ある種の宗教戦争を行なっている。お互いがお互いしか見ていないためにその間のMercurialが肩身狭く生きている。