Beschränken Sie die Clustergröße mit dem Closed-Source-Modul in einem ansonsten Open-Source-Programm

10

Ich arbeite in einem akademischen Forschungsinstitut, das stark vom Hochleistungsrechnen abhängig ist. In den 10 Jahren haben wir unseren eigenen Fortran-Code entwickelt, der sehr angesehen ist und auf sehr großen Clustern ausgeführt werden kann. Damit die größere Forschungsgemeinschaft von dem Code profitieren kann, erwägen wir, ihn Open Source zu machen. Da unsere Finanzierung jedoch stark von der Forschung abhängt, die wir mit dem Code durchführen können, würden wir uns selbst in den Fuß schießen.

Eine der Ideen besteht darin, die Anzahl der CPUs zu begrenzen, auf denen der Code ausgeführt werden kann, z. B. maximal 1000 CPUs anstelle der 100.000, die wir verwenden. Auf diese Weise kann die globale Forschungsgemeinschaft von dem Code profitieren, aber wir hätten einen Vorteil hinsichtlich der Größe der Probleme, die wir ausführen können.

Ist eine solche Funktion konzeptionell möglich? Und wie könnte eine solche Funktion implementiert werden? Im Wesentlichen möchten wir den gesamten Code als Open Source-Code verwenden, die Parallelisierung (mithilfe von MPI) jedoch auf eine feste Anzahl von MPI-Threads beschränken, z. B. mithilfe eines Moduls (Closed Source).

P314402
quelle
Was genau würde dieses Closed-Source-Modul tun? Wie schwer wäre es für jemand anderen, es erneut umzusetzen?
Svick

Antworten:

16

Sie versuchen, die Forschungsgemeinschaft davon profitieren zu lassen, indem sie in der Lage ist, das zu tun, was Sie tun, ohne dass sie das können, was Sie tun. Das hört sich so an, als hätten Sie noch keine prinzipielle Entscheidung getroffen.

Solche Softwarelösungen in Open Source-Software funktionieren wahrscheinlich nicht: Der Code ist schließlich Open Source. Das erste, was andere Institutionen tun werden, ist, das Closed-Source-Bit herauszureißen, es ohne eine solche Einschränkung durch ein Open-Source-Bit zu ersetzen, und dann wird das jeder verwenden.

Es könnte ein Kompromiss möglich sein: Ist die Software nicht Open Source, sondern verkaufen Lizenzen. Institutionen mit Lizenzen haben auch das Recht, den Code zu lesen und zu ändern, ihn jedoch nicht zu verbreiten. Jährliche Gebühr. Auf diese Weise können Sie den Finanzierungsverlust möglicherweise ausgleichen, indem Sie einige von ihnen nehmen.

Eine andere Möglichkeit besteht darin, eine ältere Version zu veröffentlichen, die Sie auf dem neuesten Stand halten, aber immer um einige Jahre zurückbleiben. Eine Open-Source-Community nimmt das Projekt jedoch möglicherweise auf und entwickelt neue Funktionen schneller als Sie (oder auch nicht; die meisten Leute überschätzen das Interesse anderer an ihrer Software).

Oder lassen Sie es einfach los und nutzen Sie die Arbeit, die andere daran machen. Sie werden immer die Top-Experten für die Software sein.

RemcoGerlich
quelle
4

Das kann man nicht wirklich machen.

Die Idee hinter Open Source ist, dass die Quelle offen ist , mit anderen Worten, Menschen haben Zugriff darauf. Aus Wikipedia :

In der Produktion und Entwicklung fördert Open Source als Entwicklungsmodell einen universellen Zugriff über eine kostenlose Lizenz auf das Design oder den Entwurf eines Produkts und die universelle Umverteilung dieses Designs oder Entwurfs, einschließlich nachfolgender Verbesserungen durch jedermann.

