主題1.11:オープンソースの文化
1.11.1 オープンソースの概念とライセンス(重要度2)
OSS(オープンソースソフトウェア)
著作権の表示
OSSは著作物であり、派生物(著作物を改変したもの)にも適切な形で著作権の表示を保持するように定められている
無保証であること
著作権はソフトウェアの動作について保証しない
開発、メンテナンスの継続
企業が開発する商用ソフトウェアはサービスやサポートが終了になると開発は続けられないが、OSSは利用者や開発者のコミュニティがメンテナンスをすることで、修正や新機能の開発を継続することができる
FOSS/FLOSS
・自由にソースコードの入手、改変が行えるソフトウェアを総称したもの
・オープンソースソフトウェア、フリーソフトウェアはFOSS、FLOSSに該当する
オープンソースの定義
・再配布が自由であること
・ソースコードを入手できること
・ソフトウェアの改変や派生物の作成ができる
プロプライエタリソフトウェア
プログラムやソースコードに対して、秘密保持契約の締結や利用料の支払いが必要など、利用に関する制限がかけられているもの
パブリックドメイン
著作物に対して著作権や特許権などの知的財産権が発生していない状態、または失効した状態のこと
コピーレフト(copyleft)
・著作物およびその派生物について、コピーや再配布、改変を制限しない考え方
・数あるオープンソフトライセンスはコピーレフトの適用によって以下のように分けられる
コピーレフト型
コピー・再配布:可能
改変:可能
改変部分を含めたソースコードの公開:必要
他のコードと組み合わせた場合、他のソースコードの公開:必要
ライセンス例:GPL、AGPL
準コピーレフト型
コピー・再配布:可能
改変:可能
改変部分を含めたソースコードの公開:必要
他のコードと組み合わせた場合、他のソースコードの公開:不要
ライセンス例:LGPL、MPL
非コピーレフト型
コピー・再配布:可能
改変:可能
改変部分を含めたソースコードの公開:不要
他のコードと組み合わせた場合、他のソースコードの公開:不要
ライセンス例:BSD License、MIT License、Apache License
主なOSSライセンス
GPL(GNU General Public License)
・フリーソフトウェア財団(FSF)によって公開・管理されている
・ソフトウェアの改変や再配布を許諾している
・コピーレフト型
・バージョン2とバージョン3で大きく異なる点:特許
AGPL(GNU Affero GPL)
・GPLの権利に加え、プログラムがインターネット経由のサービスで使用される場合も、利用者はソースコードの開示を要求できる
・コピーレフト型
LGPL(GNU Lesser GPL)
・主にライブラリ用に作成された
・LGPLのソフトウェアの機能を利用するソフトウェアは、LGPLを適用しなくてよい
・準コピーレフト型
MPL(Mozilla Public License)
・Mozilla Foundationによって作成された
・他のライセンスのソフトウェアと組み合わせて再配布が可能
・準コピーレフト型
BSD License
・カリフォルニア大学のバークレー校で作成された
・無保証であることを明記、また著作権とライセンス条文を表示すれば再配布できる
・非コピーレフト型
MIT License
・マサチューセッツ工科大学で作成された
・BSD Licenseをベースにしており、比較的制限が緩い
・非コピーレフト型
Apache License
・Apacheソフトウェア財団(ASF)によって作成された
・v2.0はGPLv3と互換である(両者を同梱して配布可)
・非コピーレフト型
1.11.2 オープンソースのコミュニティとエコシステム(重要度1)
オープンソースコミュニティ
オープンソースコミュニティの説明
・OSSの共同開発や情報交換を行う人々の集まり
・誰でも参加できる
コミュニティを構成する主な関係者
・リーダー:ソフトウェアの機能やリリースについて最終決定を行う
・メンテナー:リーダーからソースコードのメンテナンスを委任された担当者。コミッターの代表者的な立場
・コミッター:ソフトウェア開発用のリポジトリ(ソースコードの格納先)にコミットをする権限を有する担当者
・コントリビューター:その他、コミュニティやOSSに対して何らかの貢献をしている者
コミュニティでの情報交換の手段
・メーリングリスト
・掲示板・フォーラム
・チャット
・各地でのイベント
GNUプロジェクト
フリー(自由)なオペレーティングシステムを開発する目的で、リチャード・ストールマンによって立ち上げられたオープンソースコミュニティ
オープンソースエコシステム
オープンソースエコシステムの説明
開発者/ユーザーコミュニティや企業が連携しながらOSSを開発・発展させていく循環のこと