Man "schützt" sich nicht einfach vor illegalen Beiträgen.
Sie akzeptieren niemals blind einen Beitrag und sollten einen Prozess haben, um Beiträge (einschließlich Ihres) auf verschiedene Arten von Problemen zu überprüfen:
- Unit-Tests (automatisiert)
- Hintertüren und Sicherheitslücken (statische Analyse kann helfen, andere Tools existieren)
- Code riecht (automatisiert)
- schlechte Codelogik (Peer Review, "genug Augen, um Fehler flach zu machen" usw. - die Geschichte von OpenSSL zeigt, dass dies möglicherweise nicht ausreicht)
- Ich bin sicher, ich habe einige andere verpasst - Beiträge sind willkommen
"Alles", was Sie tun müssen, wäre, eine Prüfung auf Plagiate hinzuzufügen . Dies kann bis zu einem gewissen Punkt mit automatischen Werkzeugen erfolgen, indem nur die relevanten Codezeilen gegoogelt werden.
Ich habe es gerade versucht, indem ich einige Codebeispiele aus Projekten entfernt habe, und es funktioniert. Ich habe einfach Zeichenfolgen, Formate, Kommentare sowie Funktionsnamen und Prototypen aus dem Code extrahiert, sie dann alle gegoogelt und mir angesehen, wo eine einzelne Site in mehreren Übereinstimmungen angezeigt wurde. In 17 von 19 Tests war die Quellstelle der erste von fünf Kandidaten; In allen Fällen erschien die Site unter den ersten fünf. Im Gegensatz dazu lösten Teile meines eigenen Codes nur in drei (vier) von zwanzig Fällen falsch positive Ergebnisse mit Zielen von sehr geringer Qualität aus. Durch schnelles Durchsuchen eines halben Dutzend Websites konnte ich die Warnung abweisen. Mit dem GPL-Code war das Snippet aus der Google-Suche außerdem sichtbar das gleiche wie der Code, den ich getestet hatte.
An dieser Stelle bin ich zuversichtlich, dass Sie dies von Hand tun können . Schauen Sie sich den Code an, sehen Sie sich die Kommentare an (machen sie Sinn? Wenn nicht, ist das eine andere Art von rotem Licht. Wenn ja, entweder wurden sie alle umformuliert (!) Oder Sie werden sie finden), versuchen Sie es mit a einige Textzeichenfolgen, stecken Sie sie in Google und / oder andere Suchmaschinen.
Und das brauchen Sie nur für beträchtliche Beiträge.
Aus rechtlicher Sicht - ich bin schnell aus meiner Tiefe heraus - stelle ich mir vor, dass Sie Ihre Mitwirkenden brauchen, um irgendeine Form von Verzicht oder Vereinbarung zu akzeptieren, in der sie erklären, dass sie ehrlich beitragen werden.
Wenn dies nicht der Fall ist und Sie dies verpasst haben (z. B. haben sie einen GPL-Code verwandelt / verschleiert, damit er nicht durch Googeln gefunden wird), besteht meiner Meinung nach die Möglichkeit, dass er nur dann herausgefunden wird, wenn er zu Einschlusszwecken erstellt wurde sie selbst pfeifen. Zu diesem Zeitpunkt verstößt Ihr Projekt gegen die GPL und Sie können:
- Entfernen Sie den GPL-Code aus dem Projekt
- Erklären Sie, dass der Rest des Projekts unter die GPL fällt
Damit das gesamte Szenario realistische Probleme verursacht, muss der "Mitwirkende":
- Suchen Sie einen aussagekräftigen GPL-Codeabschnitt mit nützlichen Proportionen.
- Entfernen Sie alle Lizenzinformationen.
- Schreiben Sie es gründlich um - Kommentare, Funktionsnamen, nicht triviale Variablennamen, Textzeichenfolgen -, damit eine Suche den Code nicht findet und ihn dennoch erkennbar gleich lässt und gleichzeitig funktioniert
- Lassen Sie den Code in der Codebasis "schmoren", und andere Mitwirkende verlassen sich auf seine Funktionalität , bis zu dem Punkt, an dem das Entfernen ein Problem darstellen würde
Das ganze Szenario, insbesondere der letzte Punkt, scheint mir wirklich weit hergeholt. Sobald die Plagiatsprüfung abgeschlossen ist, würde ich aufhören, mir Sorgen zu machen.