Durch die Bereitstellung eines universellen Zugriffs auf das Design oder den Entwurf wäre es recht einfach, diese Zahl einfach in 100000 oder so zu ändern, selbst wenn die veröffentlichte Version nur auf 1000 Kerne beschränkt ist.


Hier sind einige Optionen, was Sie stattdessen tun könnten:

  • Erwägen Sie, den Code unter einer Lizenz freizugeben, die die Benutzer Ihres Codes einschränkt
    • In der Praxis ist dies schwierig, da Sie nicht wirklich kontrollieren können, ob andere die Bedingungen Ihrer Lizenz befolgen, wenn diese Ihre Hände verlässt
    • Wenn Sie sich für diesen Weg entscheiden, wenden Sie sich an einen Anwalt. Rechtsberatung ist beim Programmier-Stack-Austausch kein Thema
  • Geben Sie eine Closed-Source-API-Bibliothek frei, mit der andere Forscher Ihre Funktionen nutzen können, ohne auf den Code selbst zugreifen zu müssen.
durron597
quelle
Richtig. Wenn Sie dort Code eingeben, der besagt, dass "Anzahl der CPUs überprüfen und nicht mehr als X ordnungsgemäß verwenden", kann jeder andere Benutzer Open Source durchsuchen, diese Überprüfung entfernen und neu kompilieren.
4

Sie können nur sehr wenig tun, um zu begrenzen, was andere mit Ihrem Quellcode tun. Sie können ein weiteres Modul von Grund auf neu erstellen, das die Multiprozessor-Funktion freischalten oder sogar verbessern kann: Es kostet Zeit und Fachwissen, aber wenn es ihnen wichtig ist, werden sie es tun.

Mit einem Vorsprung von zehn Jahren haben Sie immer noch die Möglichkeit, Ihre Erfahrung und Ihr Wissen über den Code zu nutzen, um weiterhin die beste Forschung zu betreiben, selbst wenn Sie anderen den Quellcode geben, mit dem sie Ihre Experimente replizieren können. Ihre Geldgeber haben möglicherweise sogar mehr Gründe, sich an Sie zu wenden, da Ihre Auswirkungen auf die Forschung möglicherweise größer sind, wenn Sie Leiter eines Open-Source-Projekts sind, das an mehreren Universitäten eingesetzt wird.

Anstelle von Open Source können Sie versuchen, andere rechtlich einzuschränken, indem Sie Ihre Quelle veröffentlichen, die Quelllizenz jedoch proprietär einschränken. Ich kann mir mehrere Projekte vorstellen, die dies getan haben: Ghostscript, AT & T Unix, Microsoft .NET und Xerox PARC Smalltalk-80. Während diese letztendlich vollständig Open Source waren, gehe ich davon aus, dass es andere weniger bekannte gibt, die die Verwendung des Quellcodes durch Lizenznehmer immer noch einschränken. Während die Veröffentlichung Ihrer Quelle bedeutet, dass Personen mit weniger Respekt vor dem Gesetz möglicherweise gegen die Bestimmungen verstoßen, sollte dies natürlich dazu führen, dass gutgläubige akademische Forscher Ihren Code nicht auf Supercomputern ausführen, die so leistungsfähig sind wie Ihre.

entkorken
quelle
@musiKk Im Jahr 2002 startete die Rotorgabel des Kerns von .NET als proprietäre "gemeinsam genutzte Quelle" . In jüngerer Zeit wurden jedoch große Teile der kommerziellen Quelle unter einer Referenzlizenz veröffentlicht und dann in Version 4.6 vollständig als Open Source veröffentlicht . Mir war nicht klar, wie komplex die Vereinbarungen zur gemeinsamen Nutzung von Quellen durch Microsoft sind .
dcorking
1
Du hast wirklich mein Herz höher schlagen lassen. Ich dachte, ich hätte eine 13 Jahre alte Antwort ausgegraben. Egal, dass SO im Jahr 2008 eingeführt wurde ... Fair genug dann.
musiKk