Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,58 +1,61 @@
# SPDX Lite-Guideline (JP)

本文書は、組織間で授受されるオープン ソース ソフトウェア (Open Source Software, OSS)とその他のソフトウェア パッケージに関して、主にOSSライセンスを遵守するために必要となる「ライセンス情報(* )」を作成する手順を示す事を目的としています。本文書では、ライセンス情報の授受を容易に行うための情報共有フォーマットとして、SPDX Liteを取り上げ、その記載方法などをガイドします。なお応用分野としては、一般ユーザーに広範囲に配布(販売)される製品(組込み機器)を想定して記載しています。
本文書は、組織間で授受されるオープン ソース ソフトウェア (Open Source Software, OSS)とその他のソフトウェア パッケージに関して、主にOSSライセンスを遵守するために必要となる「ライセンス情報[^licenseinfo]」を作成する手順を示す事を目的としています。本文書では、ライセンス情報の授受を容易に行うための情報共有フォーマットとして、SPDX Liteを取り上げ、その記載方法などをガイドします。なお、SPDX Lite自体は汎用的に利用可能ですが、本文書における解説や事例としては、一般ユーザーに広範囲に配布(販売)される製品(組込み機器)を想定して記載しています。

(* )本ドキュメントではOSSの配布に伴い提供すべき各種情報、その他のソフトウェア パッケージに関わるライセンス条件などを示す情報を、総称して「ライセンス情報」と記載します。
[^licenseinfo]:本ドキュメントではOSSの配布に伴い提供すべき各種情報、その他のソフトウェア パッケージに関わるライセンス条件などを示す情報を、総称して「ライセンス情報」と記載します。

## 目次

