Ограничьте размер кластера с помощью модуля с закрытым исходным кодом в другой программе с открытым исходным кодом

10

Я работаю в научно-исследовательском институте, сильно зависящем от высокопроизводительных вычислений. За 10 лет мы разработали наш собственный код на Фортране, который очень хорошо ценится и может работать на очень больших кластерах. Для того, чтобы более широкое исследовательское сообщество получило пользу от кода, мы рассматриваем возможность сделать его открытым исходным кодом. Однако, поскольку наше финансирование в значительной степени зависит от исследований, которые мы можем выполнить с помощью кода, мы бы как бы стреляли себе в ногу.

Одна из идей состоит в том, чтобы ограничить количество процессоров, на которых может выполняться код, например, максимум 1000 процессоров вместо 100 000, которые мы используем. Таким образом, глобальное исследовательское сообщество может извлечь выгоду из кода, но у нас будет преимущество в размере проблем, которые мы можем выполнить.

Возможна ли такая особенность концептуально? И как можно реализовать такую ​​функцию? По сути, мы хотели бы открыть полный код с открытым исходным кодом, но ограничить распараллеливание (используя MPI) фиксированным числом потоков MPI, например, используя модуль (с закрытым исходным кодом).

P314402
источник
Что именно будет делать этот модуль с закрытым исходным кодом? Насколько сложно было бы кому-то еще это реализовать?
svick

Ответы:

16

Вы пытаетесь дать пользу сообществу исследователей, позволяя им делать то, что вы делаете, не позволяя им делать то, что вы делаете. Похоже, вы еще не сделали принципиальный выбор.

Подобные программные решения в программном обеспечении с открытым исходным кодом вряд ли будут работать: в конце концов, код с открытым исходным кодом. Первое, что сделают другие учреждения, это вырвет бит с закрытым исходным кодом, заменит его битом с открытым исходным кодом без такого ограничения, и тогда все будут его использовать.

Там может быть компромисс возможно: не с открытым исходным кодом программного обеспечения, но лицензии продают. Учреждения с лицензиями также получают право читать и изменять код, но не распространять его. Зарядка на ежегодной основе. Таким образом, вы можете восполнить потери в финансировании, взяв некоторые из них.

Другой вариант - выпустить более старую версию, которую вы постоянно обновляете, но всегда отстаете на несколько лет. Тем не менее, сообщество разработчиков программного обеспечения с открытым исходным кодом может взяться за проект и разработать новые функции быстрее, чем вы (или нет); большинство людей переоценивают интерес других к их программному обеспечению).

Или просто выпустите это и используйте работу, которую другие делают над этим. Вы всегда будете лучшими экспертами по программному обеспечению.

RemcoGerlich
источник
4

Это не может быть сделано на самом деле.

Идея открытого исходного кода заключается в том, что источник является открытым , иными словами, люди будут иметь к нему доступ. Из Википедии :

В производстве и разработке открытый исходный код как модель разработки обеспечивает универсальный доступ через бесплатную лицензию к дизайну или проекту продукта, а также универсальное распространение этого дизайна или проекта, включая последующие улучшения его кем-либо.

Предоставляя универсальный доступ к дизайну или проекту, даже если выпущенная версия ограничена только 1000 ядрами, было бы очень просто просто изменить это число на 100000 или что-то еще.


Вот несколько вариантов того, что вы могли бы сделать вместо этого:

  • Рассмотрите возможность выпуска кода по лицензии, которая ограничивает пользователей вашего кода.
  • Выпустите библиотеку API с закрытым исходным кодом, которая позволит другим исследователям получить вашу функциональность, не имея доступа к самому коду.
durron597
источник
Правильный. Если вы добавите туда код, который скажет «проверьте количество процессоров и не используете должным образом больше, чем X», кто-нибудь другой может прочесать ваш открытый исходный код, снять эту проверку и перекомпилировать.
4

Вы можете сделать очень мало, чтобы ограничить то, что другие будут делать с вашим исходным кодом. Они могут создать еще один модуль с нуля, который может разблокировать многопроцессорность или даже улучшить ее: это потребует времени и опыта, но если это важно для них, они это сделают.

С началом работы в течение десяти лет у вас все еще есть возможность использовать свой опыт и знания кода, чтобы продолжать проводить лучшие исследования, даже если вы даете другим исходный код, который позволяет им повторить ваши эксперименты. У ваших спонсоров может быть даже больше причин обратиться к вам, поскольку ваше влияние на исследования может быть больше, если вы являетесь руководителем проекта с открытым исходным кодом, который используется в нескольких университетах.

Вместо открытого исходного кода вы можете попытаться ограничить других на законных основаниях, опубликовав свой источник, но наложив собственные ограничения на исходную лицензию. Я могу вспомнить несколько проектов, которые сделали это: Ghostscript, AT & T Unix, Microsoft .NET и Xerox PARC Smalltalk-80. В то время как те в конечном итоге стали полностью открытыми, я ожидаю, что есть и другие, менее известные, которые все еще накладывают ограничения на то, как лицензиаты используют исходный код. Конечно, хотя публикация вашего источника будет означать, что люди с меньшим уважением к закону могут нарушать условия, это должно помешать добросовестным ученым-исследователям запускать ваш код на суперкомпьютерах так же мощно, как и ваш.

dcorking
источник
@musiKk В 2002 году ветвь Rotor ядра .NET начиналась как частный «общий источник» , но в последнее время значительная часть коммерческого источника была опубликована под ссылочной лицензией , а затем, в версии 4.6, полностью открытым исходным кодом. , Я не понимал, насколько сложны договоренности об обмене источниками в Microsoft .
dcorking
1
Ты действительно заставил мое сердце подпрыгнуть. Я думал, что выкопал 13-летний ответ. Не берите в голову, что SO был запущен в 2008 году ... Достаточно справедливо тогда.
musiKk