できたらいいな、と思う妄想を書き出してみる。
問題提起
ソフトウェア開発するときに第三者が作成したライブラリを利用することがある。
このとき、そのライブラリのライセンスを調べ、クリアするために対処を施す必要がある。それが面倒。思いの外、時間を取られる。自動化できないか。
現状
一度調べてReadMe.mdに書く。それを使いまわす。しかし、どのリポジトリにあるか忘れる。過不足がないとも言い切れない。
- ファイルを探す手間
- コピペする手間
- 見つからず調べなおす手間
妄想
A. importすると自動でインストール&ライセンス対応する
たとえばPythonでの話。ソースコードでimportすると、そのライブラリのライセンス条件に必要な対応を自動的に行ってくれる。といいな。
これでライセンスの表記漏れもなくせそう。でも、どうやって実装するのか、実装できるのか、名前重複はどうするか、他の言語ではどうするか。まったくイメージがつかない。
B. 標準化と自動化用サーバ・ツール提供
パッケージ管理のようなやつのライセンス版があったらいいな。
ソフトウェアの依存関係だけでなくライセンス問題も一緒にクリアしてくれる。
機能
変更通知
将来ライセンスが変更される可能性がある。ライセンス変更を通知する仕組みが欲しい。サーバープッシュとそれに連動するツールが欲しい。
作者がライセンス更新すれば、ユーザ側にライセンスに応じた対処をするよう要求が飛ぶ。それを通知し、ユーザから許可をもらえば自動ツールで対処してくれる。
処置
ライセンスをクリアするための処置を自動でほどこしてほしい。ライセンスが変更された時も自動で対応してほしい。
多分とても難しい。
ライセンスの種類に応じて何を要求するかが異なる。それらすべてを網羅し、ライセンスに応じたものを実行できる。エンドユーザの許可をもらって自動で行う。
問題
- 文化、社会通念、常識などが変わると、ライセンスの概念も大きく変わる
- そんなものを定義できるのか
- だれがサーバを用意するのか。何の得もなさそうなのに。
提供側はリスクを背負うことにしかならなそう。各自自己責任でやるしかないのか。
B. スキーマ定義して公開する
自動化するために必要なデータのスキーマだけ定義して公開する。
そのスキーマを元に、ライセンス毎、ライブラリ毎のデータを用意し、公開する。
CDNサービスでjavascriptライブラリを公開するように、ライセンスもCDNのように一元管理された場で公開されたら入手しやすい。
エンドユーザは利用するライブラリのライセンスをCDNサービスから検索してデータを取得する。そのデータに応じてライセンス条件をクリアする処置を自動でほどこす。
スキーマ定義
どんな情報が必要かは精査が必要。自動化するため、JSON-LD、XMLなどでスキーマ定義しマシン・リーダブルにする。
ライセンス公開
CDNサービスがなければ、ライブラリ作者がどこかのサーバにライセンス用データのXMLやらJSONやらを配置する。
エンドユーザはその情報を取得する。あとは自動ツールがよろしくやってくれる。
問題
ライセンス更新時に通知されない。
C. 自力でDBを作成する
公開先のサイトから自力で取得する。サイトに書いてあるテキストやリンクを手動でコピペしてDBに挿入する。
もしくは、ライブラリがGitHubリポジトリにあるなら自動化できるかもしれない。
https://github.com/licenses/license-templates
Licenses | GitHub Developer Guide
Licenses API | GitHub Developer Guide
- 自分で各ライブラリとライセンス情報をかき集める
- DBに登録する
- ライブラリ名を入力するとライセンス表記テキストを出力する
問題
ライセンス更新時に通知されない。
所感
- 無駄に面倒くさい
- 思った以上にふわふわして曖昧
やる価値はあるのか。すでにどこかに存在するのではないか。後回しでいいや。