Restrinja el tamaño del clúster con un módulo de código cerrado en otro programa de código abierto


10

Trabajo en un instituto de investigación académica que depende en gran medida de la informática de alto rendimiento. En los 10 años, hemos desarrollado nuestro propio código Fortran, que está muy bien considerado y puede ejecutarse en clústeres muy grandes. Para que la comunidad de investigación más grande se beneficie del código, estamos considerando hacerlo de código abierto. Sin embargo, dado que nuestra financiación depende en gran medida de la investigación que podamos realizar con el código, estaríamos disparándonos en el pie.

Una de las ideas es limitar la cantidad de CPU en las que se puede ejecutar el código, por ejemplo, un máximo de 1000 CPU en lugar de las 100,000 que usamos. De esa forma, la comunidad de investigación global puede beneficiarse del código, pero tendríamos una ventaja sobre el tamaño de los problemas que podemos resolver.

¿Es tal característica conceptualmente posible? ¿Y cómo podría implementarse tal característica? Esencialmente, nos gustaría abrir el código completo, pero limitar la paralelización (usando MPI) a un número fijo de subprocesos MPI, por ejemplo, usando un módulo (de código cerrado).


¿Qué haría exactamente ese módulo de código cerrado? ¿Qué tan difícil sería para alguien más volver a implementarlo?
svick

Respuestas:


16

Está tratando de permitir que la comunidad de investigación se beneficie al hacer que puedan hacer lo que usted hace, sin que ellos puedan hacer lo que usted hace. Parece que todavía no has hecho una elección de principios.

Es probable que las soluciones de software como las del software de código abierto no funcionen: el código es de código abierto, después de todo. Lo primero que harán otras instituciones es extraer el bit de fuente cerrada, reemplazarlo por un bit de fuente abierta sin esa limitación, y luego todos lo usarán.

No podría ser un compromiso posible: no de código abierto del software, pero las licencias de venta. Las instituciones con licencias también tienen derecho a leer y modificar el código, pero no a distribuirlo. Cargar anualmente. De esa manera, tal vez pueda compensar la pérdida de fondos tomando algunos de los suyos.

Otra opción es lanzar una versión anterior, que mantengas actualizada pero siempre retrasada por varios años. Sin embargo, una comunidad de código abierto podría asumir el proyecto y desarrollar nuevas características más rápido que usted (o tal vez no; la mayoría de las personas sobreestiman el interés que otros tienen en su software).

O simplemente suéltelo y haga uso del trabajo que otros hacen en él. Siempre serás los mejores expertos en el software.


4

Esto realmente no se puede hacer.

La idea detrás del código abierto es que el código abierto es , en otras palabras, las personas tendrán acceso a él. De Wikipedia :

En producción y desarrollo, el código abierto como modelo de desarrollo promueve un acceso universal a través de una licencia gratuita al diseño o modelo de un producto, y la redistribución universal de ese diseño o modelo, incluidas las mejoras posteriores de cualquier persona.

Al proporcionar acceso universal al diseño o modelo, incluso si la versión lanzada se limita solo a 1000 núcleos, sería bastante fácil simplemente cambiar ese número a 100000 o algo así.


Aquí hay algunas opciones de lo que podría hacer en su lugar:

  • Considere liberar el código bajo una licencia que restringe a los usuarios de su código
  • Libere una biblioteca API de código cerrado que permita a otros investigadores obtener su funcionalidad sin tener acceso al código en sí.

Correcto. Si coloca el código allí para decir "verifique el número de CPU y no use más de X de ellas", cualquier otra persona puede revisar su código abierto, eliminar ese control y volver a compilar.

4

Es muy poco lo que puede hacer para limitar lo que otros harán con su código fuente. Pueden crear otro módulo desde cero que pueda desbloquear la capacidad de multiprocesamiento, o incluso mejorarlo: les costará tiempo y experiencia, pero si es importante para ellos, lo harán.

Con diez años de ventaja, aún tiene la oportunidad de usar su experiencia y conocimiento del código para continuar haciendo la mejor investigación, incluso si le da a otros el código fuente que les permite replicar sus experimentos. Sus financiadores pueden incluso tener más razones para acudir a usted, ya que el impacto de su investigación puede ser mayor si usted es líder de un proyecto de código abierto que se utiliza en varias universidades.

En lugar de código abierto, puede intentar restringir a otros legalmente, publicando su fuente pero poniendo restricciones de propiedad en la licencia fuente. Puedo pensar en varios proyectos que han hecho esto: Ghostscript, AT&T Unix, Microsoft .NET y Xerox PARC Smalltalk-80. Si bien esos finalmente se convirtieron en código abierto, espero que haya otros menos conocidos que aún imponen restricciones sobre cómo los licenciatarios usan el código fuente. Por supuesto, aunque publicar su fuente significará que aquellos con menos respeto por la ley pueden violar los términos, esto debería evitar que los investigadores académicos de buena fe ejecuten su código en supercomputadoras tan poderosas como la suya.



@musiKk En 2002, la bifurcación Rotor del núcleo de .NET comenzó como 'fuente compartida' patentada , pero mucho más recientemente se publicaron grandes partes de la fuente comercial bajo una licencia de referencia , y luego, en la versión 4.6, de código abierto . No me di cuenta de lo complejos que son los arreglos para compartir fuentes de Microsoft .
dcorking

1
Realmente hiciste que mi corazón saltara. Pensé que saqué una respuesta de 13 años. No importa que SO se lanzó en 2008 ... Bastante justo entonces.
musiKk
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.