Mersenne Twister Zufallsgenerator - Frage zur Lizenz

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Mersenne Twister Zufallsgenerator - Frage zur Lizenz

Beitrag von STARGÅTE »

Hallo Leute,

beim Durchstöbern des Internets nach Generatoren für Pseudozufallszahlen stößt man sehr schnell auf den sogenannten "Mersenne Twister" von Matsumoto und Nishimura aus dem Jahre 1998 (original).
Hierzu gibt es auch eine aktuellere Version von 2002 deren Source hier mit Lizenztext veröffentlich ist.

Dieser Code wird nun u. A. in Sprachen wir PHP oder Python verwendet und dort auch entsprechend acknowledged (also entweder im Source Code oder in der Dokumentation unter Lizenzen).
Allerdings wird beim Befehl selbst, also bei php mt_rand und bei Python random nur das Verfahren erwähnt, aber nicht der Lizenztext oder ein Hinweis darauf!

Nun stellt sich mir die Frage, wie ich mich verhalten muss/müsste/sollte wenn ich z.B. eine Website mit PHP schreibe und dabei mt_rand() nutze oder ein Programm mit Python schreibe welches random() nutzt. Müssen diese Erzeugnisse dann auch auf den Lizenztext des Mersenne Twister Verfahrens entsprechend hinweisen? Eigentlich schon oder?

In Hinblick auf PureBasic wird dieses Verfahren ja scheinbar nicht genutzt (da kein Lizenzhinweis gegeben wird wie bei RegularExpression oder XML). Oder doch?
Wäre es beim Erzeugen einer Zufallsmap mit wiederverwertbarem Seed nicht ratsam lieber "Mersenne Twister" (+ Lizenzhinweis ? ! ) zu nutzen, als sich auf das PB Random() und RandomSeed() zu verlassen, was theoretisch jederzeit verändert werden könnte?

Was ist eure Meinung?
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Axolotl
Beiträge: 150
Registriert: 31.12.2008 16:34

Re: Mersenne Twister Zufallsgenerator - Frage zur Lizenz

Beitrag von Axolotl »

Hallo STARGATE,

aus meiner Sicht (und ohne Gewähr) ist sowohl das Original (siehe Fußnote erste Seite \1\) sowie der Source aus 2002 \2\ eindeutig.
Unter Anwendung des 'Lizenztextes' kann man das Verfahren eingeschränkt nutzen.
Darüber hinaus gehende Verwendung braucht die explizite Einverständniserklärung der Authoren.
=> Angabe der Copyright-Notiz (des Headers der Sourcecode-Datei)
Im Falle einer Webseite bietet sich eine Unterseite 'Impressum', 'Lizenzen', 'Rechtliches' od. ähnlich dafür an.

Meine generellen Gedanken zum Thema OSS
Aus meiner Sicht steht hier auch das Problem von OSS. Die Lizenzen wandern so mit und irgendwann kommt jemand, der damit
Geld verdienen möchte....
Eigentlich ist jeder Programmierer verpflichtet die richtige Anwendung sowie die Kompatibilität der Lizenzen zu prüfen.
Man kann sich auch nicht darauf berufen, dass jemand vor einem in der Wertschöpfungskette sich nicht dran gehalten hat.
Eine Pflichtverletzung wirkt auf alle folgenden Rechtsgeschäfte.

Aus meiner Beobachtung sind hier viele Leute aber sehr sorglos und haben Glück, da wo kein Kläger ...
Trotzdem gibt es diese Kläger (s.a. McHardy .. Abmahnung wegen Verletzung seiner Urheberrechte) und dann wird es unangenehm.

Ich habe es in meinem früheren Leben so gemacht:
+ Hinweise unter 'Rechtliches', 'Licenses' oder ähnlich bei Anwendungen (binary) angegeben.
+ Änderungen an Einkaufs- und Verkaufsbedingungen (AGBs) usw.
+ Prüfung und Dokumentation der eingesetzten OSS
+ Verantwortlichen für OSS benannt
+ OSS Project Monitoring
+ ...
aber das ist eine ganz andere Geschichte.... :oops:

