BSDライセンスのオープンソースプロジェクトを管理している場合、誰かがGPLライセンスのコードを不法に寄贈しないようにするにはどうすればよいですか?


8

BSD、MIT、または他の寛容なライセンスの下でライセンスされたオープンソースプロジェクトは、コミュニティからのコードの寄付を受け入れます。

自分が所有していないGPLライセンスのコードを誰かが取得してそれをBSDライセンスのプロジェクトに提出するのを防ぐにはどうすればよいですか?寄付がGPLライセンスのプロジェクトから盗まれたことを知りませんし、それを受け入れます。

プロジェクト全体をGPLにしないために、私はそのような貢献を受け入れたくありません。しかし、貢献者が貢献しているコードの著作権を実際に持っているかどうかを知る方法はありません。そのため、誰かがGPLライセンスのコードを私のプロジェクトに不法に寄付した場合、それらを止める方法はわかりません(寄付をまったく受け入れないことを除けば)。

確かに、BSDとMITでライセンスされたプロジェクトはたくさんあるので、解決策があるはずです。

ありがとう!


1
おそらく、法的助言を求める質問は一般的に話題から外れていると眉をひそめているためです
ニュートピア

3
@Newtopianこの法的アドバイスはどうですか?それはオープンソースプロジェクトを管理することです。これがどのように話題から外れているのか、私にはまったくわかりません。ただし、オープンソースには適しているかもしれませんが、プロジェクトの管理はここで行うのが適切です。
Thomas Owens

3
@ThomasOwens:答えようとする試みが法的な問題に影響を与えないかどうかはわかりません。結局のところ、何らかの著作権の証明を求めない限り、貢献者の言葉を信頼して、再び法的な問題にします。
Robert Harvey

3
私は反対投票者ではありませんでした。それは正当な質問ですが、ロバートが言ったように、法的側面に後ずさずに答えることは困難です。ここで私が望むことができる最高のことは、寄稿者の誠意に頼ると同時に、いつ、いつ、誰がコードを提出したかに関する優れた記録を保持し、ピースがすり抜けた場合の最終的な長いロールバックと書き直しに備えることです。クラック。
ニュートピアの2018年

5
適切な属性などを含めずにGPLコードをBSDプロジェクトに不適切に追加しても、プロジェクトが自動的にGPLにならないことに注意してください。代わりに、プロジェクトを合法的に配布することが不可能になります。これは、GPLコードを削除するか、適切に帰属させるなどして、プロジェクト全体をGPLに変換することで修正できます。
bdsl 2018年

回答:


6

ここに画像の説明を入力してください

単に違法な寄付を「防ぐ」だけではありません。

献金を盲目的に受け入れることは決してなく、いくつかの種類のトラブルについて献金(自分のものを含む)を吟味するプロセスが必要です。

  • 単体テスト(自動)
  • バックドアとセキュリティの欠陥(静的分析が役立つ場合があり、他のツールが存在する)
  • コードのにおい(自動)
  • 不十分なコードロジック(ピアレビュー、「バグを浅くするのに十分な目」など-OpenSSLの話は、これでは十分でない可能性があることを示しています)
  • 私は他のいくつかを逃したと確信しています-貢献を歓迎します

あなたがしなければならない「すべて」は、盗用のチェック追加することでしょう。これは、適切なコード行をグーグルするだけで、自動ツールを使用してある程度実行できます。

プロジェクトからコードのサンプルをいくつか持ち上げて試したところ、うまくいきました。コードから文字列、形式、コメント、関数名、プロトタイプを抽出し、それらすべてをグーグルで検索して、1つのサイトが複数の一致で出現した場所を調べました。19件中17件のテストで、ソースサイトは5つの候補のうちの最初のものでした。すべてのケースで、サイトは最初の5つに表示されました。対照的に、私の独自のコードでは、20件中3件(4つ)のケースでのみ誤検知が発生し、ターゲットの品質が非常に低かったため、6か所のサイトをすばやく閲覧することで、アラートを無視できました。さらに、GPLコードを使用すると、Google検索からのスニペットは、目に見えて私がテストしたコードと同じでした。

この時点で、私はあなたが手でそれを行うことができると確信しています。コードを見て、コメントを見てください(コメントは意味がありますか?そうでない場合、それは別の種類の赤信号です。もしそうであれば、それらはすべて言い換えられているか(!)または見つけます)、いくつかのテキスト文字列をGoogleや他の検索エンジンに接続します。

そして、あなたはかなりの貢献のためにこれをする必要があるだけです。

法的な観点から- 私はすぐに私の深みから抜け出します-あなたは貢献者が彼らが正直に貢献するつもりであるという何らかの形式の放棄または同意を受け入れることを必要とすると思います。

それらが見つからず、あなたがそれを見逃した場合(たとえば、グーグルで見つけられないようにGPLコードを変形/難読化した場合)、IMHOの可能性は、それが閉じ込め目的で行われた場合を除いて見つからないことです。彼ら自身が笛を吹く。その時点であなたのプロジェクトはGPLに違反しており、あなたは次のことができます:

  • プロジェクトからGPLコードを削除する
  • プロジェクトの残りの部分がGPLに該当することを宣言する

シナリオ全体が何らかの現実的な問題になるためには、「コントリビューター」が以下を行う必要があります。

  • 有用な比率の意味のあるGPLコードセクションを見つけ、
  • すべてのライセンス情報を削除し、
  • 検索は、コードを見つけることができませんのでこと、 -コメント、関数名、非自明の変数名、テキスト文字列を-それを徹底的に書き直し、まだ認識可能同じにそれを残して、同じ時間で休暇それが働いて
  • コードベースのコードを「縫い合わせる」ことで、他の貢献者がその機能依存するようにし、削除が問題になるところまで

全体のシナリオ、特に最後のポイントは、私には本当に行き詰まっているようです。盗作のチェックが整ったら、私は心配しなくなります。


1
非常に興味深く、包括的な答え!はい、いくつかのグーグルは、いくつかの不要なコピーと貼り付けを識別するのに役立ちます。ただし、これはリテラルコピーに対してのみ機能します。誰かが同じコードを受け取り、いくつかの変数名を置き換えたり、一部のステートメントの順序を変更したりすると、盗用されますが、見つかりません。しかし、あなたの言うとおりです。少なくともリスクを減らすのに役立ちます。貢献者契約は義務を明確にし、貢献者に残存リスクを転送する必要があります。
クリストフ

1
この答えを補足するために、私はコーディングブートキャンプでしばらくインストラクターをしていました。盗作は一般的ではありませんでしたが、起こりました。学生が私が慣れ親しんでいたものとは大幅に異なるコードを提出するため、通常、それがいつ起こったかはかなり明白でした。それが起こったとき、私は数行のやや目立つコードを数行取り、GitHubでコードを検索しました。GitHubで見つからなかった場合は、Googleが次になりますが、元のコードはGitHubでいつでも見つけることができました。
ダンジョーンズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.