コントラクトのコードが UNLICENSED (≠ The Unlicense) なのはMITと矛盾するのではないか
Closed this issue · 3 comments
提案内容
「1-ETH-dApp」の Section 1 Lesson 2 にて、コントラクトのライセンスについて上記のように解説があります。
この SPDX-License-Identifier: UNLICENSED
という記述は(そもそもSPDXとしてはinvalidのようですが)いわゆるプロプライエタリなコードを示すのに、npmやSolidityなど一部で使われているようです。(cf: https://opensource.stackexchange.com/a/12412)
Unfortunately, the format
SPDX-License-Identifier: UNLICENSED
is an invalid SPDX license expression per the SPDX spec, because the identifierUNLICENSED
is not part of the SPDX license list. While well-intentioned, Solidity has here caused potentially dangerous confusion.
一方で当プロジェクトはLICENSEファイルこそ無いものの、README.mdに「全てオープンソース(MIT ライセンス)で運用されています」とあり、ドキュメント中のサンプルソースコードについても同様に適用されていると期待できます。
もちろん、チュートリアルを実施している各ユーザーがそれぞれの判断において、元コード及びユーザー独自のコードをプロプライエタリとして(再)宣言することは可能でしょう(MITは厳格なcopyleftと違い、コードのプロプライエタリ化も容認しているはずと記憶しています)。しかし、サンプル中にUNLICENSEDがサンプルソースとセットで書いてあるのは、元コードがそもそもプロプライエタリ、流用不可であると誤認できてしまいます。あるいは誤認ではなく意図的な設定であれば、MITライセンスのプロジェクト中に流用不可なコードが混在していることになり、ライセンスに矛盾が生じています。
解決策としては、ドキュメント中では SPDX-License-Identifier: MIT
で宣言し、必要であれば UNLICENSED の説明をするのが良いと思われます。(チュートリアル完了時など)
備考
なお、上記StackExchangeの回答にもありますが、SPDXにある Unlicense
は The Unlicense という、ソフトウェアでのパブリックドメインを表明するものです(プロプライエタリと真逆)。もしこちらを意図していたならばそのように改訂する手もありますが、 UNLICENSED
/ Unlicense
で紛らわしいので個人的にはお勧めいたしかねます。
ご指摘ありがとうございます :3 MITで合ってます、該当部分変更のPRお願いします 🙇
@neila かしこまりました。
他のチュートリアル・セクションも含めて、全部で15か所 SPDX-License-Identifier: UNLICENSED
があるようなのですが、全て SPDX-License-Identifier: MIT
に置き換えてしまってよろしいでしょうか?
okです!