ARPABLE
アープらしいエンジニア、それを称賛する言葉・・・アーパボー!
OSSライセンス講座

オープンソース講座(4):オープンソースソフトウエアとは

オープンソースソフトウエアとは

オープンソースソフトウエア(Open Source Software、以下OSS)とは、作者(著作権者)が公開されたソースコードを利用することは勿論、改変や再配布が自由に許可されているソフトウエアです。

多くのOSSは、世界中の開発者が参加するコミュニティを形成することにより、脆弱性対策やバグ修正、機能追加・拡張などを迅速かつ継続的に行うことができるようになっています。
その結果、多くの企業からの献金などが集まりやすくなり、無償のOSSが多いにも関わらず、先端分野で洗練されたプログラムを、高性能、高品質で提供することができるようになりました。

今や、OSSは企業が商用利用のソフトウエアを開発するのになくてはならないものになっております。
代表的なOSSはhttps://openstandia.jp/oss_info/を参照のこと。

一方、その対極にあるのが「プロプライエタリソフトウエア」であり、その考え方は、「プログラムの開発には投資が必要で、しかも自動的に著作権が発生するためソースコードを非開示にしてライセンス料を徴収すべきだ」というもので、そのようなプログラムを「プロプライエタリソフトウエア」といいます。

OSSと似て非なるソフトウエアにフリーウェアがある。
これは単に無償で公開されているソフトウエアのことを指すのが一般的であり、ソースコードが公開されていたり改変や再配布を許容されているわけではない。

OSIの定義 (Open Source Initiative)

ソフトウエアがOSSとして認められるための定義を、The Open Source Initiative(OSI)がThe Open Source Definition(OSD)というという形で定めています。
以下の解説は八田真行氏による日本語訳を、筆者が注釈したものなので正確に知りたい方はhttps://opensource.org/osd をご参照ください。

  1.  再頒布の自由
    「オープンソース」のライセンスは、様々なプログラムを集めたソフトウエア頒布物の 一部として、無料で頒布することを制限してはならない。
    (ただし有償を妨げるものではない)
  2.  ソースコード
    「オープンソース」であるプログラムはソースコードを含んでいなければ ならず 、コンパイル済形式と同様にソースコードでの頒布も許可されていな ければならない。
    何らかの事情でソースコードを頒布できない場合には、 妥当な程度の費用で入手できる方 法を用意し公表すること(例えば、インターネッ トからの無料ダウンロード)
  3.  派生ソフトウエア
    ライセンスは、ソフトウェアの変更等による派 生ソフトウエアを元のソフトウエアと同じライセンスで頒布することを許可しなければならない。
  4.  作者のソースコードの完全性(integrity)
    元のソースコードに対して変更を加えた部分を本体とは別に 「パッチファイル」として頒布する場合であってもソースが容易に入手可能なことを保証しなければならないが、変更した「パッチファイル」に元のソフトウエア とは異なる名前やバージョン番号をつけるよう義務付けるのは構わない。
  5. 個人やグループに対する差別の禁止
    ライセンスは特定の個人やグループを差別してはならない。
  6. 利用する分野(fields of endeavor)に対する差別の禁止
    ライセンスは営利・非営利を問わず、またある特定の分野でプログラムを使うことを制限してはならない。
  7. ライセンスの頒布(distribution)
    プログラムを利用する権利に(機密保持や知財権等の)追加的なライセンスを求めてはならない。
  8. 特定製品でのみ有効なライセンスの禁止
    プログラムに付与された権利は、ある特定製品の一部であるということに依存してはならない。 プログラムをそ の頒布物 から取り出したとしてもプログラムが再頒布される全ての人々が、 元のソフトウエア頒布物において与えられていた権利と同等の権利を有するこ とを保証すること。
  9. 他のソフトウエアを制限するライセンスの禁止
    ライセンスはそのソフトウエアと共に頒布される他のソフトウェアに制限 を設けてはならない。例えば、同じメディアに同梱するソフトウエアが全てオープンソースソフトウェアであることを要求してはならない。
    →他のライセンス、例えば商用のバイナリプログラムと同梱することを拒絶してはならない。
  10. ライセンスは技術中立的でなければならない
    ライセンス中に、特定の技術やインターフェースの様式に強く依存するような 規定があってはならない。
    →ライセンス許諾の意思表示のために、シュリンクラップ、クリックラップをはじめCUI環境でもどんなメディアでも手段を問わずコードの再利用を妨げてはならないという意味。
    もっと簡単に言うり、WindowsPCのみ適用するとか、MAC特有の機能がないと動作しないなどの条件を設けることはできない)

OSSはなぜ普及するのか