\1\ Auszug Fußnote
Permission to make digital / hard copy of part or all of this work for personal or classroom use
is granted without fee provided that the copies are not made or distributed for profit or
commercial advantage, the copyright notice, the title of the publication, and its date appear,
and notice is given that copying is by permission of the ACM, Inc. To copy otherwise, to
republish, to post on servers, or to redistribute to lists, requires prior specific permission
and / or a fee.

\2\ Auszug Source
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The names of its contributors may not be used to endorse or promote
products derived from this software without specific prior written
permission.
Mostly running PureBasic <latest stable version and current alpha/beta> (x64) on Windows 11 Home
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Mersenne Twister Zufallsgenerator - Frage zur Lizenz

Beitrag von STARGÅTE »

Axolotl hat geschrieben: 10.12.2021 13:29 Eigentlich ist jeder Programmierer verpflichtet die richtige Anwendung sowie die Kompatibilität der Lizenzen zu prüfen.
Man kann sich auch nicht darauf berufen, dass jemand vor einem in der Wertschöpfungskette sich nicht dran gehalten hat.
Eine Pflichtverletzung wirkt auf alle folgenden Rechtsgeschäfte.
Da gebe ich dir recht. Aber gerade als "normaler" Nutzer der PHP Sprache wäre ich nie auf die Idee gekommen,
bei der Verwendung von mt_rand() eine entsprechende Copyright-Notiz in mein Impressum aufzunehmen.
Wie auch, an der entsprechenden Stelle in der Dokumentation von mt_rand() ist dort auch kein Hinweis gegeben.
Mir ist aber durchaus klar, das das Ursprungs-Copyright nicht einfach verschwinden kann, nur weil man den Algorithmus in eine neue Hülle packt.
Axolotl hat geschrieben: 10.12.2021 13:29Eigentlich ist jeder Programmierer verpflichtet die richtige Anwendung sowie die Kompatibilität der Lizenzen zu prüfen.
Man kann sich auch nicht darauf berufen, dass jemand vor einem in der Wertschöpfungskette sich nicht dran gehalten hat.
Eine Pflichtverletzung wirkt auf alle folgenden Rechtsgeschäfte.
Das ist richtig. Aber wie kann ich mich bei einem nicht-open-souce Sprache, w.z.B. PureBasic, darauf verlassen, dass alle Lizenzen ordnungsgemäß deklariert wurde. Denn nachprüfen kann ich es ja schlecht, schon gar nicht, wenn im nicht-offenen Source code selbst "einfach" Codes reinkopiert wurden. Die Prüfung ist hier doch gar nicht möglich?
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
mk-soft
Beiträge: 3701
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Mersenne Twister Zufallsgenerator - Frage zur Lizenz

Beitrag von mk-soft »

Prüfen kannst du dieses nicht, aber die Dritt Lizenzen must du mit weitergeben.
Siehe PB-Hilfe: Rechtliche Informationen
Hier must du Fred vertrauen das die Lizenzen aktualisiert sind.

Ich gebe aber meisten nur die Lizenzen an, für die Komponenten, die ich auch in der Application auch verwende.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Axolotl
Beiträge: 150
Registriert: 31.12.2008 16:34

Re: Mersenne Twister Zufallsgenerator - Frage zur Lizenz

Beitrag von Axolotl »

Hi STARGATE,
Ich weiß, was Du meinst und wahrscheinlich hätte man in einem Rechtsstreit auch gute Chancen.
Ein Kläger (hier nur derjenige, der entsprechende Rechte hat, also der (Mit-)Autor) muss ja auch beweisen können, dass sein Code verwendet wurde.
Hierfür kommen dann ähnliche Tools wie BlackDuck zum Einsatz.
Wenn dann die Theorie auf die Praxis trifft, also es wirklich zu einem Rechtsstreit käme, dann spielen auch noch so Themen wie Fahrlässigkeit oder Vorsatz eine Rolle. Z.B. als Frage: "Wie konnte der Proggi eigentlich wissen, dass...."
Wenn Du da jetzt alles angibst, was dir bekannt ist, dann haste das dir mögliche auch getan....

