オープンソースの生産性
オープンソースは技術革新を促進しないのか?
オープンソースの生産性はサルまねだから高いという議論があったが、誰も反駁しないのでいくつかのデータをあげることにする。先日エンタープライズOSSというカンファレンスでMichael Tiemann氏(OSI会長)の講演を聞く機会があった。(ログはこちらにおいた)
User Innovation Toolkits (von Hippel, 2002)という研究を引用して、1)85%の技術革新はユーザー主導であった、2)5/6の技術革新はproprietaryだと失敗する、3) webのような技術革新はproprietryモデルでは不可能である。オープンソースは技術革新をドライブするエンジンである。
OSSの力
sourceforge.netには120万人の登録ユーザーがいて、10万のプロジェクトがある。2002年と2005年のFLOSSの調査によると約50万人のOSS開発者が週に11時間以上OSSに関与している。これは週500万時間に相当する。その動機は1)楽しいから2)スキルの向上3)社会にとって有意義だから。マイクロソフトは61000人の従業員がいるので週500万時間に相当するためには、週80時間働かなければいけない。マイクロソフトは年間60億ドル研究開発に投資をしている。週500万時間だとすると一時間あたり25ドル以下になる。マイクロソフトはセキュリティ上の問題を修正するのに20億ドルも使っている。
ソフトウェアの品質
平均的なソフトウェアの欠陥は千行あたり20〜30個と言われている。2004年の時点でLinux kernelは570万行だったので、10万個以上の欠陥があるはづであるが、985個しか発見されていない。2005年までに全ての重要なバグは修正されたが複雑度は4.7%上昇しただけだった。2006年32個の別のOSSプロジェクトを計測したが、最悪(PHP)のプロジェクトですら通常のものより50倍良かった。
まとめるとOSSは、通常のソフトウェアよりも欠陥が少なく、世界最大のソフトウェア会社よりも開発力があり、技術革新を促進している。




議論が少しずれていると思います。
ここで主張されていることは、
1.OSSのコミュニティが総力を結集すれば、世界最大のソフトウェア会社よりも多くの工数を投入できる。
2.OSSが生み出したソフトウェアは、通常のソフトウェアよりも品質が高い(欠陥が少ない)
3.よって、OSSは技術革新に貢献している。
これはこれで、前提条件が正しいのであれば、正しい帰結であると思います。
一方、「生産性が高い」かどうかは、別の議論だと思います。
生産性とは、「単位時間あたりの生産量」あるいは「投入金額あたりの生産量」で測られるべきであると思います。
定義1:生産性 = 成果物(の価値)/投入した時間
定義2:生産性 =成果物(の価値)/投入した金額
これで考えみてはいかがでしょうか?
また、成果物の価値を何で測るかが問題です。
欠陥の多寡で測れば、OSSの生産性は高いということになりますし、
Innovationの有る無しで測れば、OSSは生産性が低いということになります。
投稿: DQN | 2006年9月12日 (火) 21:09
DQNさん、コメントありがとうございます。
生産性の定義で話を整理すると、投入した金額が小さいので生産性が高いという議論はありえます。
価値をどう評価するというのは非常に面白い問題ですね。わたしはInnovationが全くなかったという立場にはいないので(ここらへんがサルマネ論とは違うところ)。
IngressにしろPostgresにしろRDBMSあるいはORDBMSとして先進的なものであったしUnixですら、そこには多くのInnovationがあったかとおもっています。
User Innovation Toolkits (von Hippel, 2002)あたりの議論はInnovationはproprietaryなモデルよりオープンな方法論の方が有利だというようなことかと。
インターネットによって世界中の人たちの時間を少しずつコストゼロで集積できるようになったのがOSSの強みであり凄みだと思います。世界中の人たちは誰に強制されるでもなく自発的に自分の時間を使っているというのも驚異ですよね。50万人の人が週に11時間以上もOSSに貢献しているというのは奇跡だと思っています。
投稿: hyoshiok | 2006年9月13日 (水) 07:38
http://www.seshop.com/event/eoss/session_data/B-6_tiemann.pdf
に当日の資料があります。
投稿: hyoshiok | 2006年9月27日 (水) 11:14