筆者が考える「OSSが普及する理由」を挙げてみましょう。

  • 世界中の優秀な技術者が次世代を見据えて先端的で高品質なソフトウアが提供されており、しかもバグの発見・修正や改良版が頻繁にアップデートされている。
  • 大手の企業が開発したソフトウエアが寄贈されている。
  • NAP条項(Non Assertion to Patent)等、OSSライセンスを守ることで、法的トラブルのリスクが低減できる。
  • 企業にとってはコストダウンにつながる。
  • 特定のベンダーが技術を独占することが難しくベンダーロックインを避けることができる。

OSSの歴史観

このシリーズの初稿でも取り上げたようにOSSの取り扱いをややこしくしているのが、関係法や関係者が多いということではないでしょうか。

 

OSSの構成者達図 OSSの構成者達

 

以前にも似たような図を掲載しましたが、OSSはプログラムの実態のほかにそれを開発するためのコミュニティ(会計、啓蒙、監視なども含む一般の会社に近い組織)とライセンス条項、そしてその法的根拠としての知的財産に関する各国法が存在するわけです。

この図の中のOSSの2要素である「コミュニティ」と「ライセンス」を以下に示しておきます。

 

オープンソースの2要素(解説)図 オープンソースの2要素とは

 

OSSのライセンス条項は主に改変権、複製権、頒布権(再頒布権)を規定しており、その主張の根拠は結局各国の著作権法となっています。

「無方式主義」のベルヌ条約をベースにしているとはいえ各国の諸事情により多少の違いがあることは既にお伝えした通りです。

更に世界で開発され使用されているOSSのライセンサーとライセンシーが別の国なんていうのはむしろ当たり前のことですね。

そのような複雑な環境の中で、誕生から20年以上がたちその利用者は増え続け、今や重要なあらゆる産業基盤の一つになっているというのが、今のOSSの置かれた立場です。

その将来を模索するためにも先ずはその歴史を紐解いておきましょう。

OSSの前身?

正確な記録はつかめてないが、米国では1970年あたりからハッカー(ここでは「天才系プログラマー」)を中心にソフトウエアのソースコードを配布しあったりしていたようですが、まだ組織立った動きにはなっていませんでした。

日本でこのようなことが活発になったのはパソコン通信(今は死語?)であり、これは1980年中ごろあたりから、はやり始めインターネットが普及する1990年中ごろまで続きました。

パソコン通信にはいくつかのフォーラムがあり、自分が興味のあるところに入会し仲間と議論したり必要なソフトウエアをダウンロードしたりしてました。
そういう意味では仕組みは異なりますが、今でも同じようなコミュニティーがあちこちにできていますね。

RichardStallmanフリーソフトウエアの教祖  Richard Stallman

1970年代後半からIBM互換機ビジネスが始まり1981年にはFBIも絡んだIBMスパイ事件があり、オペレーティングシステム(以下、OS)のソースコードが商取引されていくさなか、それに反旗(?)を翻したのがOSS誕生の礎を作った重要な人物がRichard Stallman氏です。

彼はマサチューセッツ工科大学(MIT)人工知能研究所に所属していましたが、ソフトウエアを自由に使うべきだという信念の元1983年GNU(OS開発のためのプロジェクト)を立ち上げました。

この考えがその後のOSSにつながっていくという意味で彼の功績は大きいといっていいでしょう。
しかも「使ったら、書いたプログラムを必ず公開する(コピーレフト)」という考えは現在に至るまでぶれることなく一貫している点が、その善悪はともかく経緯を評すべきでしょう。

そして1985年、Richard Stallman氏はFSF(Free Software Foudation)を設立し、使う自由、作る自由をさらに推進するため「フリーソフトウエア」を定義しました。
その定義をwikipediaから以下に引用する(リンク先はここをクリック)。

  1. 目的を問わず、プログラムを実行する自由 (第 0 の自由)。
  2. プログラムがどのように動作しているか研究し、そのプログラムに あなたの必要に応じて修正を加え、採り入れる自由 (第 1 の自由)。 ソースコードが入手可能であることはこの前提条件となります。
  3. 身近な人を助けられるよう、コピーを再頒布する自由 (第 2 の自由)。
  4. プログラムを改良し、コミュニティ全体がその恩恵を受けられるよう あなたの改良点を公衆に発表する自由 (第 3 の自由)。 ソースコードが入手可能であることはここでも前提条件となります。

この成果の一つが1989年に打ち出したGNU GPL(General Public Licence)なるライセンスですね。
Copy Right(著作権)をもじってCopy Left(著作物を残す→公開する)を打ち出したこのライセンス形態は、物理法則を使ってないので「発明」とは言えませんが、相当画期的なものだったのではないでしょうか。

つまり、「OSSを改変した場合、それを他者も簡単に利用できるよう、元のコードの改変部は勿論そのコードとリンクした全ての自社保有のコードも公開する」というもの。

勿論その中に自社の企業秘密や営業機密が入っている場合にはリスクが高くなりますが、有望なソフトウエアはなるべく他社にも自由に使ってもらうという方針が徹底されていますね。