1. ライセンス情報の必要性
1. 必要なライセンス情報の項目
1. ライセンス情報の作成手順
1. ライセンス情報のサンプル
1. [ライセンス情報の必要性](#1-ライセンス情報の必要性)
1. [必要なライセンス情報の項目](#2-必要なライセンス情報の項目)
1. [ライセンス情報の作成手順](#3-ライセンス情報の作成手順)
1. [ライセンス情報のサンプル](#4-ライセンス情報のサンプル)

## 1. ライセンス情報の必要性

OSSは、ソフトウェア開発には必要不可欠なものとなっています。OSSは誰でも自由に利用する事ができますが、利用するためには一定の条件に従う必要があります。その条件に従うために、利用しているOSSのライセンス情報が必要になります。

OSSが製品に組み込まれて販売されるまでには、OSSを入手して部品に組み込む会社、その部品を入手して製品に組み込む会社、その製品を購入してエンドユーザへ販売する会社といったように複数の企業が関係します。OSSのライセンスを遵守するためには、これらサプライチェーン上に位置する全ての企業が正確なライセンス情報を提供することが必要になります。サプライチェーン上で1社でもライセンス情報の提供を正確に提供することができないと、その企業より下流にある企業全てがOSSライセンスを遵守できなくなります。OSSのサプライチェーンに関係する担当者全員が理解して正確に作業することによって、適切にOSSの各ライセンスの条件を遵守することが可能になります。

ライセンス情報の必要性についての詳細は、「オープンソースソフトウェアライセンス遵守に関する一般公衆ガイド」を参照して下さい。
https://github.com/OpenChain-Project/curriculum/tree/master/supplier-leaflet
ライセンス情報の必要性についての詳細は、[「オープンソースソフトウェアライセンス遵守に関する一般公衆ガイド」](https://github.com/OpenChain-Project/Reference-Material/blob/master/OpenChain-Supplier-Education/en/Legacy/Supplier-Education-Leaflet-OpenChain-2.0-(Pre-ISO-IEC-5230)/ja/supplier-leaflet-ja.pdf)を参照して下さい。

組織間でOSSを授受する際に、同時にライセンス情報を添付するには、以下の二つの課題があります。

・ライセンス情報には、OSS名や、そのバージョン、入手先など多岐に渡る情報が含まれるため、担当者が全体を正確に理解しないと、不十分な情報しか提供されない可能性があります。

・受け取る側が要求するフォーマットや、そのフォーマットに含まれる情報は、組織によって異なることがあるため、提供側組織における業務が煩雑になる可能性があります。

上記課題を検討した上で、本文書は、必要十分で最低限のライセンス情報を定義することで、簡単で正確なライセンス情報の生成が誰にでも可能となることを目指しています。また、必要十分で最低限のライセンス情報をSPDX Liteとして定義し、SPDX仕様に提案しています。以下では、簡単にSPDXおよびSPDX Liteについて説明します。
上記課題を検討した上で、本文書は、必要十分で最低限のライセンス情報を定義することで、簡単で正確なライセンス情報の生成が誰にでも可能となることを目指しています。また、必要十分で最低限のライセンス情報をSPDX Liteとして定義し、SPDX仕様に提案しています[^spdxlite]。以下では、簡単にSPDXおよびSPDX Liteについて説明します。

[^spdxlite]: この表現は現在では正確ではありませんが、歴史的経緯を尊重してこのままにしておきます。SPDX LiteはSPDX 2.2でSPDXの一部(Appendix VIII)として取り込まれました。(SPDX 2.3ではAnnex G)

#### SPDX

ライセンス情報を扱うためのプロジェクトとして、Linux Foundation傘下にSoftware Package Data Exchange Workgroup (SPDX)があります。 https://spdx.org/
ライセンス情報を扱うためのプロジェクトとして、Linux Foundation傘下に[Software Package Data Exchange (SPDX) Workgroup](https://spdx.dev/)[^spdx]があります。
SPDX Workgroupは、SPDXフォーマットを定義しており、このフォーマットは、ソフトウェア パッケージに関連するソフトウェア名やバージョン、ライセンス、著作権表示などの情報を共有するための標準的なフォーマットです。以下、単にSPDXと記載した場合には、SPDXフォーマットのことを示します。また、OSSのコードをスキャンしてSPDXフォーマットでライセンス情報を出力するツール([FOSSology](https://www.fossology.org/)等)も公開されています。

SPDX Workgroupは、SPDXフォーマットを定義しており、このフォーマットは、ソフトウェア パッケージに関連するソフトウェア名やバージョン、ライセンス、著作権表示などの情報を共有するための標準的なフォーマットです。以下、単にSPDXと記載した場合には、SPDXフォーマットのことを示します。また、OSSのコードをスキャンしてSPDXフォーマットでライセンス情報を出力するツール(FOSSology等)も公開されています
[^spdx]: SPDXは現在"System Package Data Exchange"の略ですが、ここも歴史的経緯を尊重してこのままにしておきます。SPDX Lite提案当時は"Software Package Data Exchange"の略でした

#### SPDX Lite

SPDXはライセンス情報を共有するために非常に優れたフォーマットです。 しかし、ツールのスキャンにより得られるSPDX準拠のライセンス情報は、えてして膨大なものとなり、手作業によりライセンス情報を作成する組織において、コンプライアンス維持の上で課題となっていることも事実です。 そこで、SPDX Liteが、サプライチェーンにおけるライセンス条件の遵守のために、最低限の必須情報を記述するためのフォーマットとして、定義されました。 実ビジネスで運用されていて実績のあるデータを集め、それらを、定義するために十分な内容としています。 したがって、ツールによるライセンス情報収集と並行して、手作業・目視によるライセンス情報授受が可能な項目をリストアップしています。

以下はSPDX Liteのサンプルです。 spread sheetなどに必要なライセンス情報を入力するだけで簡単に作成する事が出来ます
以下はSPDX Liteのサンプルです。 spread sheetなどに必要なライセンス情報を入力するだけで簡単に作成できます

![spdx-lite](https://user-images.githubusercontent.com/21073492/59993340-ee596500-968a-11e9-8783-5cf9a95ee351.png)

#### SPDXとSPDX Liteの位置づけ

SPDX Liteは、必要な項目(タグ)について、手書き入力や人手による視認を行う際の作業を考慮し、必要な情報に厳選しています。 SPDXの定義で必須とされるタグについてはSPDX Liteでも含まれており、下記の特徴を持っています。

・記載内容が厳選されている一方で必須なライセンス情報は含むため、議論のベース、初心者の誘導という点でSPDX Liteはベスト

・一つのソフトウェア パッケージに、一つのライセンス情報を記載する、平易な記載には、付加的な情報が含まれないSPDX Liteファイルを用いることで、人による可読性を維持できる

・SPDX LiteはSPDXのMandatoryな項目を包含しているため、SPDX関連の各種ツールを用いたSPDX Liteファイルの運用も容易にできる
* **記載内容の厳選と必須なライセンス情報は網羅**
* 必要な情報が厳選されている一方で、必須なライセンス情報は含んでいるためため、議論のベース、初心者の誘導という点でSPDX Liteはベスト
* **一つのソフトウェア パッケージに、一つのライセンス情報を記載するという平易な構成**
* 付加的な情報が含まれない平易な構成であるため、人による高い可読性を維持できる
* **SPDXのMandatory(必須)な項目をすべて包含**
* 本家SPDXとの互換性があるため、SPDX関連の各種ツールを用いたSPDX Liteファイルの運用・管理も容易にできる

当然ながら、SPDXフォーマットによるライセンス情報は、細やかな記載が可能であり、ソフトウェア パッケージ全体に含まれる全てのソースコードの情報を詳細に記載することもできるため、目的に応じて、SPDXでもSPDX Liteでも、ビジネス当事者の議論で決めればよい、と言えます
当然ながら、SPDXフォーマットによるライセンス情報は、細やかな記載が可能であり、ソフトウェア パッケージ全体に含まれるすべてのソースコードの情報を詳細に記載できます。そのため、サプライチェーン上でSPDXかSPDX Liteのどちらのフォーマットで授受するかはもちろん、「ベースとしてSPDX Liteを活用しつつ、必要に応じて詳細情報を追加・拡張して運用する」 といった柔軟な対応も含め、目的に応じてビジネス当事者間の議論で決定すればよいと、言えます

## 2. 必要なライセンス情報の項目

Expand Down