Verwenden von Code unter Apache 2.0-Lizenz in meinem Programm mit MIT-Lizenz

7

Ich verwende Quellcode aus einem Codebeispiel, das in meinem Programm unter der Apache 2.0-Lizenz lizenziert ist. Jetzt möchte ich dieses Programm und den Quellcode mit der MIT-Lizenz auf GitHub veröffentlichen. Ich habe Folgendes in der Lizenz gelesen:

Sie müssen dafür sorgen, dass geänderte Dateien auffällige Hinweise enthalten, dass Sie die Dateien geändert haben.

Aber ich habe keine der Dateien geändert, sondern nur die relevanten Teile des Codes in meine Quelldateien kopiert.

Hier sind meine Fragen:

Ich weiß, dass ich meinem Projekt eine Kopie der Apache 2.0-Lizenz hinzufügen muss, aber muss ich etwas in meine Quelldateien einfügen, um meinen Programm- / Quellcode korrekt zu veröffentlichen?

Muss ich als Befehlszeilenprogramm einen Lizenzschalter hinzufügen und die Lizenz anzeigen oder muss ich die Ausgabe "USAGE" hinzufügen?

Muss ich die MIT-Lizenz in jede meiner Quelldateien einfügen oder reicht es aus, eine Kopie davon im Projekt zu haben?

Danke im Voraus!

MemphiZ
quelle
Können Sie die Teile, die Sie aus dem von Apache lizenzierten Projekt entnommen haben, in einer eigenen Datei ablegen? Dann können Sie dort die Apache-Lizenzbedingungen einfügen. Sie müssen dem Teil "Verwendung" Ihres Programms keinen Hinweis hinzufügen.
Brandin
Leider kann ich nicht, weil es im Grunde eine Client / Server-Sache ist und es den Code brechen würde, wenn ich müsste.
MemphiZ
Ich denke, Sie könnten oben in die Datei eine Erklärung einfügen, welche Teile unter welche Lizenzen fallen. Aber das wird wahrscheinlich verwirrend sein. Persönlich würde ich mich mehr darum kümmern, diesen anderen Lizenzcode in eine andere Datei zu trennen. Dies hängt wahrscheinlich mit einer technischen Frage zusammen, wie dies in der von Ihnen verwendeten Programmiersprache implementiert werden kann. Wenn es beispielsweise Python ist, können Sie es einfach in ein eigenes Paket einfügen und es dann aus Ihrem eigenen Code aufrufen.
Brandin
"Aber ich habe keine der Dateien geändert, sondern nur die relevanten Teile des Codes in meine Quelldateien kopiert." Dann hast du es geändert; Sie haben die Teile entfernt, die Sie nicht brauchten. Daher müssen Sie klarstellen, dass diese Codeteile eine modifizierte Version des Originalcodes sind. Sie sollten auch klarstellen, dass Ihre Bibliothek sowohl von der MIT- als auch von der Apache-Lizenz abgedeckt ist.
David Arno
Gibt es einen Grund, warum Sie die Apache-Lizenz nicht für Ihre Arbeit verwenden möchten? Apache und MIT sind funktional nahezu identisch. (Die Apache-Lizenz hat einige Patentrechte, die besagen, dass die MIT-Lizenz fehlt). Eine einzige Lizenz erleichtert Ihnen und potenziellen Benutzern die Arbeit erheblich.
Craig

Antworten:

3

Da Teile der Quellen unter einer Lizenz (Apache 2.0) und Teile unter einer anderen Lizenz (MIT) lizenziert sind, ist es wichtig, dass jede Datei einen Hinweis enthält, welche Lizenz für den Inhalt dieser Datei gilt.

Es wird dringend empfohlen, nur eine einzige Lizenz für jede Quelldatei zu haben. Daher sollten Sie den Code, den Sie aus der Bibliothek eines Drittanbieters kopiert haben, in einer separaten Quelldatei (oder mehreren separaten Quelldateien) haben. Diese Dateien sollten einen Copyright-Hinweis enthalten, der sich auf die Apache-Lizenz bezieht, und angeben, dass Sie den Code aus der Bibliothek eines Drittanbieters kopiert haben.

Für Ihren eigenen Code, den Sie unter der MIT-Lizenz veröffentlichen möchten, wird empfohlen, die gesamte MIT-Lizenz in einem Kommentar oben in Ihren Dateien anzugeben.
Die MIT-Lizenz ist nicht so lang und vermeidet jegliche Verwirrung darüber, unter welcher Lizenz sich der Code befindet, selbst wenn die Datei vom Rest des Projekts getrennt wird.


Wenn es nicht möglich ist, den Code unter den verschiedenen Lizenzen in separate Dateien zu trennen, können Sie folgendermaßen vorgehen (vorausgesetzt, ein kleiner Teil einer Datei befindet sich unter der Apache-Lizenz):

  • Stellen Sie Ihre Quelldatei unter die MIT-Lizenz
  • Fügen Sie direkt unter den Copyright- und Lizenzerklärungen einen Kommentar hinzu, dass Teile der Datei unter einer anderen Lizenz stehen.
  • Fügen Sie unmittelbar über dem Code, der sich unter der Apache-Lizenz befindet, einen Kommentarblock hinzu, in dem die Copyright- und Lizenzdetails für den darauf folgenden Code angegeben sind.
    Um andere nicht gründlich zu verwirren, sollte dies in der Granularität einer Funktion erfolgen.
Bart van Ingen Schenau
quelle
Was ist, wenn ich den Code unter der Apache-Lizenz nicht vom Rest trennen kann, weil er den Code vollständig beschädigen oder unlesbar machen würde?
MemphiZ
1
@MemphiZ Welche Programmiersprache ist das? Vielleicht solltest du eine Frage zu SO posten. "Ich habe diesen Code hier - wie kann ich ihn in eine eigene Datei einfügen"
Brandin
@MemphiZ: Es wurde hinzugefügt, was Sie tun können, wenn Sie die Funktionen nicht in verschiedene Dateien trennen können.
Bart van Ingen Schenau