オープンソースの文化
Linuxをはじめとするオープンソースソフトウェアは、ITシステムのさまざまなところでの活用されています。正しく使うために必要となるその概念やライセンスの仕組み、オープンソースコミュニティについて解説します。(LinuCレベル1 主題:1.11)
Linuxをはじめとするオープンソースソフトウェアは、ITシステムのさまざまなところでの活用されています。正しく使うために必要となるその概念やライセンスの仕組み、オープンソースコミュニティについて解説します。
目次
オープンソースの概念とライセンス
Linux をはじめとして、すべてのソフトウェアは著作物です。そのため、ソフトウェアは、著作者がソフトウェアを使うためのライセンスを定義しています。オープンソースソフトウェアは、ライセンスが、「オープンソース・イニシアティブ(OSI)」によって策定された定義に沿っているものになります。
代表的なオープンソースソフトウェアにはLinux、Apache HTTPD server、Apache Tomcat、Postfix、Samba、PostgreSQLなどがあります。また、Linux上で動作するユーティリティ類もオープンソースソフトウェアです。
OSIによるオープンソースの定義
OSIによるオープンソースの定義は、ソフトウェアのライセンスそのものではなく、ライセンスが満たす条件を定めています。
OSIが定義する条件は以下の通りです。
- 再配布を自由に認める
- ソースコードを無償で公開できる
- 派生物を自由に利用できる
- 原著作者のソースコードを明示する
- 特定人物・集団を差別しない
- 使用分野を差別しない
- ライセンスは平等に分配する
- 特定製品に限定したライセンスにしない
- 他のソフトウェアを制限するライセンスにしない
- ライセンスは技術中立でなければならない
この条件を満たすソフトウェアのライセンスは数多く存在します。ただし、OSIは、主要なライセンスの一覧を公開し、既存のライセンスを選ぶことを推奨してライセンスの氾濫を防いでいます。
オープンソースの特徴
OSIの定義に基づいたオープンソースソフトウェアは以下の特徴があります。
- 著作権
オープンソースソフトウェアは、著作物であり、設定されているライセンスに従って使えるものです。ライセンスの内容は種々あり、規定されている内容も異なります。 - 無保証
オープンソースソフトウェアは、基本的に「無保証」です。著作者は、ソフトウェアが予期した動作をするか、しないかの保証をせず、その動作によって何らかの損害を被ったとしても補償することはありません。 - 開発継続性
オープンソースソフトウェアは、そのソフトウェアのコミュニティを通じてメンテナンスや新機能開発を継続して行うことが可能です。商用ソフトのようにサポートの打ち切りによりソフトウェアが使えなくなることはありません。
オープンソースのライセンス
OSIの定義に沿ったオープンソースのライセンスは数多くあります。ここでは主なライセンスの内容について紹介します。
- GNU General Public License(GPL)
オープンソースの代表的なライセンスです。3つのバージョンがありますが、現在使われているのはバージョン2とバージョン3です。Linux はバージョン2を採用しています。大きな特徴は、「コピーレフト」という考えを盛り込んでいることです。これは、GPLでライセンスされたソフトウェアを頒布する時には、ソースコードをつけて、再頒布をすることをライセンス上で規定しています。そのため、GPLライセンスのソフトウェアを受け取った人は必ずソースコードを入手できます。オープンソースの特長である、ソースコードの公開という事を担保しているライセンスと言えます。 - GNU Affero General Public License(AGPL)
GNU Affero General Public License(AGPL)は、GPLとほぼ同じライセンスです。違いは、AGPLでライセンスされたソフトウェアをサービスとして使う場合にも、利用者にソースコードを提供する必要があることです。 - GNU Lesser General Public License(LGPL)
主にライブラリ用に作成されたライセンスです。LGPLでは、利用者自身の利用のための改変ならびにそのような改変をデバッグするためのリバースエンジニアリングを認めるという条件をつければ、LGPLでライセンスされたライブラリを使うソフトウェアを独自のライセンスを設定できるようにしています。こうすることで、LGPLでライセンスされたライブラリを商用プログラムでも利用できるようになります。 - Mozilla Public License(MPL)
Mozilla Foundationによって作成されたライセンスです。MPLでライセンスされたソフトウェアは、必ずソースコードをつけて再頒布しなければなりませんが、ソースコードの提供がない、他のライセンスが適用されるソフトウェアと組み合わせることが可能です。 - BSD系のライセンス
カリフォルニア大学が定めたライセンスです。カリフォルニア大学のバークレー校内の研究グループ Computer Systems Research Group が開発したソフトウェアなどで使われています。
「無保証」であることを明記することと、著作権およびライセンス条文自身を表示すれば再頒布することができるライセンスです。GPLのようにソースコードもいっしょに再頒布する必要はありません。
BSD系のライセンスとしては、カリフォルニア大学が定めたライセンスのほかに、マサチューセッツ工科大学が定めたライセンス(MIT ライセンス)、Apache Software Foundation (ASF) によって作成された Apache License があります。 - パブリックドメイン
パブリックドメインは、著作権が発生していないか、失効した状態のことを言います。パブリックドメインというライセンスがあるわけではありません。
オープンソースのコミュニティとエコシステム
Linuxをはじめとするオープンソースソフトウェアは、オープンソースコミュニティやオープンソースソフトウェアを利用したビジネスを展開する企業・組織のエコシステム(競争関係)を通じて継続的な開発が行われています。ここではオープンソースコミュニティとオープンソースエコシステムについて学びます。
オープンソースコミュニティとは
オープンソースコミュニティとは、オープンソースソフトウェアの開発・改善、情報交換などを目的に、さまざまな立場の有志によって構成された仮想の組織のことです。また、コミュニティには、特定の、あるいは複数のソフトウェアを開発するための、開発者が主に参加している開発コミュニティや、ユーザー同志の情報交換を中心とするユーザーコミュニティがあります。
コミュニティの運営
コミュニティには、あるオープンソースソフトウェアの開発者を中心としたボランティアベースの場合もありますが、企業やコミュニティを維持管理する団体が開発主体のものもあります。特に、大規模なオープンソースソフトウェアである場合、オープンソースソフトウェアを利用してサポートやサービスを提供するような場合、そして複数のオープンソースソフトウェアを抱えているようなコミュニティでは、企業が主体になって開発している場合や、非営利の法人が運用している場合があります。
コミュニティの開発基盤
コミュニティでは、メンバー間でソースコードや各種の情報を共有して共同開発するための開発サイトを使う事が普通です。開発サイトを使うことで、問合せやバグの管理、ソフトウェアやドキュメントの公開、ユーザー間での情報交換などが、簡単にでき、開発者やユーザーの負担を最小限にすることができます。
代表的な開発基盤としては、
GitHub、Launchpad、GitLab
などがあります。
コミュニティへの参加
オープンソースコミュニティには、基本的に誰でも自由に参加して活動することが可能です。コミュニティへの参加方法は各コミュニティによって異なりますが、ほとんどの場合はコミュニティのWebサイトから新規メンバーとして登録するだけで、すぐに活動を始められます。コミュニティにおける情報交換は、メーリングリストのほか、掲示板やメッセンジャーシステム(チャットなど)で行います。
但し、コミュニティへの貢献度によって利用可能な機能や権限について制限をしている場合もあります。
オープンソースコミュニティの例
オープンソースコミュニティは、非常に小規模なものから、全世界規模、開発者が数千/数万人というレベルのものまであります。ここでは、大規模なコミュニティの例を紹介します。
- Linux Foundation
Linuxだけではなく、各種オープンソースコミュニティに対して、種々の施策を行って活動の支援をしている組織です。各種オープンソースプロジェクトの運営、コミュニティへの資金援助、インフラの提供、イベントの開催、トレーニングの提供などを行っています。
また、世界的なソフトウェア企業や通信会社、さらには自動車会社のようなユーザー企業がメンバーとしてLinux Foundationを支えています。 - Apache Software Foundation
Webアプリケーションサーバー「Apache HTTP Server」をはじめとして、数多くのオープンソースプロジェクトを支援する非営利団体です。代表的なプロジェクトとしては、Java実行環境「Apache Tomcat」、ロガー「Log4j」、パフォーマンス測定ツール「JMeter」など、数多くのオープンソースソフトウェアをホスティングしています。 - GNUプロジェクト
UNIXライクなOSである「GNU」を開発するためにスタートしたプロジェクトです。OS本体のほか、ユーティリティやアプリケーションなども開発しています。Free Software Foundation (FSF)が支援しています。 - OpenStack Foundation
OpenStackは、クラウドインフラストラクチャを構成するためのソフトウェア群です。その開発を行うコミュニティは、OpenStack Foundationによって管理されています。OpenStackは、さまざまな機能を持つコンポーネントを持っています。それぞれに開発スキームが構成されていて、多くの人が開発作業に携わっています。
オープンソースエコシステムとは
エコシステムとは、複数の企業同士が、商品開発などで協力活動を行いつつ、開発者や流通、消費者、さらには業界や社会全体に渡って共存共栄を図っていく仕組みです。オープンソースソフトウェアの世界では、開発者とユーザーが協力し合ってコミュニティを形成し、開発していくという、開発の仕組みそのものがエコシステムになっています。さらに、オープンソースを使いやすいようにして流通させるディストリビューターや、オープンソースソフトウェアを活用して独自性のあるサポートやソリューションを提供するサービス企業も含めて、現在のビジネスの大きな流れになっています。
オープンソースエコシステムに参加した企業やユーザーが、実際にオープンソースを開発・使用、使用レポートの公表、バグ報告、さらには改良提案を行うといった活動によりエコシステムが好循環に発展し、それによりエコシステムに参加した各企業・ユーザーがメリットを享受できています。
執筆者紹介
・太田 俊哉
・竹本 季史
このドキュメントは、LinuCレベル1の学習用の教材から抜粋して作成されたものです。教材全体は以下のPDFファイルをご覧ください。
LinuCレベル1学習教材