Bei 'Closed Source' hat man ja auch noch den Lieferanten als Vertragspartner. Hier kann man mit entsprechenden Einkaufsbedingungen gegensteuern.
Z.B.: §X. Freistellung von Rechten Dritter, Garantieren von Freiheit von Open Source (habe ich schon gesehen...), Strafen im Falle des Falles, usw.

Das Gute bei Open Source ist, dass die meisten Leute hier gar nicht so unentspannt sind. Ausser (s.Beispiel letzer Post) man will das zum Geschäftsmodell machen.
Mostly running PureBasic <latest stable version and current alpha/beta> (x64) on Windows 11 Home
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Mersenne Twister Zufallsgenerator - Frage zur Lizenz

Beitrag von Sicro »

Schön zu sehen, dass sich hier immer mehr Leute mit Urheberrecht und Lizenzen beschäftigen.
STARGÅTE hat geschrieben: 10.12.2021 01:40Müssen diese Erzeugnisse dann auch auf den Lizenztext des Mersenne Twister Verfahrens entsprechend hinweisen?
Soweit ich weiß nicht. Ich sehe keine ausreichende Ähnlichkeit zwischen dem C-Code und dem PHP-Code der Implementierung des Mersenne Twister Algorithmus (Reinraum-Implementierung) und somit müsste das Urheberrecht bei PHP liegen. Algorithmen sind meines Wissens nicht urheberrechtlich geschützt.
STARGÅTE hat geschrieben: 10.12.2021 01:40Wäre es beim Erzeugen einer Zufallsmap mit wiederverwertbarem Seed nicht ratsam lieber "Mersenne Twister" (+ Lizenzhinweis ? ! ) zu nutzen, als sich auf das PB Random() und RandomSeed() zu verlassen, was theoretisch jederzeit verändert werden könnte?
Ich denke nicht, dass Fred so eine problematische Änderung durchführen wird. Falls doch, sollte er die Funktionen mit einem Parameter ergänzen, der es ermöglicht, zur vorherigen Funktionsweise umzuschalten. Hier im Forum wird es sicherlich dann auch Leute geben, die Module schreiben, die die alten Funktionen zur Verfügung stellen.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Mersenne Twister Zufallsgenerator - Frage zur Lizenz

Beitrag von STARGÅTE »

