オープンソースと商用ソフトウェア

今,SubVersionのインストールをしているのですが、ネットで調べると色々おもしろいことがありました。
ちょっと古い話ですが例えばこの記事


BitKeeper紛争を受け、トーバルズ氏が新プロジェクト
http://www.itmedia.co.jp/enterprise/articles/0504/20/news075.html


この話はLinusさんがお気に入りのBitKeeperというバージョン管理システムをカーネル開発で作っていたのですが、これをオープンソースで作ろうという話が出てきてBitKeeperを作っていた会社が怒ってしまったという話です。
そこでこのBitKeeperというソフトウェアってどういうものだろうと思って調べてみました。


How BitKeeper works
http://www.bitkeeper.com/Products.How.html


アイデアがとてもよくてなかなかいい製品です。
今までSubVersionCVSなどのバージョン管理システムはマスターコピーを全てサーバーに集めてコミットさせるというものでした。
しかしこのBitKeeperは各クライアントにリポジトリを持っていて独立してバージョン管理を行います。



なおかつP2Pでのソースのマージもできますし、サブシステムごとのリポジトリを作ってあとで他のサブシステムとマージするなんて事もできるようです。



この方式によっていままでSubVersionなどの弱点だったマスターサーバーがボトルネックになることが解消されます。
規模が大きくなるとSubVersionではコミットなどがかなり時間がかかるみたいです。
(私はそんな大きなプロジェクトをやったことがないので経験がありませんが。)


この話を聞いてオープンソースも諸刃の剣だなと思いました。
確かにオープンソースによってソフトウェアが発展してきたのはLinuxをはじめとするオープンソースソフトウェアを見ると明らかですが、そればかりでは新しいものを開発しようとする企業がなくなってしまう恐れもあります。
私がプログラマーなりたての頃はUnix向けのCコンパイラーを売っている会社が結構ありましたが、gccが出てからほとんどなくなってしまいました。


自分はオープンソースが好きで仕事もほとんどその関係がいままで多かったと思います。
しかし、会社の中ではあまり利益を生み出さないということでなんか軽くみられてたことが多かったですね。
オープンソースと資本主義というのどこかなじまないところがあるのだとおもいます。


やはり商用ソフトウェアとオープンソースソフトウェアが両方存在する事によってバランスすることが理想ではないでしょうか。
新しいアイデアや最先端技術を使って商用ソフトウェアを開発して企業は利潤を得る。
そうすれば技術は発展していきます。
しかし企業というのはどこまでも利益を追求する組織なのでその技術をいつまでも独占したいと考えます。
そうすると技術の発展が阻害されるのでオープンソースによってさらに技術発展を促進させるという2段ロケット方式がいいですね。
あるオープンソース企業では製品をリリースして6ヶ月後にソースを公開する企業があるそうです。
6ヶ月が妥当かどうかわかりませんが、そういう試みが多くの企業で行われるといいですよね


結論としてなんでもかんでもオープンソースがいいわけではなく、社会全体にとってどういうやり方がベストかを考えていく必要がありますね。
BitKepperはよさそうなのでちょっと試してみたいですね。
ただ似たようなソフトウェアがオープンソースでもあるのでそちらもチェックですね。


SVK
http://mono.kmc.gr.jp/~yhara/w/?SvkTutorial
git
http://www-06.ibm.com/jp/developerworks/linux/060809/j_l-git.shtml