|
||
TortoiseCVSの作者がバージョン管理システムの歴史を各イノベーションがもたらした「驚き」を語りながらふりかえる: http://www.flourish.org/blog/?p=397
以下、自分の体験とごっちゃ混ぜにして要約する。原文を読むことを勧める。
これすら常識でない時代があったこということがASCIIの歴史を読むとうかがえるらしい。
ソース管理部門にディスクを持っていくとそこのスタッフが顧客用の製品をビルドしてくれた…
McIlroy先生の“An Algorithm for Differential File Comparison”によって可能になったらしい。
シンボリックリンク張ってチェックアウトするのやったことあるな。今時の人にはピンとこないかもしれないが、この時点では開発が全て一つのマシンで行われるのが一般的だった。
SCCSのアルゴリズムの「反対」(reverse-deltas)をやっるこによりSCCSを超越したと書いてある。何のことかわからない。(要リサーチ)
これまでは個々のファイルしか管理できなかった。rcsで「ci -u *」とかしても、それはそのディレクトリ内だけで、プロジェクト階層を一気にチェックインとかできなかった。トランザクションとか無かったけど、それでもプロジェクト単位で管理できることが画期的だった。
それよりも、排他的なロックを使わず複数の開発者が同時に作業できるというのが素晴しかった。
元記事の著者はVisual SourceSafeからCVSに移行したときの驚きをこう語っている:
これ(cvs)が約束しているような魔法 --複数の人が同時に同じファイルを編集しそれを間違いなく何も壊すことなくマージすること-- ができるとは正直言って信じがたかった。
そういえば「hoge.cチェックアウトしたいから、チェックインして~」とか日々やるのが面倒になって、会社全般をRCSからCVSに移行したな。(多分そこで書いだどのコードよりもこれが最高の貢献だったと思う) その後、VSSを使うハメになって排他的シングルスレッド開発に逆戻りしたときには「これを商品として売っているのか!」とびっくりした。
1994年にTCPクライアントサーバ機能がCVSに追加された。 RCSにもネットワーク機能が追加されていたなんて知らなかった。
オープンソースプロジェクトの過去のバージョンが発見しにくいという問題が切っ掛けで第一次ネットバブルの勢いにのったVA LinuxがSourceForgeを立ち上げたそうな。当時はホスティングもそう安くなかったし、バージョン管理やバグ管理システムを運営するのもそう簡単ではなかった。
SourceForgeって今ではぱっとしないけど、考えてみると随分先を行っていたんだな。
分散型バージョン管理システムが革命的な理由をいまさら語る必要もんだいだろう。それとも分散型しか知らない世代がもう実在しているのだろうか?
その斬新さを示すコメント:
GitHubのもたらした斬新さ:他人のコードに加えた細やかなハックすら公開するということ。それまでは、このような変更は自分のコンピュータに置きっぱなしだった。
GitHub、というかこのサイトが確立したソーシャル開発文化は始まったばかりで、それによる変革はこれから明かになってくるだろう。
元記事著者のGitHubに関するポスト:
バージョン管理システムはソフトウエア開発に大きな進歩をもたらした。このようなイノベーションは政府、ヘルスケア、ジャーナリズム、データなどの各分野でも可能なのだろうか? という問で元記事は終っている。
この問いには社会改革とビジネスにおけるチャンスが秘められていると思う。