OpenChain Japan WG, License Info. Exchange SWG: Proposing License Info. Management Scheme for next revision of SPDX.



# はじめに

ルネサスエレクトロニクス(株)の伊藤と申します。
製品開発サプライチェーンでのライセンス情報授受の仕組みに関わる、「組織間のライセンス情報授受」サブグループの活動を紹介いたします。

# なんのための活動？
**組織・企業間でライセンス情報を正しく伝えるために**

製品開発やサービスを行うために、ソフトウェアを開発する場合、ソフトウェアを部品(パッケージ・モジュール)単位で開発を分担することが一般的です。

個別のソフトウェア開発元・コミュニティ → 複数のソフトウェアを取りまとめてパッケージする企業・組織 → 仕様を決め、全体をまとめ、一まとまりの製品として開発する企業 → 製品要件などを決め、実際に顧客へと販売する企業、と企業・組織間のサプライチェーンに沿って、製品を構成するハードウェアに付随するソフトウェアを基盤に開発すること、市販されているソフトウェアをサービスの一部に組み入れること、目的に合わせたソフトウェアをその分野に強い企業・組織に個別に開発してもらう、などと、ソフトウェアは渡っていきます。

それら企業・組織間で授受されるソフトウェアには、必ずライセンスの条件など、付随する情報が伴います。

特にオープン ソース ソフトウェア(OSS)が含まれる場合、組織間の明示的な委託・受託契約で定義されるライセンス条件に加えて、OSSの配布に伴い提供すべき各種情報、その他のソフトウェア　パッケージに関わるライセンス条件などを示す情報を、ソフトウェアと一緒に引き渡し、遵守する必要があります。

OSSのライセンスを遵守するためには、これらサプライチェーン上に位置する全ての企業が正確なライセンス情報を提供することが必要になります。サプライチェーン上で1社でもライセンス情報の提供を正確に提供することができないと、その企業より下流にある企業全てがOSSライセンスを遵守できなくなります。OSSのサプライチェーンに関係する担当者全員が理解して正確に作業することによって、適切にOSSの各ライセンスの条件を遵守することが可能になります。

![licinf20191206_fig1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538718/ff6332a3-38fb-e2e8-59ff-8af4e4807fbd.jpeg)
![licinf20201219_fig2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538718/9f5b85b7-4f39-830e-8620-3799a261b449.jpeg)

このサブグループでは、「サプライチェーン上に位置する全ての企業が正確なライセンス情報を提供する」ための仕組み・ガイドを作成し、全ての企業・組織、そしてコミュニティが容易にOSSライセンスの遵守できることを目的に活動しています。

# 活動方針
**業界標準のフォーマットを用いたライセンス情報の伝達と、より簡便な方法の提案**

このサブグループは、ライセンス情報をあつかう上で、業界でも知られている標準的な手段の活用と、さらに、その手段への改善提案を行うことを、基本方針として活動しています。

