このページの内容は、JSHintプロジェクトのリポジトリから取得されています。エラーを見つけた場合は、issueを報告するか(できれば)、プルリクエストを送信するください!
2020年8月、JSHintプロジェクトのメンテナはプロジェクトのライセンスを再許諾しました。これは長年にわたる取り組みの集大成であり、ソフトウェアライセンスの慣習とすべての貢献者の意図を尊重することに細心の注意が払われました。メンテナが従ったプロセスを要約することで、このドキュメントは変更の正当性を示しています。
JSLintプロジェクトは2002年に初めて公開されました。無料配布されましたが、いわゆる「JSONライセンス」[1]でライセンスされていました。このライセンスの下で公開されたコードは、以下の条項により、Free Software Foundation [2]によって「フリーソフトウェア」として認識されておらず、Open Source Initiative [3]によって「オープンソース」として認識されていません。
ソフトウェアは善のために使用され、悪のために使用されるべきではありません。
最初のリリース後、JSLintの作者は一意のソースコードファイルへの一連のパッチを通じて、それを繰り返し改良しました。この間、所有者はプロジェクトの唯一の貢献者でした。
2011年、別の開発者が独自の改良を行い、「JSHint」[4]という名前の新しいプロジェクトとして公開しました。これは、新しいプロジェクトが継承したコードに同じライセンスを使用するという条件で、JSLintのライセンスの条件下で許可されました。
2番目の開発者はJSHintの修正を続け、他の開発者からの貢献も受け入れました。ソースコードの保守性を向上させるために、新しい機能は実行時に含まれるように設計された個別のファイルで時々導入されました。「モジュール」と呼ばれるこれらのファイルは、MIT「Expat」ライセンス[5]の条件下で利用可能になりました。自動テストが記述され、プロジェクトに含まれるようになると、それらもMIT「Expat」ライセンスの下でライセンスされました。
その後数年で、JSHintプロジェクトは数百人の開発者から直接コードの貢献を受け入れました。これらのパッチの多くは、元のJSONライセンスのファイルを変更しました。一方、JSLintの作者はEclipse FoundationがMIT Expatライセンスを使用してJSLintのバージョンを再ライセンスすることを許可し、Orion [6]という名前の彼らのプロジェクトに含めることができました。
2013年、JSHintのユーザーがプロジェクトのライセンスを再許諾するよう要求しました[7]。JSHintのメンテナは、以下の手順に従ってそれに応じました。
この操作は、JSHintがフリーソフトウェアプロジェクトとしてどのように作成できたかを示す「代替の歴史」を作成しましたが、必ずしも貢献者の意図を反映しているとは限りませんでした。JSHintはその時点では貢献者ライセンス契約を維持していなかったため、メンテナはJSHint固有のパッチが提出された条件を変更する権限を持っていませんでした。
これに対処するために、メンテナはまず貢献者ライセンス契約(CLA)を導入しました。彼らは、パッチを受け入れる前に、後続のすべての貢献者が契約の条件に同意することを確認しました。彼らは、JSONライセンスの`jshint.js`ファイルを修正したすべての貢献者に連絡を取り、契約への署名を依頼しました。ほとんどの人は契約に署名して応答しましたが、少数の人は拒否し、さらに他の人は応答しませんでした。
CLAに署名していない著者のパッチの完全なリストは、このドキュメントと共にJSHintプロジェクトのソースコードリポジトリで公開されています。
メンテナは、再ライセンスできない各パッチを確認しました。多くのものは、コードコメントの修正、スペル修正、または標準化されたAPIへの参照の導入など、実質的な変更を含んでいませんでした。これらの貢献はソフトウェアの動作を意味のある方法で変更しなかったため、所有権を主張することはできず、再ライセンスの明示的な許可は必要ありませんでした。
しかし、合計6つのパッチが`jshint.js`への非自明な変更を含んでいました。メンテナは、これらのそれぞれを書き直すよう手配しました。
3つの貢献は、書き直している実装を確認したことがない4人のボランティアによって書き直されました。プロジェクトメンテナは、各ボランティアのためにプロジェクトの代替バージョンを用意しました。これは、再実装する必要のある各パッチを除外したものです。
さらに3つの貢献は、JSHintプロジェクトのメンテナによって書き直されました。彼の仕事の独自性は、他のメンテナによって確認されました。
いずれの場合も、新しい実装の正確性はプロジェクトの既存の自動テストによって確認されました(上記のように、それらのライセンスは変更の対象ではありませんでした)。
この作業が完了したことで、JSHintプロジェクトのすべてのコード行について、その貢献者によってMIT「Expat」ライセンスを使用することが許可されました。「代替の歴史」は、`relicensing-2020`という名前のGitタグで利用できます。
バージョン2.12.0以降、JSHintはフリーソフトウェアプロジェクトです。
[1] https://www.gnu.org/licenses/license-list.en.html#JSON [2] 同上 [3] https://opensource.org/licenses/alphabetical [4] https://web.archive.org/web/20110224022052/http://anton.kovalyov.net/2011/02/20/why-i-forked-jslint-to-jshint/ [5] https://www.gnu.org/licenses/license-list.en.html#Expat [6] http://git.eclipse.org/c/orion/org.eclipse.orion.client.git/tree/lib/jslint/jslint-2011-01-09.js [7] https://github.com/jshint/jshint/issues/1234