OSSライセンス遵守をより具体的に


はじめに

これまで依存関係にあるパッケージ等のライセンスを取得してくれるGitHub製のlicensedやこの他にも様々なライセンスチェッカーが開発されてきました。
特にlicensedはカバーされる範囲も広く個人的にかなり正確に取得してくれると感じていますが利用手順が多いということも挙げられます。
今回、3つの手順だけでこのようなライセンスチェック機能に加えライセンス遵守のためにするべきことを一つのテキストファイルにまとめて教えてくれるnpmパッケージを開発しました。(npmのみ対応)

doppelganger-license

今回開発したパッケージをdoppelganger-licenseと名付けました。
詳細はGitHub Repoに記載しています。
doppelganger-licenseは先述した通り、依存関係にあるライセンスを取得しライセンス遵守のためにすべきことを具体的に教えてくれます。
これらの機能は全てプロジェクトファイル内のpackage-lock.jsonに基づいています。

手順としては

1. doppelganger-licenseのインストール

$ npm install doppelganger-license

2. dependencies.txtとmemo.txtをお好きな場所に作成
  dependencies.txtにライセンス条項が自動出力され、memo.txtにやることリストが出力されます。

3. doppelganger-licenseを実行

$ doppelganger-license

package-lock.json, dependencies.txt, memo.txtのパスが質問されるのでそれぞれ答えてください

以上の3手順で利用できます。

デモ動画はレポジトリでご確認いただけます。

仕組み

仕組みはそこまで複雑ではなく

package-lock.jsonのdependenciesにあるパッケージの名前・バージョンをfsを用いて抽出
                    ↓
    node-fetch経由でregistry.npmjs.orgにてパッケージのライセンスを取得
                    ↓
      node-fetch経由でjsdelivrにてパッケージのライセンス条項を取得
                    ↓
      取得したライセンス条項をfsを用いてdependencies.txtに出力
                    ↓
   コピーレフトライセンスを発見した場合はそのライセンスの条件をmemo.txtに出力

という流れです。

今後の発展予定

現時点でライセンス間の矛盾などは考慮できておらず、一部のコピーレフトライセンスは検出できない場合がありまだまだ改善の余地はあるという状態です。
バグの修正や改善点の報告・要望などは早くお応えできるかと思いますので、よろしければGitHub Repoにてご報告いただけますと幸いです。よろしくお願いいたします。

K-Rintaro/doppelganger-license - GitHub