🤔

OSSライセンスの要点について

2022/12/16に公開

はじめに

「OSS?好き勝手に使ってええんやろ?」
筆者は OSS を自分で選定して利用するまではこのような認識でした。
残念ながら、OSS の利用にもルールはあるのです。

OSS を使うにあたって

頒布と再頒布

頒布とは

  • 自身で作成したソフトウェアを第三者に公開、提供すること
  • 以下のケースは頒布に該当します
    • 会社、個人に関わらず発注元にソフトウェアを納品する
    • 誰かの PC 上で動作するアプリを公開した(フロントサイド JavaScript など)
      ※プログラムやバイナリが、他者の PC 上で動作するため
  • 以下のケースは頒布に該当しません
    • 個人利用のために作っただけで、誰にも公開しない
    • 社内システム開発のために公開範囲を社内に限定した
      ※開発者が所属するコミュニティ内の公開・利用
    • Webサーバーを作成しRestAPIを公開した
      • 呼び出し元に実行ファイル(スクリプトやバイナリなど)を配布していないこと
      • ※例外的にAGPLライセンスのOSSを組み込んでいる(=自分のソフトウェアがAGPLの)場合は頒布と判断される

再頒布とは

  • 既存 OSS の改変の有無にかかわらず頒布すること

使用と利用

使用とは

  • OSS を読む、ビルドする、実行する、など OSS 単体で動作させること
  • OSS を使用する場合はライセンスの制約は受けません

利用とは

  • OSS の改変、複製、再頒布すること

OSS のライセンスの種類

大きく分けて、3 種類あります

コピーレフト型

  • このライセンスの OSS を利用する場合、自分のソフトウェアも同じライセンスが適用されます
  • このライセンスに依存して頒布する場合
    • 利用しているコード(プロダクト)の公開が必要
    • OSS を改変した場合、改変箇所の公開が必要
  • 該当するライセンスの例
    • GPL
    • AGPL
  • GPL互換あり/なしの観点
    • GPL系ライセンスは、利用ソフトウェアの公開に際して、自身のライセンスよりも強い制限の禁止が定義されています
    • そのため、GPLライセンス以上の制限を課しているOSSは両立できないことになります
    • GPL互換のリストはこちらを参照すると分かりやすいです

準コピーレフト型

  • このライセンスの OSS を利用し、かつ改変した場合、自分のソフトウェアも同じライセンスが適用されます
  • このライセンスに依存して頒布する場合
    • 利用しているコード(プロダクト)の公開は不要
    • OSS を改変した場合、改変箇所の公開が必要
  • 該当するライセンスの例
    • LGPL
    • MPL

非コピーレフト型

  • 自分のソフトウェアに対し、自由なライセンスを適用できる
  • このライセンスに依存して頒布する場合
    • 利用しているコード(プロダクト)の公開は不要
    • OSS を改変した場合、改変箇所の公開は不要
  • 該当するライセンスの例
    • Apache
    • MIT
    • BSD

ライセンス種類まとめ

  • OSSを頒布する場合以下となります
種類 利用した場合のコード公開 改造した場合のコード公開
コピーレフト 必要 必要
準コピーレフト 不要 必要
非コピーレフト 不要 不要

殆どの OSS に共通していること

  • 利用する場合はライセンスの明記をすること (使用の場合は除外)
  • 改変、複製、再頒布、商用利用は OK
  • OSS の使用/利用によって発生したトラブルについて、OSS 著作者は一切責任を負わない

コピーレフト型ライセンス

GPL (GNU General Public License)

GPL-2.0

  • 実施義務
    • ライセンスを明記すること
    • 動的または静的リンクでOSSを利用している場合、ソースコードを公開すること
      • ライセンスはGPL-2.0で公開すること
      • 最低3年間の公開を行うこと
      • バイナリの頒布であってもソースコードの公開が必要
    • 改変を行った場合、改変したソースコードを公開すること
    • ビルドが必要な場合は、ビルド方法を公開すること
  • 禁止事項
    • GPL-2.0で決められていること以上の制約追加は禁止
      • 例えば、GPL-3.0、AGPL-3.0、BSD-4-ClauseはGPL-2.0以上の制限があるため1つのプロダクトとして同時に利用することはできない
    • OSSに責任を求めることは禁止(自己責任で利用すること)
  • 可能なこと
    • 商用利用、改変、頒布
  • GPL互換
    • GPL-3.0または、その派生ライセンスとの両立ができない

GPL-3.0

