Limita le dimensioni del cluster con il modulo closed-source nel programma altrimenti open-source

10

Lavoro in un istituto di ricerca accademico strongmente dipendente dal calcolo ad alte prestazioni. Nei 10 anni abbiamo sviluppato il nostro codice Fortran che è molto ben visto e può funzionare su cluster molto grandi. Per fare in modo che la comunità di ricerca più ampia tragga beneficio dal codice, stiamo pensando di renderlo open source. Tuttavia, dato che il nostro finanziamento dipende in gran parte dalla ricerca che possiamo eseguire con il codice, saremmo in grado di spararci ai piedi.

Una delle idee è limitare il numero di CPU su cui il codice può essere eseguito, ad es. massimo 1000 CPU invece dei 100.000 che usiamo. In questo modo la comunità di ricerca globale può trarre vantaggio dal codice, ma avremmo un vantaggio sulla dimensione dei problemi che possiamo eseguire.

Questa caratteristica è concettualmente possibile? E come potrebbe essere implementata una simile funzionalità? Essenzialmente vorremmo aprire il codice completo, ma limitare la parallelizzazione (usando MPI) ad un numero fisso di thread MPI, per esempio usando un modulo (closed-source).

    
posta P314402 20.03.2015 - 14:32
fonte

3 risposte

16

Stai cercando di far beneficiare la comunità di ricerca facendo in modo che siano in grado di fare ciò che fai, senza che siano in grado di fare ciò che fai. Sembra che tu non abbia ancora fatto una scelta di principio.

È improbabile che soluzioni software come quella del software open source funzionino: il codice è open source, dopo tutto. La prima cosa che faranno le altre istituzioni è estrarre il bit sorgente chiuso, sostituirlo con un bit open source senza una tale limitazione, e poi tutti lo useranno.

potrebbe essere un compromesso possibile: non aprire il software, ma vendere licenze. Gli istituti con licenze hanno anche il diritto di leggere e modificare il codice, ma non di distribuirlo. Carica su base annuale. In questo modo puoi forse compensare la perdita dei fondi prendendo alcuni dei loro.

Un'altra opzione è quella di rilasciare una versione precedente, che si mantiene aggiornata ma sempre in ritardo di alcuni anni. Tuttavia, una comunità open source potrebbe intraprendere il progetto e sviluppare nuove funzionalità più velocemente di te (o potrebbe non esserlo, la maggior parte delle persone sopravvaluta l'interesse che altri hanno nel proprio software).

O semplicemente rilascialo e sfrutta il lavoro che gli altri fanno su di esso. Sarai sempre i migliori esperti del software.

    
risposta data 20.03.2015 - 14:45
fonte
4

Questo non può essere fatto veramente.

L'idea dietro l'open source è che la fonte è aperta , in altre parole, le persone avranno accesso ad essa. Da Wikipedia :

In production and development, open source as a development model promotes a universal access via a free license to a product's design or blueprint, and universal redistribution of that design or blueprint, including subsequent improvements to it by anyone.

Fornendo accesso universale al progetto o al progetto, anche se la versione rilasciata è limitata a soli 1000 core, sarebbe abbastanza semplice cambiare quel numero in 100000 o qualcosa di simile.

Ecco alcune opzioni su cosa potresti fare invece:

  • Prendi in considerazione la possibilità di rilasciare il codice sotto una licenza che limita gli utenti del tuo codice
  • Rilasciare una libreria API closed source che consente ad altri ricercatori di ottenere le tue funzionalità senza avere accesso al codice stesso.
risposta data 20.03.2015 - 14:44
fonte
4

C'è ben poco che puoi fare per limitare ciò che altri faranno con il tuo codice sorgente. Possono creare un nuovo modulo da zero che possa sbloccare la capacità di multiprocessing o addirittura migliorarlo: costerà tempo e competenza, ma se è importante per loro, lo faranno.

Con dieci anni di vantaggio, hai ancora l'opportunità di utilizzare la tua esperienza e conoscenza del codice per continuare a fare la ricerca migliore, anche se dai ad altri il codice sorgente che consente loro di replicare i tuoi esperimenti. I finanziatori potrebbero anche avere più motivi per rivolgersi a te, dato che il tuo impatto sulla ricerca potrebbe essere maggiore se sei leader di un progetto open source utilizzato in diverse università.

Invece di open source, puoi provare a limitare gli altri legalmente, pubblicando la tua fonte ma mettendo restrizioni proprietarie sulla licenza di origine. Posso pensare a diversi progetti che hanno fatto questo: Ghostscript, AT & T Unix, Microsoft .NET e Xerox PARC Smalltalk-80. Mentre quelli alla fine sono diventati completamente open source, mi aspetto che ce ne siano altri meno noti che ancora impongono restrizioni su come i licenziatari usano il codice sorgente. Ovviamente, mentre pubblichi la tua fonte vorrà dire che coloro che hanno meno rispetto della legge potrebbero infrangere i termini, dovrebbe tenere in buona fede i ricercatori accademici dall'eseguire il tuo codice su supercomputer potenti come i tuoi.

    
risposta data 20.03.2015 - 14:48
fonte

Leggi altre domande sui tag