オープンソース
ギガバック(10億ドル)以上:GNU/Linuxのサイズ推定(2001年)
More Than a Gigabuck: Estimating GNU/Linux's Size (2001) (dwheeler.com)
要約
2001年の分析によると、代表的なGNU/LinuxディストリビューションであるRed Hat Linux 7.1を従来のプロプライエタリな手法で開発した場合、10億ドル以上のコストがかかると推定されました。これは、3000万行以上のソースコード(SLOC)と8,000人年以上の開発工数を要する規模です。この分析は、オープンソースソフトウェアの経済的価値と、GPLライセンスの優位性を示しています。
全文翻訳
ギガバック(10億ドル)以上:GNU/Linuxのサイズ推定(2001年)
David A. Wheeler (dwheeler@dwheeler.com) 2001年6月20日 バージョン1.0
この論文では、代表的なGNU/LinuxディストリビューションとしてRed Hat Linux 7.1を使用し、GNU/Linuxに含まれるソースコードの量を分析し、興味深いと思われる結果を提示します。特に、米国の従来のプロプライエタリな手法でこのLinuxディストリビューションを開発するには、10億ドル(10億ドル - ギガバック)以上かかると推定されます(2000年米ドル換算)。これは、約1年前にリリースされたRed Hat Linuxバージョン6.2の6億ドルの推定値と比較されます。また、Red Hat Linux 7.1には3000万行以上の物理的なソースコード(SLOC)が含まれており、バージョン6.2の1700万行以上と比較して大幅に増加しています。COCOMOコストモデルを使用すると、このシステムは開発に約8,000人年を要したと推定されます(バージョン6.2の開発に必要な4,500人年と比較して)。したがって、Red Hat Linux 7.1は、Red Hat Linux 6.2と比較して、サイズ、工数、および従来の開発コストで60%以上の増加を表しています。これは、世界中で利用可能な成熟した、あるいは成熟しつつあるオープンソース/フリーソフトウェアプログラムの数が増加したためです。
他にも多くの興味深い統計情報が得られます。最もコード量の多いコンポーネント(順不同)は、Linuxカーネル(デバイスドライバを含む)、Mozilla(Webブラウザ、メールクライアント、HTMLエディタを含むNetscapeのオープンソースWebシステム)、X-windows(グラフィカルユーザーインターフェースのインフラストラクチャ)、gcc(コンパイルシステム)、gdb(デバッグ用)、基本的なバイナリツール、emacs(テキストエディタおよびそれ以上)、LAPACK(数値線形代数用の大規模Fortranライブラリ)、Gimp(ビットマップグラフィックスエディタ)、MySQL(リレーショナルデータベースシステム)でした。
使用されている言語は、コード行数が多い順に、C(71% - 以前は81%)、C++(15% - 以前は8%)、シェル(kshを含む)、Lisp、アセンブリ、Perl、Fortran、Python、tcl、Java、yacc/bison、expect、lex/flex、awk、Objective-C、Ada、Cシェル、Pascal、sedでした。
最も一般的なソフトウェアライセンスはGNU GPLです。ソフトウェアの半分強は単純にGPLでライセンスされており、コピーレフトライセンス(GPLおよびLGPL)を使用したソフトウェアパッケージは、少なくとも一部または代替として、コードの63%を占めました。あらゆる面で、コピーレフトライセンス(GPLおよびLGPL)はこのLinuxディストリビューションにおける支配的なライセンスです。対照的に、パブリックドメインのソフトウェアはわずか0.2%でした。
この論文は、Red Hat Linux 6.2を測定した、GNU/Linuxのサイズを推定する私の以前の論文の更新版です[Wheeler 2001]。Red Hat Linux 6.2は2000年3月にリリースされ、Red Hat Linux 7.1は2001年4月にリリースされたため、この論文は約1年間に何が変化したかを示しています。詳細については、http://www.dwheeler.com/sloc を参照してください。
1. はじめに
GNU/Linuxオペレーティングシステム(単に「Linux」とも呼ばれる)は、無名から強力な市場力へと成長しました。ある調査では、インターネットサーバーの利用OSとしてLinuxが他のどのOSよりも多いことがわかりました[Zoebelein 1999]。IDCによると、1999年に購入されたすべてのサーバーOSの25%がLinuxであり、Windows NTの38%に次ぐ第2位でした[Shankland 2000a]。これには多くの理由があると思われますが、単にLinuxが無償または低コストで入手できるからだけではありません。例えば、実験によるとLinuxは非常に信頼性が高いことが示唆されています。1995年の個々のコンポーネントセットの調査では、GNUおよびLinuxコンポーネントは、プロプライエタリなUnix競合製品よりも有意に高い信頼性を示しました(GNUとLinuxでは6%から9%の障害率、プロプライエタリソフトウェアでは平均23%の障害率でした)[Miller 1995]。1999年のZDnetによる10ヶ月間の実験では、MicrosoftのWindows NTが「典型的な」イントラネット負荷の下で6週間ごとにクラッシュしたのに対し、同じ負荷とリクエストセットを使用した場合、Linuxシステム(2つの異なるディストリビュータ製)は一度もクラッシュしませんでした[Vaughan-Nichols 1999]。
しかし、おそらく多くの開発者やユーザーの間でLinuxが人気がある最も重要な理由は、そのソースコードが一般的に「オープンソースソフトウェア」および/または「フリーソフトウェア」(ここで「フリー」は「自由」を意味します)であることです。「オープンソースソフトウェア」または「フリーソフトウェア」のプログラムは、本質的に、ロイヤリティやその他の制限なしにソースコードを取得、表示、変更、再配布できるプログラムです。「オープンソースソフトウェア」のより正式な定義はOSI[1999]で入手でき、「フリーソフトウェア」のより正式な定義はFSF[2000]で入手でき、これらのトピックに関するその他の一般的な情報はWheeler[2000a]で入手できます。オープンソース/フリーソフトウェアを使用する定量的な根拠はWheeler[2000b]で提供されています。
Linuxオペレーティングシステムは実際にはコンポーネントのスイートであり、その基盤となるLinuxカーネルを含み、さまざまなディストリビュータによってパッケージ化、販売、サポートされています。Linuxカーネルは「オープンソースソフトウェア」/「フリーソフトウェア」であり、これは典型的なLinuxディストリビューションの他のすべての(またはほぼすべての)コンポーネントにも当てはまります。オープンソースソフトウェア/フリーソフトウェアは、ユーザーが問題を即座に修正し、システムをカスタマイズし、ソフトウェアを任意の方法で分析できるため、特定のベンダーの顧客になることからユーザーを解放します。
驚くべきことに、誰でもLinuxを任意のプロパティについて分析できるにもかかわらず、Linuxディストリビューションに含まれるソースコード行数(SLOC)の公開分析はほとんど見つかりませんでした。私が(自身のもの以外で)見つけた唯一の公開データは、通常「Halloween I」および「Halloween II」と呼ばれるドキュメントでMicrosoftによって開発されたものです[Halloween I][Halloween II]。
以前の論文では、Red Hat Linux 6.2とHalloween論文からの数値を調査しました。この論文は、今日のGNU/Linuxディストリビューションのサイズの見積もりを示し、従来のソフトウェア開発手法を使用してこの典型的なLinuxディストリビューションを再構築した場合のコストを推定する、私の以前の論文を更新するものです。さまざまな定義と仮定が含まれているため、他の人がこれらの数値が正確に何を意味するかを理解できます。以前の論文を最初に読む必要がないように、意図的にこの論文を書いています。
私の目的のために、「代表的」なLinuxディストリビューションとしてRed Hat Linuxバージョン7.1を選択しました。このディストリビューションがいくつかの理由で妥当に代表的であると信じています。IDC[Shankland 2000b]によると、Red Hat Linuxは1999年に最も人気のあるLinuxディストリビューションでした。Red Hatは1999年に全コピーの48%を販売しました。市場シェア販売で次に大きいディストリビューションはSuSEで15%でした。すべてのLinuxコピーがこの研究でカウントされるような方法で「販売」されているわけではありませんが、この研究は少なくともRed Hatのディストリビューションが人気のあるものであることを示しています。多くのディストリビューション(Mandrakeなど)は、古いバージョンのRed Hat Linuxに基づいています。すべての主要な汎用ディストリビューションは、他の理由がなくても、Red Hat Linuxがサポートする種類の機能を(少なくとも)サポートしています。すべてのディストリビュータは、統合するコンポーネントを選択するために、同じオープンソースソフトウェアプロジェクトのセットから開始します。したがって、他のディストリビューションも、同じ種類の機能に対して、しばしば同様のサイズの同じコンポーネントまたは同様の種類のコンポーネントを選択する可能性が高いです。異なるディストリビューションとバージョンは異なるサイズ数値を生成しますが、この論文は「すべての」ディストリビューションを評価しようとしていないにもかかわらず、啓発的であると願っています。一部のディストリビューション(SuSEなど)はさらに多くのアプリケーションを追加することを決定するかもしれませんが、これもより大きな(より小さいではない)サイズと推定工数レベルを作成するだけであることに注意してください。このプロジェクトを開始した時点で、バージョン7.1は利用可能な最新バージョンのRed Hat Linuxであったため、分析のためにそのバージョンを選択しました。Red Hat Linux 6.2は2000年3月にリリースされ、Red Hat Linux 7は2000年9月にリリースされ(コードはカウントしていません)、Red Hat Linux 7.1は2001年4月にリリースされたことに注意してください。したがって、Red Hat Linux 7.1と6.2の違いは、約1年間に蓄積された違いを示しています。