Sicro hat geschrieben: 11.12.2021 12:36 Schön zu sehen, dass sich hier immer mehr Leute mit Urheberrecht und Lizenzen beschäftigen.
STARGÅTE hat geschrieben: 10.12.2021 01:40Müssen diese Erzeugnisse dann auch auf den Lizenztext des Mersenne Twister Verfahrens entsprechend hinweisen?
Soweit ich weiß nicht. Ich sehe keine ausreichende Ähnlichkeit zwischen dem C-Code und dem PHP-Code der Implementierung des Mersenne Twister Algorithmus (Reinraum-Implementierung) und somit müsste das Urheberrecht bei PHP liegen. Algorithmen sind meines Wissens nicht urheberrechtlich geschützt.
(Ah ich sehe, du hast dein Post noch mal editiert gegenüber heute Mittag)
Interessante Interpretation die du da jetzt anbringst. Ich stimme zu, dass der PHP-Source-Code nicht den original Code von Matsumoto und Nishimura enthält, sondern nur deren Idee des Algorithmus. Allerdings ist es auch nicht so, das PHP den original Algo aus der Veröffentlichung umgesetzt hat, sondern ganz explizite Verbesserungen aus dem C-Code übernommen hat.
Für mich ist das alles immer noch sehr undurchsichtig, an welche Regeln man sich da rein rechtlich halten muss. Das man als Programmierer bestimmte Erstautoren nennt, ist ja selbstverständlich, aber wenn's dann an ein Produkt geht, vllt noch kommerziell ...
Sicro hat geschrieben: 11.12.2021 12:36
STARGÅTE hat geschrieben: 10.12.2021 01:40Wäre es beim Erzeugen einer Zufallsmap mit wiederverwertbarem Seed nicht ratsam lieber "Mersenne Twister" (+ Lizenzhinweis ? ! ) zu nutzen, als sich auf das PB Random() und RandomSeed() zu verlassen, was theoretisch jederzeit verändert werden könnte?
Ich denke nicht, dass Fred so eine problematische Änderung durchführen wird. Falls doch, sollte er die Funktionen mit einem Parameter ergänzen, der es ermöglicht, zur vorherigen Funktionsweise umzuschalten. Hier im Forum wird es sicherlich dann auch Leute geben, die Module schreiben, die die alten Funktionen zur Verfügung stellen.
Naja, Fred schrieb 2003: "It was a similar thread about this random routine and the best for you if you want crossplatform random is to rewrite your own [...] as the PB one can change without any notices for speed/size reason so it will break the compatibility."
2005 wurde Random() dann in der MacOS Version geändert um die gleichen Zahlen zu erzeugen wie in Win/Linux. (was ja gut ist!)
2012 schreibt freak dann wiederum: "It produces the same output on all OS and processor types. The algorithm also didn't change in any PB version so far and I see no reason why it should in any future one."
Trotzdem habe ich aktuell ein Problem mit Quads, weil ich die in x86 nicht in einem Random() nutzen kann, aber unter x64, obwohl PureBasic intern immer einen Block von 8 Byte erzeugt, denn ich kann z.B. ein Random() jederzeit durch ein RandomData(@Quad, 8) ersetzen, ohne das sich die nachfolgenden Zahlen ändern.
Nur wie ich unter x86 aus RandomData(@Quad, 8) eine Zahl für Random(Quad) bekomme, weiß ich nicht.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Mersenne Twister Zufallsgenerator - Frage zur Lizenz

Beitrag von Sicro »

STARGÅTE hat geschrieben: 11.12.2021 18:15 (Ah ich sehe, du hast dein Post noch mal editiert gegenüber heute Mittag)
Interessante Interpretation die du da jetzt anbringst. Ich stimme zu, dass der PHP-Source-Code nicht den original Code von Matsumoto und Nishimura enthält, sondern nur deren Idee des Algorithmus.
Ja, zuerst habe ich geschrieben, dass wenn urheberrechtlich geschützter Code in einer anderen Programmiersprache neu geschrieben wird, ist der neue Code ein komplett neues Werk (keine Ableitung des Original-Codes), somit ist kein Urheberrecht des originalen Codes mehr vorhanden. Als ich danach noch etwas darüber nachgedacht habe, stellte ich fest, dass es komplizierter ist. Es kann nämlich sein, dass im neugeschriebenen Code umfangreiche Ähnlichkeiten zum originalen Code vorhanden sind, die die urheberrechtliche Schöpfungshöhe erreichen, wodurch der Urheber des originalen Codes auch im neuem Code teilweise Urheberrecht hat.
STARGÅTE hat geschrieben: 11.12.2021 18:15 Allerdings ist es auch nicht so, das PHP den original Algo aus der Veröffentlichung umgesetzt hat, sondern ganz explizite Verbesserungen aus dem C-Code übernommen hat.
Ok, vielleicht ist das dann schon ausreichend für die Schöpfungshöhe und der PHP-Code ist dann wirklich ein abgeleitetes Werk.
STARGÅTE hat geschrieben: 11.12.2021 18:15 Für mich ist das alles immer noch sehr undurchsichtig, an welche Regeln man sich da rein rechtlich halten muss. Das man als Programmierer bestimmte Erstautoren nennt, ist ja selbstverständlich, aber wenn's dann an ein Produkt geht, vllt noch kommerziell ...
Eine Übersetzung von einem Text von Deutsch zu Englisch, ist ein abgeleitetes Werk, wodurch es nun zwei Urheber gibt: Der Urheber des originalen, deutschen Textes und der Urheber der Übersetzung.

