Restringir o tamanho do cluster com o módulo de código fechado em outro programa de código aberto


10

Eu trabalho em um instituto de pesquisa acadêmica fortemente dependente da computação de alto desempenho. Nos 10 anos, desenvolvemos nosso próprio código Fortran, que é muito bem visto e pode ser executado em clusters muito grandes. Para que a grande comunidade de pesquisa se beneficie do código, estamos pensando em torná-lo de código aberto. No entanto, como nosso financiamento é altamente dependente da pesquisa que podemos realizar com o código, estaríamos meio que dando um tiro no pé.

Uma das idéias é limitar o número de CPUs em que o código pode ser executado, por exemplo, no máximo 1000 CPUs, em vez das 100.000 que usamos. Dessa forma, a comunidade global de pesquisa pode se beneficiar do código, mas estaríamos tendo uma vantagem no tamanho dos problemas que podemos executar.

Esse recurso é conceitualmente possível? E como esse recurso poderia ser implementado? Essencialmente, gostaríamos de código-fonte aberto do código completo, mas limitamos a paralelização (usando MPI) a um número fixo de encadeamentos MPI, por exemplo, usando um módulo (código-fonte fechado).


O que exatamente esse módulo de código fechado faria? Quão difícil seria para outra pessoa reimplementá-lo?
svick

Respostas:


16

Você está tentando deixar a comunidade de pesquisa se beneficiar, permitindo que eles façam o que você faz, sem que eles possam fazer o que você faz. Parece que você ainda não fez uma escolha de princípios.

É provável que soluções de software como as do software de código aberto não funcionem: afinal, o código é de código aberto. A primeira coisa que outras instituições farão é extrair o bit de código fechado, substituí-lo por um bit de código aberto sem essa limitação, e todos usarão isso.

Não pode ser um compromisso possível: não abra fonte do software, mas as licenças de venda. As instituições com licenças também têm o direito de ler e modificar o código, mas não de distribuí-lo. Cobrar anualmente. Dessa forma, talvez você possa compensar a perda de financiamento pegando alguns deles.

Outra opção é lançar uma versão mais antiga, que você mantenha atualizada, mas sempre atrasada em alguns anos. No entanto, uma comunidade de código-fonte aberto pode assumir o projeto e desenvolver novos recursos mais rapidamente do que você (ou talvez não; a maioria das pessoas superestima o interesse que outras pessoas têm em seu software).

Ou apenas solte-o e faça uso do trabalho que outros fazem nele. Você sempre será o melhor especialista em software.


4

Isso realmente não pode ser feito.

A idéia por trás do código aberto é que o código é aberto , ou seja, as pessoas terão acesso a ele. Da Wikipedia :

Na produção e desenvolvimento, o código-fonte aberto como modelo de desenvolvimento promove um acesso universal, por meio de uma licença gratuita, ao design ou blueprint de um produto e à redistribuição universal desse design ou blueprint, incluindo melhorias subseqüentes a ele por qualquer pessoa.

Ao fornecer acesso universal ao design ou planta, mesmo que a versão lançada seja limitada apenas a 1000 núcleos, seria muito fácil alterar esse número para 100000 ou algo assim.


Aqui estão algumas opções do que você poderia fazer:

  • Considere liberar o código sob uma licença que restrinja os usuários do seu código
  • Libere uma biblioteca de API de código fechado que permita que outros pesquisadores obtenham sua funcionalidade sem ter acesso ao próprio código.

Corrigir. Se você colocar o código lá para dizer "verifique o número de CPUs e não use mais do que X deles", qualquer outra pessoa poderá vasculhar seu código-fonte aberto, remover essa verificação e recompilar.

4

Há muito pouco que você pode fazer para limitar o que os outros farão com seu código-fonte. Eles podem criar outro módulo a partir do zero que pode desbloquear a capacidade de multiprocessamento, ou até melhorá-la: custará tempo e experiência, mas se for importante para eles, eles o farão.

Com dez anos de vantagem, você ainda terá a oportunidade de usar sua experiência e conhecimento do código para continuar a fazer a melhor pesquisa, mesmo se você fornecer a outras pessoas o código fonte que lhes permite replicar suas experiências. Seus financiadores podem até ter mais motivos para procurá-lo, pois seu impacto na pesquisa pode ser maior se você é líder de um projeto de código aberto usado em várias universidades.

Em vez de código aberto, você pode tentar restringir outras pessoas legalmente, publicando seu código-fonte, mas colocando restrições de propriedade na licença de código-fonte. Posso pensar em vários projetos que fizeram isso: Ghostscript, AT&T Unix, Microsoft .NET e Xerox PARC Smalltalk-80. Enquanto esses acabaram sendo totalmente de código aberto, espero que existam outros menos conhecidos que ainda impõem restrições sobre como os licenciados usam o código-fonte. É claro que, embora publicar sua fonte signifique que aqueles com menos respeito à lei podem violar os termos, isso deve impedir que pesquisadores acadêmicos de boa fé executem seu código em supercomputadores tão poderosos quanto o seu.



@musiKk Em 2002, o fork do Rotor no núcleo do .NET começou como 'fonte compartilhada' proprietária , mas muito mais recentemente grandes partes da fonte comercial foram publicadas sob uma licença de referência e, na versão 4.6, fonte totalmente aberta . Eu não sabia o quão complexo é o arranjo de compartilhamento de fontes da Microsoft .
dcorking

1
Você realmente fez meu coração pular. Pensei ter encontrado uma resposta de 13 anos. Não importa que o SO tenha sido lançado em 2008 ... É justo o suficiente.
musikk
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.