当時、GNUプロジェクトはOSやらツールやらで重要なソフトウエアを開発していましたが、残念ながらOSの核となるカーネルの開発が遅れまくっていました。

そこに登場したのがフィンランドのLinus Torvalds氏。
1991年にカーネルを”Linux”と命名しGPLライセンスで公開することになりました。

それでも当時はまだ「やわやわ」なものだったようですが、オープンソースにしたことで世界中の優秀なプログラマーが連携して効率的な分散開発をした結果、機能、品質ともに素晴らしいカーネルが出来上がったというわけです

このことが一つの大きなきっかけとなり、GPLライセンスが一気に市民権を得ていったといってもいいでしょう。

OSSの誕生

Eric Raymond「伽藍とバザール」の     Eric Raymond

このブログの読者はNetscape NavigatorというWebブラウザをご存知の方も多いと思いますが(もはや伝説かな?)、OSS、オープンソースソフトウエアなる言葉がここから生まれたことをご存知の方はそれほど多くはないのではないでしょうか?

1990年前半から「WebブラウザならNetscape」というのが通り相場となっていました。

その理由は、有料だが断然使いやすかったから。
しかしMicrosoft WindowsのExploreが次第にシェアを
伸ばしはじめ、Windows95で無料のバンドル版ブラウザ
となり、機能差もほとんどなくなってしまいました。

Netscape陣営はMicrosoftに負けじと様々な機能を追加していったのが逆に裏目に出てバグは増え、次第に操作も重たくなっていきました。

そんな中、Eric Raymond氏は1997年3月に開催された第4回国際リナックス会議の場で講演したのが、かの有名な「伽藍とバザール」です。(えっ、知らない?)

これはどういうことかというと、それまでの開発スタイルは、「伽藍」のような大聖堂を作るときのように最初にがっちりと仕様を決めてから作業を分割して各人に割り振り、中央集権的に管理・推進していく方式が主流でした。
「ウオーターフォール型」のソフトウエア開発に近い手法ですね。

それに対してLinuxの開発スタイルは「バザール型」、つまり「独立・分散型」の開発スタイルで、世界中から優秀なプログラマーが情報交換、ソース公開を繰り返しながら作業を進めることにより短期間でその完成度を高めていったという話です。
今でいうと「アジャイル開発型」に近いのではないでしょうか?

Bruce PerensOSSの提唱者Bruce Perens

これに影響されたNetscape陣営はMozillaプロジェクトを立ち上げ、Linux流のバザール型開発をしたプログラムを「フリー(ただ?)」ではなく「オープン」だということを打ち出すためオープンソースソフトウエア、OSSと呼ぶことになったようです。

そして翌年の1998年Netscape communicatorの
ソース公開が実現しました。
こののちMozilla foundationを設立しブラウザのFirefox や eMailのThunderbird など、数々の賞に輝く無料のオープン
ソース製品を提供していったというのはご存知の方も多いのではないでしょうか。

一方、最初にOSSという言葉を生み出しOSD(Open Source Definition)(*1)として定義したのがBruce Perens氏とされており、そのスポークスマン的な相棒がEric Raymond氏だったようです。

両氏は1998年にOSI(Open Source Initiative)という組織を立ち上げ、オープンソースの定義やOSSの商標登録なども行っております。

オープンソースの歴史図 オープンソースの年表(シンボルマークやマスコットの商標権は夫々の各団体が所有する)

 

一般的にライセンスも含めてこの手の文章は、各国法の違いや自分たちの主張が縮小して解釈されないよう抽象的に描かれているため、実際に使用する場合にはライセンスの原文を「逐条翻訳」したうえでレビューを行い解釈をまとめるというのが基本ですね(特許と同じ手順だ)

(*1)Debianフリーソフトウエアアガイドライン(Wikipediaから抜粋)

Bruce Perens氏が定義したOSDはDebianフリーソフトウエアガイドライン (*1)を参考にしたとされているので以下にそのガイドラインを抜粋しておく。

Debianフリーソフトウエアガイドライン (DFSG) は、ソフトウエアライセンスが、Debianの一部として含めることが可能なフリーソフトウエアライセンスであるかどうか判定するためにDebianプロジェクトが使用しているガイドラインの集合である。

  • 自由な再頒布が可能であること。
  • ソースコードを入手可能であること。
  • 改変や派生作品の作成が認められていること。
  • 差分が提供される場合はソースコードの同一性を要求してもかまわない (TeXなどのための妥協案)。
  • 人や団体を差別しないこと。
  • 適用領域による差別 (商用利用の禁止など) をしないこと。
  • プログラムの再配布時に追加ライセンスを必要としないこと。
  • ライセンスはDebianだけに限られてはならない。基本的に前項の繰り返し。
  • ライセンスは同梱される他のソフトウエアの邪魔をしないこと。
  • GPL、BSD、Artisticライセンスなどがフリーと考えられるライセンスの例である。

(アーパボー)