※ 基本的にGPL-2.0と同じです。差分には★マークを記載

  • 実施義務
  • ライセンスを明記すること (GPL-2.0)
  • 動的または静的リンクでOSSを利用している場合、ソースコードを公開すること (GPL-2.0)
    • ライセンスはGPL-2.0で公開すること (GPL-2.0)
    • 最低3年間の公開を行うこと (GPL-2.0)
    • バイナリの頒布であってもソースコードの公開が必要 (GPL-2.0)
  • 改変を行った場合、改変したソースコードを公開すること (GPL-2.0)
  • ビルドが必要な場合は、ビルド方法を公開すること (GPL-2.0)
  • OSSを組み込んだ製品(機器)はOSSのインストール方法を公開すること ★
    • ただし、以下のいずれかに一致する場合はインストール方法の公開は不要 ★
      • 家庭用機器に組み込まれる可能性がない場合 ★
      • 常識的に再インストールが困難な場合(ROMなど) ★
  • 禁止事項
    • GPL-3.0で決められていること以上の制約追加は禁止
    • OSSに責任を求めることは禁止(自己責任で利用すること)
    • 差別的特許の禁止(特定の誰かのみ制限が変わること) ★
  • 可能なこと
    • 商用利用、改変、頒布
  • GPL互換
    • GPL-2.0または、その派生ライセンス(LGPL-2.1含む)との両立ができない

AGPL (GNU Affero General Public License)

AGPL-3.0

※ 基本的にGPL-3.0と同じです。差分には★マークを記載

  • 実施義務
    • ライセンスを明記すること (GPL-2.0)
    • 動的または静的リンクでOSSを利用している場合、ソースコードを公開すること (GPL-2.0)
      • ライセンスはGPL-2.0で公開すること (GPL-2.0)
      • 最低3年間の公開を行うこと (GPL-2.0)
      • バイナリの頒布であってもソースコードの公開が必要 (GPL-2.0)
    • 改変を行った場合、改変したソースコードを公開すること (GPL-2.0)
    • ビルドが必要な場合は、ビルド方法を公開すること (GPL-2.0)
    • OSSを組み込んだ製品(機器)はOSSのインストール方法を公開すること (GPL-3.0)
      • ただし、以下のいずれかに一致する場合はインストール方法の公開は不要 (GPL-3.0)
        • 家庭用機器に組み込まれる可能性がない場合 (GPL-3.0)
        • 常識的に再インストールが困難な場合(ROMなど) (GPL-3.0)
    • OSSを組み込んでいない場合でも通信などでAGPLのソフトウェアを呼び出している場合も利用とみなす ★
  • 禁止事項
    • AGPL-3.0で決められていること以上の制約追加は禁止
    • OSSに責任を求めることは禁止(自己責任で利用すること)
    • 差別的特許の禁止(特定の誰かのみ制限が変わること) (GPL-3.0)
  • 可能なこと
    • 商用利用、改変、頒布
  • GPL互換
    • GPL-2.0または、その派生ライセンス(LGPL-2.1含む)との両立ができない

準コピーレフト型ライセンス

LGPL (GNU Lesser General Public License)

LGPL-2.1

※ GPL-2.0の派生です。差分には★マークを記載

  • 実施義務
  • ライセンスを明記すること (GPL-2.0)
  • 動的または静的リンクでOSSを利用している場合、ソースコードを公開すること (GPL-2.0)
  • 静的リンクでOSSを利用している場合、ソースコードを公開すること ★
    • ライセンスはLGPL-2.1で公開すること (GPL-2.0)
    • 最低3年間の公開を行うこと (GPL-2.0)
    • バイナリの頒布であってもソースコードの公開が必要 (GPL-2.0)
  • 改変を行った場合、改変したソースコードを公開すること (GPL-2.0)
  • ビルドが必要な場合は、ビルド方法を公開すること (GPL-2.0)
  • リバースエンジニアリングを許可すること ★
  • 禁止事項
    • LGPL-2.1で決められていること以上の制約追加は禁止
    • OSSに責任を求めることは禁止(自己責任で利用すること)
  • 可能なこと
    • 商用利用、改変、頒布
  • GPL互換
    • GPL-3.0または、その派生ライセンスとの両立ができない

LGPL-3.0

