Limitare le dimensioni del cluster con il modulo di origine chiusa in un programma altrimenti open source


10

Lavoro in un istituto di ricerca accademico fortemente dipendente dal calcolo ad alte prestazioni. In 10 anni abbiamo sviluppato il nostro codice Fortran che è molto apprezzato e può essere eseguito su cluster molto grandi. Per far sì che la più ampia comunità di ricerca tragga beneficio dal codice, stiamo valutando di renderlo open source. Tuttavia, poiché i nostri finanziamenti dipendono fortemente dalla ricerca che possiamo svolgere con il codice, saremmo in qualche modo sparati ai piedi.

Una delle idee è limitare il numero di CPU su cui può essere eseguito il codice, ad esempio un massimo di 1000 CPU anziché le 100.000 che utilizziamo. In questo modo la comunità di ricerca globale può beneficiare del codice, ma avremmo un vantaggio sulla dimensione dei problemi che possiamo affrontare.

Una tale caratteristica è concettualmente possibile? E come potrebbe essere implementata una tale funzionalità? In sostanza vorremmo open-source il codice completo, ma limitiamo la parallelizzazione (usando MPI) a un numero fisso di thread MPI, ad esempio usando un modulo (closed-source).


Cosa farebbe esattamente quel modulo a sorgente chiuso? Quanto sarebbe difficile per qualcun altro reimplementarlo?
svick

Risposte:


16

Stai cercando di far beneficiare la comunità di ricerca facendole riuscire a fare quello che fai, senza che siano in grado di fare quello che fai. Sembra che tu non abbia ancora fatto una scelta di principio.

Soluzioni software come quelle nel software open source non funzionano: dopo tutto, il codice è open source. La prima cosa che altre istituzioni faranno è estrarre il bit di codice chiuso, sostituirlo con un bit di codice open source senza tale limitazione, e quindi tutti lo useranno.

Ci potrebbe essere un compromesso: non open source del software, ma le licenze vendere. Anche gli enti con licenza ottengono il diritto di leggere e modificare il codice, ma non di distribuirlo. Carica su base annuale. In questo modo puoi forse compensare la perdita di finanziamenti prendendo alcuni dei loro.

Un'altra opzione è quella di rilasciare una versione precedente, mantenuta aggiornata ma 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 degli altri nei confronti del proprio software).

O semplicemente rilasciarlo e fare uso del lavoro che gli altri fanno su di esso. Sarai sempre il massimo esperto del software.


4

Questo non può davvero essere fatto.

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

Nella produzione e nello sviluppo, l'open source come modello di sviluppo promuove un accesso universale tramite una licenza gratuita alla progettazione o al progetto di un prodotto e la ridistribuzione universale di tale progettazione o modello, compresi i successivi miglioramenti ad esso da parte di chiunque.

Fornendo un accesso universale al design o al progetto, anche se la versione rilasciata è limitata a soli 1000 core, sarebbe abbastanza facile cambiare semplicemente quel numero in 100000 o qualcosa del genere.


Ecco alcune opzioni di cosa potresti fare invece:

  • Prendi in considerazione la possibilità di rilasciare il codice con una licenza che limita gli utenti del tuo codice
  • Rilascia una libreria API chiusa che consente ad altri ricercatori di ottenere le tue funzionalità senza avere accesso al codice stesso.

Corretta. Se inserisci il codice per dire "controlla il numero di CPU e non ne usi correttamente più di X" chiunque altro può controllare il tuo open source, rimuovere quel controllo e ricompilare.

4

C'è molto poco che puoi fare per limitare ciò che gli altri faranno con il tuo codice sorgente. Possono creare da zero un altro modulo in grado di sbloccare la capacità di elaborazione multipla o addirittura migliorarla: 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, poiché il tuo impatto sulla ricerca potrebbe essere maggiore se sei il leader di un progetto open source utilizzato in diverse università.

Invece di open source, puoi provare a limitare legalmente gli altri, pubblicando la tua fonte ma ponendo restrizioni proprietarie sulla licenza sorgente. Mi vengono in mente 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 pongono ancora delle restrizioni su come i licenziatari utilizzano il codice sorgente. Naturalmente, mentre pubblicare la tua fonte significherà che quelli con meno rispetto per la legge potrebbero infrangere i termini, dovrebbe impedire ai ricercatori accademici in buona fede di eseguire il tuo codice su supercomputer potenti come il tuo.



@musiKk Nel 2002, il fork di Rotor del core di .NET è iniziato come "fonte condivisa" proprietaria , ma molto più recentemente grandi parti della fonte commerciale sono state pubblicate con una licenza di riferimento e quindi, alla versione 4.6, completamente open source . Non mi rendevo conto di quanto siano complessi gli accordi di condivisione delle fonti di Microsoft .
Dal

1
Mi hai davvero fatto saltare il cuore. Pensavo di aver scoperto una risposta di 13 anni. Non importa che SO sia stato lanciato nel 2008 ... Abbastanza giusto allora.
musiKk,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.