Eine Verfilmung eines Buches ist auch ein abgeleitetes Werk.

Es ist schwierig zu bestimmen, wann ein Werk nicht mehr als abgeleitetes Werk betrachtet wird, denn dafür müsste man wissen, wann die Schöpfungshöhe vom originalen Werk im neuem Werk nicht mehr erreicht wird.

Hier noch eine - wie ich finde - sehr gute Internetseite, die das Thema "abgeleitetes Werk" ausführlich und einfach verständlich erklärt:
https://commons.wikimedia.org/wiki/Comm ... e_works/de

Am einfachsten ist es, einfach das neue Werk als abgeleitetes Werk zu betrachten, auch wenn das möglicherweise mehr zutrifft.

Für rechtssichere Auskunft bleibt, wie immer nur der Weg zu einem Anwalt, der darauf spezialisiert ist.
STARGÅTE hat geschrieben: 11.12.2021 18:15 Naja, Fred schrieb 2003: "It was a similar thread about this random routine and the best for you if you want crossplatform random is to rewrite your own [...] as the PB one can change without any notices for speed/size reason so it will break the compatibility."
2005 wurde Random() dann in der MacOS Version geändert um die gleichen Zahlen zu erzeugen wie in Win/Linux. (was ja gut ist!)
2012 schreibt freak dann wiederum: "It produces the same output on all OS and processor types. The algorithm also didn't change in any PB version so far and I see no reason why it should in any future one."
Danke für diese Informationen. Die Algorithmen sollten nicht so leichtfertig geändert werden, vor allem nicht "without any notices". Gut zu wissen, dass die Random-Funktionen unter verschiedenen OS gleiche Ergebnisse liefern.
STARGÅTE hat geschrieben: 11.12.2021 18:15 Trotzdem habe ich aktuell ein Problem mit Quads, weil ich die in x86 nicht in einem Random() nutzen kann, aber unter x64, obwohl PureBasic intern immer einen Block von 8 Byte erzeugt, denn ich kann z.B. ein Random() jederzeit durch ein RandomData(@Quad, 8) ersetzen, ohne das sich die nachfolgenden Zahlen ändern.
Nur wie ich unter x86 aus RandomData(@Quad, 8) eine Zahl für Random(Quad) bekomme, weiß ich nicht.

Code: Alles auswählen

Procedure.q RandomQ(maxValue.q)
  Protected.q result
  
  RandomData(@result, SizeOf(Quad))
  result = result % maxValue
  
  If result < 0
    result = -result
  EndIf
  
  ProcedureReturn result
EndProcedure
?

Erstelle für diese Frage besser einen neuen Thread.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Mersenne Twister Zufallsgenerator - Frage zur Lizenz

Beitrag von STARGÅTE »

@Sicro:
Deine Random-Funktion achtet leider nicht auf die Gleichverteilung der Zahlen.
Ich hatte hier aber schon meine RandomQuad() Version gepostet:
https://www.purebasic.fr/english/viewto ... 32#p578232
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Mersenne Twister Zufallsgenerator - Frage zur Lizenz

Beitrag von Sicro »

STARGÅTE hat geschrieben: 19.12.2021 00:30 Deine Random-Funktion achtet leider nicht auf die Gleichverteilung der Zahlen.
Dachte ich mir schon, dass es nicht so einfach ist.
STARGÅTE hat geschrieben: 19.12.2021 00:30 Ich hatte hier aber schon meine RandomQuad() Version gepostet:
https://www.purebasic.fr/english/viewto ... 32#p578232
Ah ok, wusste ich nicht.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Antworten