※ GPL-3.0の派生です。LGPL-2.1からの差分には★マークを記載

  • 実施義務
    • ライセンスを明記すること (GPL-2.0)
    • 静的リンクでOSSを利用している場合、ソースコードを公開すること (LGPL-2.1)
      • ライセンスはLGPL-3.0で公開すること (GPL-2.0)
      • 最低3年間の公開を行うこと (GPL-2.0)
      • バイナリの頒布であってもソースコードの公開が必要 (GPL-2.0)
    • 改変を行った場合、改変したソースコードを公開すること (GPL-2.0)
    • ビルドが必要な場合は、ビルド方法を公開すること (GPL-2.0)
    • リバースエンジニアリングを許可すること (LGPL-2.1)
    • OSSを組み込んだ製品(機器)はOSSのインストール方法を公開すること (GPL-3.0)
      • ただし、以下のいずれかに一致する場合はインストール方法の公開は不要 (GPL-3.0)
        • 家庭用機器に組み込まれる可能性がない場合 (GPL-3.0)
        • 常識的に再インストールが困難な場合(ROMなど) (GPL-3.0)
  • 禁止事項
    • LGPL-3.0で決められていること以上の制約追加は禁止
    • OSSに責任を求めることは禁止(自己責任で利用すること)
    • 差別的特許の禁止(特定の誰かのみ制限が変わること) (GPL-3.0)
  • 可能なこと
    • 商用利用、改変、頒布
  • GPL互換
    • GPL-2.0または、その派生ライセンス(LGPL-2.1含む)との両立ができない

MPL (Mozilla Public License)

MPL-1.1

あまり調査出来ていません

  • GPL互換
    • GPL系ライセンス(バージョン問わず)との両立ができない

MPL-2.0

  • 実施義務
    • ライセンスを明記すること
    • 改変を行った場合、改変したソースコードを公開すること (GPL-2.0)
  • 禁止事項
    • OSSの商標、ロゴを使用すること
    • OSSに責任を求めることは禁止(自己責任で利用すること)
  • 可能なこと
    • 改変を行っていない場合、任意のライセンス適用が可能
    • 商用利用、改変、頒布、サブライセンス追加
  • GPL互換
    • GPL系ライセンスとの両立が可能

EPL (Eclipse Public License)

EPL-2.0

  • 実施義務
    • ライセンスを明記すること
    • ソースコードを開示すること
  • 禁止事項
    • OSSの商標、ロゴを使用すること
    • OSSに責任を求めることは禁止(自己責任で利用すること)
  • 可能なこと
    • 商用利用、改変、頒布、サブライセンス追加
  • GPL互換
    • GPL系ライセンスとの両立が可能

CDDL (Common Development and Distribution License)

  • 実施義務
    • ライセンスを明記すること
    • ソースコードを開示すること
    • 改変を行った場合、改変したソースコードを公開すること
      • 自分が修正したことを明記すること
  • 禁止事項
    • OSSの商標、ロゴを使用すること
    • OSSに責任を求めることは禁止(自己責任で利用すること)
  • 可能なこと
    • 商用利用、改変、頒布、サブライセンス追加
  • GPL互換
    • GPL系ライセンス(バージョン問わず)との両立ができない

非コピーレフト型ライセンス

Apache License

Apache-2.0

  • 実施義務
    • ライセンスを明記すること
    • NOTICE(またはそれに準ずる)ファイルが存在する場合、頒布する成果物に含めること
      • NOTICEファイルとは、帰属告知情報が記載されたファイルのこと
      • 以下のいずれかで明記すること
        1. 派生成果物の一部として頒布するNOTICEテキストファイル
        2. ソース形式またはドキュメント(派生成果物と共にドキュメントを頒布する場合)
        3. 派生成果物によって生成される表示(こうした第三者告知を盛り込むことが標準的なやり方になっている場合)
  • 禁止事項
    • OSSに責任を求めることは禁止(自己責任で利用すること)
    • 商標、ロゴ、コントリビューターの名前の使用は禁止
  • 可能なこと
    • 商用利用、改変、頒布、サブライセンス追加
  • GPL互換
    • Apache-2.0はGPL系ライセンスとの両立が可能
    • Apache-1.1以前はGPL系ライセンス(バージョン問わず)との両立ができない

MIT

  • 実施義務
    • ライセンスを明記すること
  • 禁止事項
    • OSSに責任を求めることは禁止(自己責任で利用すること)
  • 可能なこと
    • 商用利用、改変、頒布、サブライセンス追加
  • GPL互換
    • GPL系ライセンスとの両立が可能

BSD

  • 一概に BSD と表記されていても以下の分類があるため注意が必要です
  • ※作成順としては、BSD-4-Clauseから3, 2, 1と徐々に条項が減っていますが、ここでは条項が少ない順に記載しています。

BSD-1-Clause

  • 実施義務
    • ソースコードを再頒布する場合、ライセンスを明記すること
  • 禁止事項
    • OSSに責任を求めることは禁止(自己責任で利用すること)
  • 可能なこと
    • 商用利用、改変、頒布、サブライセンス追加
  • GPL互換
    • GPL系ライセンスとの両立が可能

