Restreindre la taille du cluster avec un module source fermé dans un programme autrement open source


10

Je travaille dans un institut de recherche universitaire fortement tributaire du calcul haute performance. En 10 ans, nous avons développé notre propre code Fortran qui est très bien considéré et peut fonctionner sur de très gros clusters. Afin de faire bénéficier le plus grand nombre de chercheurs du code, nous envisageons de le rendre open-source. Cependant, étant donné que notre financement dépend fortement des recherches que nous pouvons effectuer avec le code, nous serions en quelque sorte nous tirer dans le pied.

L'une des idées est de limiter le nombre de processeurs sur lesquels le code peut fonctionner, par exemple au maximum 1000 processeurs au lieu des 100 000 que nous utilisons. De cette façon, la communauté mondiale de la recherche peut bénéficier du code, mais nous aurions un avantage sur la taille des problèmes que nous pouvons exécuter.

Une telle fonctionnalité est-elle conceptuellement possible? Et comment une telle fonctionnalité pourrait-elle être mise en œuvre? Essentiellement, nous aimerions open-source le code complet, mais limiter la parallélisation (en utilisant MPI) à un nombre fixe de threads MPI, par exemple en utilisant un module (source fermée).


Que ferait exactement ce module de source fermée? Serait-il difficile pour quelqu'un d'autre de le réimplémenter?
svick

Réponses:


16

Vous essayez de faire profiter la communauté de la recherche en lui permettant de faire ce que vous faites, sans lui faire faire ce que vous faites. On dirait que vous n'avez pas encore vraiment fait de choix de principe.

Les solutions logicielles comme celle-ci dans les logiciels open source ne sont pas susceptibles de fonctionner: le code est open source, après tout. La première chose que les autres institutions feront sera d'extraire le bit de source fermée, de le remplacer par un bit de source ouverte sans une telle limitation, et alors tout le monde l'utilisera.

Il pourrait y avoir un compromis possible: ne pas ouvrir le logiciel, mais vendre des licences. Les institutions disposant de licences ont également le droit de lire et de modifier le code, mais pas de le distribuer. Charge sur une base annuelle. De cette façon, vous pouvez peut-être compenser la perte de financement en prenant certains des leurs.

Une autre option consiste à publier une version plus ancienne, que vous gardez à jour mais toujours en retard d'un certain nombre d'années. Cependant, une communauté open source peut prendre le projet et développer de nouvelles fonctionnalités plus rapidement que vous (ou il se peut que non; la plupart des gens surestiment l'intérêt que les autres portent à leurs logiciels).

Ou libérez-le simplement et utilisez le travail que les autres y font. Vous serez toujours les meilleurs experts du logiciel.


4

Cela ne peut pas vraiment être fait.

L'idée derrière l'open source est que la source est ouverte , en d'autres termes, les gens y auront accès. De Wikipédia :

Dans la production et le développement, l'open source en tant que modèle de développement favorise un accès universel via une licence gratuite à la conception ou au plan d'un produit, et à la redistribution universelle de cette conception ou de ce plan, y compris des améliorations ultérieures par quiconque.

En fournissant un accès universel à la conception ou au plan directeur, même si la version publiée n'est limitée qu'à 1000 cœurs, il serait assez facile de simplement changer ce nombre en 100000 ou quelque chose du genre.


Voici quelques options de ce que vous pourriez faire à la place:

  • Envisagez de publier le code sous une licence qui restreint les utilisateurs de votre code
  • Libérez une bibliothèque d'API de source fermée qui permet à d'autres chercheurs d'obtenir vos fonctionnalités sans avoir accès au code lui-même.

Correct. Si vous y insérez du code pour dire "vérifiez le nombre de CPU et n'en utilisez pas correctement plus de X", n'importe qui d'autre peut passer au peigne fin votre open source, supprimer cette vérification et recompiler.

4

Il y a très peu de choses que vous pouvez faire pour limiter ce que les autres feront avec votre code source. Ils peuvent créer un autre module à partir de zéro qui peut débloquer la capacité de multitraitement, ou même l'améliorer: cela coûtera du temps et de l'expertise, mais si c'est important pour eux, ils le feront.

Avec dix ans d'avance, vous avez toujours la possibilité d'utiliser votre expérience et votre connaissance du code pour continuer à faire les meilleures recherches, même si vous donnez aux autres le code source qui leur permet de reproduire vos expériences. Vos bailleurs de fonds peuvent même avoir plus de raisons de vous contacter, car votre impact sur la recherche peut être plus important si vous êtes à la tête d'un projet open source utilisé dans plusieurs universités.

Au lieu de l'open source, vous pouvez essayer de restreindre les autres légalement, en publiant votre source mais en mettant des restrictions propriétaires sur la licence source. Je peux penser à plusieurs projets qui ont fait cela: Ghostscript, AT&T Unix, Microsoft .NET et Xerox PARC Smalltalk-80. Bien que ceux-ci soient finalement devenus entièrement open source, je m'attends à ce qu'il y en ait d'autres moins connus qui imposent encore des restrictions sur la façon dont les titulaires de licence utilisent le code source. Bien sûr, bien que la publication de votre source signifie que ceux qui respectent moins la loi peuvent enfreindre les conditions, cela devrait empêcher les chercheurs universitaires de bonne foi d'exécuter votre code sur des superordinateurs aussi puissants que le vôtre.



@musiKk En 2002, le fork Rotor du cœur de .NET a commencé comme une «source partagée» propriétaire , mais beaucoup plus récemment de grandes parties de la source commerciale ont été publiées sous une licence de référence , puis, à la version 4.6, entièrement open source . Je ne savais pas à quel point les arrangements de partage de source de Microsoft sont complexes .
dcorking

1
Tu as vraiment fait sauter mon cœur. Je pensais avoir trouvé une réponse de 13 ans. Peu importe que SO ait été lancé en 2008 ... Assez juste alors.
musiKk
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.