Xeon hat geschrieben: ↑Fr Apr 17, 2026 4:00 pm
Wie zitiert man richtig fremden Code in seinem Projekt? Wie macht ihr das?
Grundsätzlich muss man sich damit beschäftigen unter welchem Lizenz das Projekt steht.
Was hier auf der Website veröffentlicht ist, ist OpenSource und Public Domain. Das heißt, Du darfst mit dem Quellcode machen, was Du möchtest. Selbst ohne Quellenangabe darfst Du ihn in kommerziellen Projekten nutzen, wobei BubbleSort hoffentlich nicht das beste ist, was man zum kopieren hier findet.
Bei mir sieht das so aus:
Code: Alles auswählen
//Dieser Code basiert auf Bubblesort.
//Quelle: https://www.proggen.org/doku.php?id=algo:bubblesort#links
//Titel: Bubblesort
//Website-Name: https://www.proggen.org
//Website betreut durch: Dipl.-Inf.(FH) Sascha Atrops
//Veröffentlichungsdatum am: (ohne Jahr)
//Abrufdatum: am 17 April 2026
}
Ich betrachte das als ziemlich fairen Umgang. Wie gesagt: Hier bist Du zu nichts verpflichtet, Du darfst Dir den Code also zueigen machen, also auch als eigene Leistung verkaufen. Seiten wie StackOverflow sind vermutlich für 50% des Codes zuständig, der in den letzten 10 Jahren geschrieben wurde. VibeCoding vermutlich für 50-99% der nächsten 10Jahre.
Zur eigentlichen Frage: Wie gehen ich damit um?
Ich habe keine OpenSource-Projekte und ich bin sehr bemüht darin, keine externen Quellen zitieren zu müssen. Das liegt zum einen daran, dass ich Dinge gerne selbst in der Hand habe und versuche, sie selbst zu lösen. Bei einem Sortieralgorithmus gucke ich auch online und kopiere mir den eigentlichen Aufbau oder nutze halt std::sort). Ich benutze beispielsweise einen Quicksort aus Wikipedia, den ich dann auf meine eigene Programmiersprache angepasst habe. Die Idee Quicksort ist public domain, Wikipedia ist Creative Common, die eigentlich Übersetzung ist dann meine Leistung. Der Code, der am Ende übrig bleibt, hat also nichts mehr mit Wikipedia zu tun, sondern ist komplett neugeschrieben. Hier verweise ich dann als Information für mich auf die Wikipedia-Seite: Falls ich nochmal was zu dem Thema lesen will, bzw. wissen will, wie ich auf die Idee gekommen bin, etwas so zu machen, wie ich es gemacht habe.
Ich "vibecode" derzeit auch, wir hatten hier mal ein gemeinsames Projekt "dedupe" begonnen, welches ich gerade neu aufgesetzt habe, weil ich Backups-NAS's (aus-)sortieren möchte und mir fdupe zu klein ist. Hier lasse ich mir teilweise Code von Gemini erzeugen, den ich dann wieder überarbeite(n muss). Diesen Code kennzeichne ich auch nicht, zumal ich am Ende die Verantwortung für den Code habe.
Bleibt Code aus anderen Projekten. Wenn Du fremde Libs nutzt, gelten wie gesagt die Lizenzen. Wenn Du - ich sage das mal, wie ein ehemaliger Vorgesetzter das formulierte - "inspiriert" wurdest (aka stumpf aus anderen Projekten kopierst) - finde ich Deinen Umgang fair, wenn er legal ist. Wenn er nicht legal ist, solltest Du es vielleicht selbst entwickeln oder wenigstens nicht dranschreiben.

Ich passe die Ideen dann auf mein Problem an, womit es dann auch mein Code ist.
Wenn ich Ideen von der Arbeit mitgebracht habe, habe ich das zu Hause neu entwickeln. Ich arbeitete beispielsweise bei einem CAD-Hersteller. Die haben einen 3D-Kernel und die Idee 3D-Kernel fand ich spannend, weswegen ich da ja gearbeitet habe.
Wenn man dann den gewachsenen Aufbau sieht und überlegt, was man selbst daraus hätte machen wollen... entsteht eine neue Kernel-Architektur. Ich nehme also Vorwissen aus der Firma mit in welche Probleme die gelaufen sind und wie man diese vermeidet.
Ich habe also einen kleinen 3D-Kernel hier an dem ich ein paar Kleinigkeiten experimentiert habe. Die grundlegende Idee habe ich von der Arbeit, die Idee "3D-Kernel" ist Public Domain, die Implementierung ist so, wie ich sie mir auf der Arbeit gewünscht hätte. Beispielsweise template class Point<unsigned int dimension> statt class Point2D und class Point3D. Aber das ist dann auch meine Leistung und da gibt's dann auch nichts mehr zu kennzeichnen.
Long Story short: Man "zitiert" nicht. Man kopiert entweder und dann ist's fair die Quelle zu nennen oder man entwickelt selbst oder man kopiert von Quellen, die man nicht kopieren darf und hofft, dass es keinem auffällt. Aber Ideen wie "Sortieralgorithmus" oder "3D-Datenstrukturen" wie Punkt und Linie sind kein geschütztes Gut. Geschütztes Gut darfst Du nicht "zitieren". Bei OpenSource wäre das "Zitat" der Fork: Du kopierst das Projekt und passt es Deinem Problem oder Deinem Lizenzbedarf an.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.