BSD-2-Clause

  • 実施義務
    • ソースコードを再頒布する場合、ライセンスを明記すること (BSD-1-Clause)
    • バイナリ形式で再頒布する場合、関連資料にライセンスを明記すること ★
  • 禁止事項
    • OSSに責任を求めることは禁止(自己責任で利用すること)
  • 可能なこと
    • 商用利用、改変、頒布、サブライセンス追加
  • GPL互換
    • GPL系ライセンスとの両立が可能

BSD-3-Clause

  • 実施義務
    • ソースコードを再頒布する場合、ライセンスを明記すること (BSD-1-Clause)
    • バイナリ形式で再頒布する場合、関連資料にライセンスを明記すること (BSD-2-Clause)
  • 禁止事項
    • OSSに責任を求めることは禁止(自己責任で利用すること)
    • 宣伝目的でOSSの組織名やコントリビューター名の利用は禁止 ★
      • 書面による許可を得ている場合は例外 ★
  • 可能なこと
    • 商用利用、改変、頒布、サブライセンス追加
  • GPL互換
    • GPL系ライセンスとの両立が可能

BSD-4-Clause

  • 実施義務
    • ソースコードを再頒布する場合、ライセンスを明記すること (BSD-1-Clause)
    • バイナリ形式で再頒布する場合、関連資料にライセンスを明記すること (BSD-2-Clause)
    • 派生物の宣伝物には以下の謝辞を表記すること ★
      This product includes software developed by the <organization>.
  • 禁止事項
    • OSSに責任を求めることは禁止(自己責任で利用すること)
    • 宣伝目的でOSSの組織名やコントリビューター名の利用は禁止 (BSD-3-Clause)
      • 書面による許可を得ている場合は例外 (BSD-3-Clause)
  • 可能なこと
    • 商用利用、改変、頒布、サブライセンス追加
  • GPL互換
    • GPL系ライセンス(バージョン問わず)との両立ができない

AFL (Academic Free License)

AFL-3.0

  • 実施義務
    • ライセンスを明記すること
    • ソースコードを公開すること
    • OSSのインストール方法を公開すること
  • 禁止事項
    • OSSに責任を求めることは禁止(自己責任で利用すること)
    • 商標、ロゴ、コントリビューターの名前の使用は禁止
      • ライセンサーによる書面での許可がある場合を除く
  • 可能なこと
    • 商用利用、改変、頒布、サブライセンス追加
  • GPL互換

ISC (ISC License)

  • これは BSD-2-Clause と同じとされています。
  • 実施義務
    • ソースコードを再頒布する場合、ライセンスを明記すること
    • バイナリ形式で再頒布する場合、関連資料にライセンスを明記すること
  • 禁止事項
    • OSSに責任を求めることは禁止(自己責任で利用すること)
  • 可能なこと
    • 商用利用、改変、頒布、サブライセンス追加
  • GPL互換
    • GPL系ライセンスとの両立が可能

PFS (Python Software Foundation)

  • 実施義務
    • ライセンスを明記すること
    • 改変を行った場合、変更の要約を成果物に含めること
  • 禁止事項
    • OSSに責任を求めることは禁止(自己責任で利用すること)
    • 商標、ロゴ、コントリビューターの名前の使用は禁止
  • 可能なこと
    • 商用利用、改変、頒布
  • GPL互換
    • ライセンスバージョンが以下のいずれかの場合、GPL系ライセンスとの両立が可能
      • 1.6a2以前
      • 2.0.1
      • 2.1.1以降
    • 上記以外の場合、GPL系ライセンス(バージョン問わず)との両立ができない

非コピーレフト型ライセンス(パブリックドメイン)

  • 基本的に、商用、改変がOK、ライセンス表記しなくてOKの非常にゆるいライセンス
  • 好き勝手にして良い、といっても著作権を破棄しているわけではない
  • 他のライセンスと同様、OSSに責任を求めることは禁止(自己責任で利用すること)
  • 以下のようなライセンスがある

CC0

  • https://creativecommons.org/publicdomain/zero/1.0/deed.ja に以下のような記載がある

    作品を利用したり、作品に言及する際に、あなたは著作者や確約者からの 推奨 があるかのような示唆はするべきではありません

  • 他のライセンスにも言えることですが、嘘はダメってことですね

The Unlicense

WTFPL (Do What The Fuck You Want To Public License)

MIT-0 (MIT No Attribution License)

0BSD

参考リンク

Discussion