オープンソースのライセンシングは複雑化する場合がある。最近では、多くのプログラムは8割が元からあるオープンソースのコードで、そこに2割のオリジナルコードを追加したものになっているようだ。その結果生じるライセンシングの複雑化に対応できるよう、GitHubは、オープンソースプロジェクトのライセンシング手続きの一部を自動化するのに使ってきた社内ツール「Licensed」をオープンソース化した。
ライセンスに対するGitHubの放任主義的な姿勢のおかげで、ほんの数年前にはGitHubの全プログラムのうち77%に明示されたライセンスがないとの調査結果もあったことを考えると、感心できる動きだ。もしこのことを重要だと感じないなら、プログラムを商品化しようとしたことのない開発者だろう。
Licensedは、開発サイクルの初期にプログラムの依存ライセンスに関する潜在的な問題を見つけて、コードのオープンソースライセンシングを開発者が効率よく利用するのに役立つ。
とは言っても、GitHubが次のようなコード形式で指摘しているように、Licensedがライセンシングの手続きをすべて肩代わりしてくれるわけではない。
[disclaimer]
1 of 1 consulted lawyers agree, Licensed is not a replacement for the legal advice of a human.(Licensedは、人による法的助言に取って代わるものではありません)
[/disclaimer]
Licensedは、依存関係が存在するかどうかを確認するためにライセンスのメタデータを見つけてキャッシュし、チェックすることにより、どのようなGitリポジトリにおいてもうまく機能する。複数の言語形式の依存関係を検知し、複数プロジェクトのマネージャを単一のリポジトリにパッケージ化できる。こうした柔軟性のおかげで、Licensedは、数千のプロジェクトがあるリポジトリでも、1つのプロジェクトしかないリポジトリと同じくらいうまく機能するという。
新たにオープンソース化されたLicensedは、「アプリケーション」という概念に基づいて機能する。アプリケーションは、ソースロケーションとキャッシュディレクトリの組み合わせとして定義される。ライセンス問題がないかチェックする1つまたは複数のアプリケーションを指定するのに、設定ファイルが利用される。
このプログラムは、各アプリケーションにどのような依存関係が存在するのかを見つけ出す。見つかったそれぞれの依存ライブラリや依存ルーティンについて、Licensedはローカル環境にある依存元のロケーションを見つけ、基本的なメタデータ(たとえば、名前、バージョン、ホームページ、概要)を抽出する。
それから、「Licensee」プログラムを利用して、各依存ファイルのライセンスを判定し、ライセンスの契約文面を探す。
続いて、Licensedは、メタデータとライセンス情報をキャッシュする。追跡が終わると、キャッシュされたレコードにより、必要なライセンスのコピーを配布するよう求められるファイルのような、ライセンシングに関してよくある問題に対処するのが容易になる。Licensedによって、こうしたライセンスの作成や配布の自動化だけでなく、プロジェクト用資料のオープンソースライセンス文書の提供も容易になる。問題が見つかったら、Licensedは、調べる必要がある依存関係を報告する。
Licensedは、継続的インテグレーション( Continuous Integration:CI)によって、依存関係がオープンソースライセンスの要件を満たしていることを確認する。これによって、開発者がライセンスの追跡にまつわる問題に悩まされることはほぼなくなる。プログラマがいちばんやりたくないのはライセンスの追跡なので、これは本当に素晴らしいことだ。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。