単に違法な寄付を「防ぐ」だけではありません。
献金を盲目的に受け入れることは決してなく、いくつかの種類のトラブルについて献金(自分のものを含む)を吟味するプロセスが必要です。
- 単体テスト(自動)
- バックドアとセキュリティの欠陥(静的分析が役立つ場合があり、他のツールが存在する)
- コードのにおい(自動)
- 不十分なコードロジック(ピアレビュー、「バグを浅くするのに十分な目」など-OpenSSLの話は、これでは十分でない可能性があることを示しています)
- 私は他のいくつかを逃したと確信しています-貢献を歓迎します
あなたがしなければならない「すべて」は、盗用のチェックを追加することでしょう。これは、適切なコード行をグーグルするだけで、自動ツールを使用してある程度実行できます。
プロジェクトからコードのサンプルをいくつか持ち上げて試したところ、うまくいきました。コードから文字列、形式、コメント、関数名、プロトタイプを抽出し、それらすべてをグーグルで検索して、1つのサイトが複数の一致で出現した場所を調べました。19件中17件のテストで、ソースサイトは5つの候補のうちの最初のものでした。すべてのケースで、サイトは最初の5つに表示されました。対照的に、私の独自のコードでは、20件中3件(4つ)のケースでのみ誤検知が発生し、ターゲットの品質が非常に低かったため、6か所のサイトをすばやく閲覧することで、アラートを無視できました。さらに、GPLコードを使用すると、Google検索からのスニペットは、目に見えて私がテストしたコードと同じでした。
この時点で、私はあなたが手でそれを行うことができると確信しています。コードを見て、コメントを見てください(コメントは意味がありますか?そうでない場合、それは別の種類の赤信号です。もしそうであれば、それらはすべて言い換えられているか(!)または見つけます)、いくつかのテキスト文字列をGoogleや他の検索エンジンに接続します。
そして、あなたはかなりの貢献のためにこれをする必要があるだけです。
法的な観点から- 私はすぐに私の深みから抜け出します-あなたは貢献者が彼らが正直に貢献するつもりであるという何らかの形式の放棄または同意を受け入れることを必要とすると思います。
それらが見つからず、あなたがそれを見逃した場合(たとえば、グーグルで見つけられないようにGPLコードを変形/難読化した場合)、IMHOの可能性は、それが閉じ込め目的で行われた場合を除いて見つからないことです。彼ら自身が笛を吹く。その時点であなたのプロジェクトはGPLに違反しており、あなたは次のことができます:
- プロジェクトからGPLコードを削除する
- プロジェクトの残りの部分がGPLに該当することを宣言する
シナリオ全体が何らかの現実的な問題になるためには、「コントリビューター」が以下を行う必要があります。
- 有用な比率の意味のあるGPLコードセクションを見つけ、
- すべてのライセンス情報を削除し、
- 検索は、コードを見つけることができませんのでこと、 -コメント、関数名、非自明の変数名、テキスト文字列を-それを徹底的に書き直し、まだ認識可能同じにそれを残して、同じ時間で休暇それが働いて
- コードベースのコードを「縫い合わせる」ことで、他の貢献者がその機能に依存するようにし、削除が問題になるところまで
全体のシナリオ、特に最後のポイントは、私には本当に行き詰まっているようです。盗作のチェックが整ったら、私は心配しなくなります。