Wie schützen Sie sich vor jemandem, der illegal GPL-lizenzierten Code beisteuert, wenn Sie ein Open Source-Projekt mit BSD-Lizenz verwalten?


8

Ein Open Source-Projekt, das unter BSD, MIT oder einer anderen zulässigen Lizenz lizenziert ist, akzeptiert Code-Beiträge von der Community.

Wie kann ich verhindern, dass jemand GPL-lizenzierten Code, den er nicht besitzt, an mein BSD-lizenziertes Projekt weiterleitet? Ich weiß nicht, dass der Beitrag aus einem GPL-lizenzierten Projekt gestohlen wurde und akzeptiere ihn.

Ich möchte solche Beiträge nicht akzeptieren, um nicht das gesamte Projekt zur GPL zu machen. Ich kann jedoch nicht wissen, ob der Mitwirkende tatsächlich das Urheberrecht an dem Code besitzt, den er beisteuert. Wenn also jemand illegal GPL-lizenzierten Code in mein Projekt einbringt, weiß ich nicht, wie ich ihn stoppen kann (abgesehen davon, dass ich überhaupt keine Beiträge akzeptiere).

Sicher gibt es viele BSD- und MIT-lizenzierte Projekte, also muss es eine Lösung geben.

Vielen Dank!


1
wahrscheinlich, weil Fragen, die Rechtsberatung suchen, im Allgemeinen als nicht thematisch
Newtopian

3
@Newtopian Wie ist diese Rechtsberatung? Es geht darum, ein Open Source-Projekt zu verwalten. Ich verstehe nicht, wie das hier überhaupt nicht zum Thema gehört. Es ist zwar besser für Open Source geeignet, aber die Verwaltung eines Projekts ist hier gut.
Thomas Owens

3
@ThomasOwens: Ich sehe nicht, wie ein Antwortversuch keine rechtlichen Fragen berührt. Letztendlich verlassen Sie sich auf das Wort des Mitwirkenden, es sei denn, Sie fordern einen Nachweis des Urheberrechts an, was es wieder zu einem rechtlichen Problem macht.
Robert Harvey

3
Ich war kein Downvoter und habe auch nicht dafür gestimmt, zu schließen. Es ist eine legitime Frage, aber eine, die schwer zu beantworten ist, ohne, wie Robert sagte, auf die rechtliche Seite zurückzugreifen. Das Beste, auf das ich hier hoffen kann, ist, mich auf den guten Glauben der Mitwirkenden zu verlassen und gleichzeitig hervorragende Aufzeichnungen darüber zu führen, was, wann, wen des festgelegten Codes und eventuelle längere Rollbacks und Umschreibungen vorzubereiten, falls Teile durchrutschen sollten Die Risse.
Newtopian

5
Beachten Sie, dass das falsche Hinzufügen von GPL-Code zu einem BSD-Projekt ohne die korrekte Zuordnung usw. die GPL des Projekts nicht automatisch erstellt. Stattdessen ist es unmöglich, das Projekt rechtmäßig zu verbreiten. Dies kann behoben werden, indem entweder der GPL-Code entfernt oder ordnungsgemäß zugewiesen usw. wird und das gesamte Projekt in GPL konvertiert wird.
BDSL

Antworten:


6

Geben Sie hier die Bildbeschreibung ein

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.


1
Sehr interessante und umfassende Antwort! Ja, ein bisschen googeln könnte helfen, unerwünschtes Kopieren und Einfügen zu identifizieren. Dies funktioniert jedoch nur für wörtliche Kopien: Wenn jemand denselben Code verwendet und einige Variablennamen ersetzt oder die Reihenfolge einiger Anweisungen ändert, wird er nicht gefunden, obwohl es sich immer noch um ein Plagiat handelt. Aber Sie haben Recht: Es kann zumindest helfen, die Risiken zu reduzieren. Die Beitragsvereinbarung sollte die Verpflichtungen klarstellen und das verbleibende Risiko auf den Beitragenden übertragen.
Christophe

1
Um diese Antwort zu ergänzen, war ich eine Weile Instruktor bei einem Coding Bootcamp. Plagiate waren nicht üblich, aber es passierte. Es war mir normalerweise ziemlich klar, wann es passierte, weil ein Schüler Code einreichte, der sich stark von dem unterschied, was ich von ihnen gewohnt war. Wenn das passierte, nahm ich ein paar Zeilen mit etwas unterscheidendem Code und suchte in GitHub nach dem Code. Wenn ich es nicht in GitHub finden würde, wäre Google der nächste, aber ich konnte immer den Originalcode in GitHub finden.
Dan Jones
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.