ライセンス情報を扱うためのプロジェクトとして、Linux Foundation傘下に[Software Package Data Exchange Workgroup (SPDX)](https://spdx.org/)があります。

SPDX Workgroupは、SPDXフォーマットを定義しており(本稿記載時点での最新版は、[SPDX Specification 2.2.0版](https://spdx.github.io/spdx-spec/))、このフォーマットは、ソフトウェア パッケージに関連するソフトウェア名やバージョン、ライセンス、著作権表示などの情報を共有するための標準的なフォーマットです。

このサブグループでは、SPDXフォーマットをライセンス情報授受に活用してもらうと同時に、さらに、より簡便な方法がないか議論しています。さらに、SPDXフォーマットを実際の商用開発に用いた結果から、今後、必要となる機能についてSPDXフォーマットの次版に向けた提言を行うこととしています。

### 漏れなくライセンス情報を授受してもらうには

サプライチェーンに含まれる全ての組織・企業が漏れなくライセンス情報を取り扱う必要がある以上、その組織・企業の規模やOSSに対する習熟度を問わずに、ライセンス情報の記載・授受が出来なければなりません。

場合によっては、既存のオープンソースで流通するツール群を使ってもらうことも困難であることも考慮する必要があります。

このサブグループでは、__手書き、あるいはSpread Sheetによる入力__でも、漏れのないライセンス情報を記載するためのフォーマットを検討することにしました。

### 「手軽に使える」ことと「正確であること」「様々な情報と連携できること」を両立するために

OSSに習熟していない組織・企業が、例え手書きでライセンス情報を記載したとしても、その内容は、正確なものでなければ、サプライチェーン下流に大きなインパクトを与えてしまいます。

このサブグループでは、作成したライセンス情報が、ライセンス情報を受けた側が__既存のライセンス情報管理ツール__で内容を確認・検証することが出来ることを条件にしました。
その副次的効果として、作成したライセンス情報を、既存のライセンス情報管理ツールで作成したデータと結合したり、比較できるようになることから、サプライチェーン下流で機械的な処理が必須な規模に膨れ上がったソフトウェア全体のライセンス情報を、「手書きのライセンス情報」も取り込んだうえで機械処理することができます。

なお、ライセンス情報管理ツールの動向については、[Tooling SWG](https://qiita.com/TakashiNinjouji/items/11974914399fadc1011a)の活動成果を参考にさせて頂いています。

### 将来にわたって持続的に使ってもらうために

手書き、あるいはSpread Sheetによる入力でも、漏れのないライセンス情報を記載するためのフォーマットが、将来にわたって、持続的に使ってもらえるようにするために、このサブグループからSPDXコミュニティに働きかけました。現在、そのフォーマット定義は、SPDX Workgroupが定義する規格の一部（[SPDX Specification Appendix VIII SPDX Lite](https://spdx.github.io/spdx-spec/appendix-VIII-SPDX-Lite/)）として取り込まれています。

### 実際の商用開発における活用例

このサブグループが定義したSPDX Liteは、実際の商用開発でも実採用例が出ており、__2020年から、日本国内の車載情報機器開発に関わるサプライチェーンを構成する企業間で、ライセンス情報を授受するために活用され始めています__。

# 現在の活動

**SPDXフォーマットの実商用利用を拡大するための提言**

このサブグループでは、SPDXをサプライチェーンで手軽に使えるに使う方法について、SPDXコミュニティに取り込まれたことから、引き続いて、サプライチェーンを構成する企業間で、ソフトウェアと、その開発に関わる契約条件を結びつける仕組みを、次版のSPDXフォーマットに提言することにしています。

### 高度な自動化に向けた取り組み

実商用開発におけるサプライチェーン内で（まずは組み込み機器向け開発事例をベースに議論しています）、ソフトウェアと、その開発に関わる契約条件を、SPDXフォーマットのような機械的な処理が容易なファイルで結びつけることが有効な事例として、ライセンス情報の通知の他、ソフトウェアの利用形態、納品されるソフトウェアが適用される商品における位置づけ、といった情報を、SPDXフォーマットファイルで引き渡し、ソフトウェアを受け取った側が、定期的・出荷前審査などのイベントの折に、条件を自動的にリストアップし、チェックの補助とする、といった使い方が考えられます。

これらに向け、近年**SBOM**(Software Bill of Materials)として、いくつかの提案が行われています。SPDXコミュニティでもSBOMを意識した議論が行われています。

現時点では、SPDXフォーマットを議論するコミュニティ内のいくつかのグループと、定期的に議論を行っており、国内における実際の活用策などからSPDXフォーマットをSBOMのベースとして利用可能にする機能の一部を提案しており、また関連する他のコミュニティメンバーからの提言内容の議論、こちらの提言の背景説明などを実施しています。

# 活動の成果物


このサブグループでは、これまで約二年に渡る活動の結果、以下の成果物を作り上げています。
これからも更に議論を深めて、より広範な「サプライチェーン上に位置する全ての企業が正確なライセンス情報を提供する」ための仕組み・ガイドを作成していきます。

### 「必要最小限」に簡素化されたライセンス情報授受のための記述フォーマット「SPDX Lite」

このサブグループでは、手書き、あるいはSpread Sheetによる入力でも、漏れのないライセンス情報を記載するためのフォーマット「SPDX Lite」を定義し、SPDX規格の一部としてSPDX Workgroupに提言し、取り込まれました。

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

### 次版SPDXフォーマット定義へのUsageProfileの提案

**ソフトウェアと、そのソフトウェアに関わる契約条件を結びつけるための、機能の提言**

SPDXフォーマットは、サプライチェーンの上流に位置する企業から下流に位置する企業に向かって、納品・提供されるソフトウェアに付随する、ライセンスに関わる事項を記載するためのフォーマットです（OSSにおいては、ソフトウェア本体がライセンス記述の原本になりますが、ライセンス情報を一覧するためのツールとして使われています）。

現行のSPDXフォーマット(2.2.0版)では、ライセンスを記述することに機能が絞られています。ですが、実商用開発でソフトウェアを授受する場合、OSSなどライセンス情報ももちろんですが、企業間の契約で定められた条件など多彩な情報を一度に扱えるほうが、遥かに便利です。
そしてそれが、広く使われ各種ツールが揃っているSPDXフォーマットであれば、サプライチェーン間で授受されるライセンス情報と同時に、多彩な情報を付記することで、一括してそれらの情報を基にソフトウェアを管理することが可能になります。

このサブグループでは、SPDXコミュニティに対して、以下のような項目からなるUsageProfileの提案を行っており、現在フィードバックなどを受けつつ議論中です。

+ ソフトウェアに関わる、契約条件（例えば、検証目的にのみ利用し、最終製品には用いない部品が含まれる、など）を記述する**UsageProfile**本体
+ 上記を導いた、契約条件が収められたファイル（契約そのもの）へのRefer
+ SPDXフォーマットやソフトウェアの更新予定など、SPDXフォーマットで記載した情報の有効期限を定めた**ValidUntil**記述

現在、このサブグループからは、契約条件に絞った提言を行っていますが、SPDXコミュニティの中では、次版SPDXに向け、セキュリティ情報の記述を行うための機能の追加、なども議論されており、連携しつつ議論を進めています。

# 参加・協力のお願い
**メーリングリストへの参加から、関連コミュニティとの連携への助力まで**

### 参加するには

まずは、メーリングリストへの参加をして頂くのが良いかと思います。
ライセンス情報 SWG ML: japan-sg-licensing+subscribe@lists.openchainproject.org

定例会合への参加も大歓迎ですし、会合への参加が難しくても、Slackやgithub上での議論や文書・仕様作成に参加頂ければ、とても助かります。

### さまざまなコミュニティへの働き掛け協力のお願い

このサブグループは、SPDXなどの、ライセンス情報に関わる、各コミュニティと協力をしながら議論を進めていく方針を持っています。
このサブグループの成果物に直接参加頂く以外にも、関連するコミュニティとの議論に協力して頂ける・仲立ちを頂ける皆さまがいらっしゃることを、熱望しております。

# 明日のテーマは

明日は、富士通(株)の大内さんが OpenChain: spec v2.1 の紹介 第6回を行って下さいます。 内容は、Commentary of spec v2.1 vol.6, §3.5 です。


# Introduction

In this article, I'm intruducing Sub Working Group "Lincense Information Exchange in the Supply Chain" on Open Chain Japan Working Group which is discussing about how to and what is needed on the license information exchange while on product development through the industrial supply chain.

I'm Yoshiyuki Ito of Renesas Electronics Corporation.

# What is the object of the "License Information Exchange" Sub Working Group?
**To handle proper OSS license information between companies / organizations**

When developing software for product development and services, it's common to develop them with each software component as package or module by each developers.

 
To develop software that accompanies the hardware that makes up the product, to integrate commercially available software as part of the service, or tailor-made software built by a company strong in the field. The software packages will be passed along with the supply chain between the company / organization and the company / organization.
Such as Individual software developers / communities → Companies / organizations that packaging multiple software → Company that decides specifications and develops as a integrated products → Determine product requirements and actually sell to customers. 



# How to manage subject issues on the Sub Working Group? 
**Utilze industrial standard "license information exchange format" and propose "more easy way to exchange license information"**

In this sub working group, it's considered to utilize well known industrial standard and will make proposal for communities who maintain those standard.

There is one of the standard which treat OSS License Information "Software Package Data Exchange Workgroup (SPDX)" under the Linux Foundation.

SPDX Workgroup maintain specifications of SPDX format which format contain Software name, Version, License, Copyright notice, etc. to share License Information of Software Package between supplier and consumer. Current latest revision of SPDX format specification is "SPDX Specification version 2.2.0".

This sub working group made and distributed more simple method than existing OSS license information exchange utility. 
Also in this sub working group, it held discussions about proposals for next revision of SPDX specification based on experience which got on commercial product development.

### How to exchange license information exchange without any exceptional leakage

To develop Software for the market product, it have to share License Information of Software Packages which delivered to Final Product Manufacturer (such as Car Manufacture) from lot of suppler (called Tier-1, Tier-2 .. Tier-N based on production layers).
In some case, there are companies who are not familiar with OSS License treatment. And those companies are also not familiar with well known Open Source Tools to maintain License information.

 
### To establish "Easy to Use", "Accuracy" and "Able to coordinate with any other license information format"

To request providing proper License information of Software Package for each company involved in whole supply chain of the product, this sub working group considered to utilize existing License information exchange method such as file formats, license management tools, etc. And in the same time, it considered utilization to treat those method on simple way even some company wants to **"write License Information by Hand with Spread Sheet"**. 


This sub working group named those minimum set of SPDX as **"SPDX Lite"**.

### For stable use of "SPDX Lite" in the future 

This Sub Working Group has worked with the SPDX community to ensure that the format for providing complete license information, either by hand or in Spreadsheets, will continue to be used in the future. Currently, the format definition is included as part of the standard defined by the SPDX Workgroup （[SPDX Specification Appendix VIII SPDX Lite](https://spdx.github.io/spdx-spec/appendix-VIII-SPDX-Lite/).

### Use case on the actual commercial development field

SPDX Lite defined by this Sub Working Group has been adopted in actual commercial development, and from 2020, license information are exchanged between companies in the in-vehicle information equipment development supply chain in Japan.

# Result of this Sub Working Group Activity

### SPDX Specification Appendix VIII SPDX Lite: Light weight License Description Format as a part of SPDX Format

The SPDX format are designed its specifications as mandatory items and optional items. For example, name of Software Package and Declared License in the Software Package are mandatory items of the SPDX format.
This sub working group defined "minimum set of mandatory items of SPDX specification" based on experience of actual commercial product development.
Of cause it's able to expect treat those "minimum set of SPDX" with existing License management tools which accept SPDX format.

### Proposing UsageProfile to next revision of SPDX Specification

Current SPDX format is defined for describing license-related matters associated with the software delivered and provided from companies located upstream of the supply chain to companies located downstream (in OSS, original License Description are written in the software itself).

Now this Sub Working group propose a mechanism for linking Software Package and Contract Terms related to that commercial development supply chain. It's expected to adopt the proposal in the next version of the SPDX specification.
Those proposal consists additional specification for SPDX to used within the supply chain of actual commercial development, to process mechanically linkage between Software Package and Contract Terms related to its development, the expected usage of the delivered Software Package in the target product, in addition to the notification of license information.

At the moment, we have regular discussions with several groups of the SPDX specification community, discussing the content of the proposals itself and explaining the background of the proposals.


# In the next article

Tomorrow, Ouchi-san of Fujitsu will describe about "Commentary of spec v2.1 vol.6,§3.5".