web-dev-qa-db-ja.com

オープンソースライセンスを確実に認識するための最良の方法は?

最近の多くのプロジェクトでは、新しいコードのほとんどは、さまざまなオープンソースライセンスの下でライセンスされている数十の異なるライブラリ、プラグイン、ヘルパーを組み合わせるのに役立つグルーコードで構成されています。

多くの場合、ライセンスはライセンスファイルまたはコメントにライセンスの名前が含まれているため、かなり明白です。他の場合、これは少し難しく、より一般的なライセンスを区別するために特定の文言を覚える必要があります。

私は疑問に思っています:完全なライセンステキストを記憶したり、参照としてOSIコピーをチェックしたりすることなく、特に非常に類似したライセンス(MIT/BSD-2/BSD-3など)を認識する簡単な方法はありますか?

3
Alan Plum

自由に使える最も強力なパターンマッチングツールを使用してください:あなたの目。私はしばらく前に同じ問題に遭遇しました(DjangoアプリとjQueryプラグインの大きなリストをコンパイルしていて、それらのほとんどは使用しているライセンスに明示的に名前を付けていませんでした)、最初に常に参照テキストと比較する必要がありましたが、それらのライセンスを一目で識別できるようになるまでにそれほど時間はかかりませんでした。MIT =ライセンス:

Copyright (C) <year> <copyright holders>

Permission is hereby granted, text text text
text text text
text text text

The above copyright notice and this permission notice text text text

TEXT TEXT TEXT TEXT
TEXT TEXT TEXT TEXT

そして修正されたBSD:

Copyright (c) <year>, <copyright holder>
All rights reserved.

Redistribution text text text
* text text text
* text text text
* Neither the name of the <organization> nor the
  text text text

TEXT TEXT TEXT
TEXT TEXT TEXT

いくつかのキーワード/フレーズと組み合わせたテキストレイアウトが、これら2つのライセンスを識別するのに十分であり、それらがはるかに一般的であるため(GPLやApacheのようにヘッダーに独自の名前を表示しない)に注意してください。それらは覚えやすいです(そして明らかに、3つの箇条書きがあるのでBSD-3であることがわかります)。

さて、作者がMIT/BSD-3と間違える可能性のあるわずかに異なるライセンスを使用した可能性は常にありますが、使用して違いを気にかけている場合は、注意を喚起することを合理的に期待できます。それ。

更新:チェック この回答 を使用してページを「grepする」ことについての質問SO JavaScript;たぶん少しの作業で、ページのコンテンツを検索して、既知のライセンスの小さなセット(正規表現として記述されている)の中からライセンスのテキストを検索する小さなツール(ブックマークレットなど)を作成できます。ワイルドカードの<copyright holder>などを置き換えます。セキュリティ上の影響からブックマークレットは避けますが、ブックマークレットを自分で作成したり、ホストしている場合(該当する場合)は問題ありません。その目的のための既存のツールはありませんしかし。

個人的には、問題を起こす価値はないと思います。ライセンスを注意深く検討する努力は、それを大きなプロジェクトに組み込む決定のほんの一部にすぎません。通常、厄介な部分は、ライブラリの依存関係、またはそれらをコードの残りの部分と統合するための相対的な努力です。そのため、「使用する可能性がある」または「絶対に使用しない」に簡単に分類し、ライブラリが本当に有望であると判断した場合は、ライセンスを詳しく調べます。

3
mgibsonbr