Réponse à 1: Où dois-je héberger mon code?
En fonction de ce que votre université vous propose, vous pouvez choisir de l'héberger avec l'université, ou peut-être avec un référentiel open source tel que Github , Bitbucket, SourceForge ou similaire.
Beaucoup de ces services ont une option d'abonnement «payant» pour les dépôts privés si ceux-ci sont nécessaires.
Réponse à 2: Quelle licence open-source devrais-je choisir?
Cette question est pertinente car nous avons cette discussion en ce moment dans le cadre de l'un de nos propres projets de recherche. Il se trouve que je connais un peu les logiciels open source, après avoir fait des recherches dans le passé et avoir enseigné quelques cours dessus.
Bien qu'il existe de nombreuses licences open source, elles finissent vraiment par venant en deux familles principales. Ce sont des licences ouvertes permissives (ex: MIT, BSD, Apache) ou elles sont libres (GNU Public License v2 ou GPLv3). Voici un bref aperçu de l ' Initiative Open Source
Licences ouvertes permissives Ces licences vous permettent généralement de publier votre code et n'importe qui peut faire tout ce qui ils veulent tant qu'ils conservent certaines informations de copyright avec le code. En réalité, cela a un certain nombre d'implications.
-
Quelqu'un pourrait prendre toute votre base de code, créer un produit avec et le vendre.
-
Quelqu'un pourrait prendre des parties de votre code, le mettre dans son propre projet (commercial ou non).
-
Parce que la licence est plus permissive, vous pourriez prendre vous-même le code, fermez-le, puis gardez sous silence toutes les versions futures afin que vous puissiez gagner de l'argent avec le code ou le cacher au public.
-
Parce que la licence est plus permissive , vous pourriez générer plus d'intérêt en conséquence. Les gens peuvent prendre du code d'autres projets et l'utiliser pour améliorer le vôtre. D'un autre côté, ils pourraient également apporter des améliorations à votre code source et ne jamais les partager avec vous.
D'un autre côté, la GNU GPL est une licence de logiciel libre qui vous interdit de faire certaines choses. En ce sens, c'est plus restrictif, mais le fait pour un certain nombre de raisons idéologiques.
-
Si vous publiez un logiciel sous GPL, vous ne pouvez pas le fermer. Déjà. Il restera ouvert, et si quelqu'un vous demande le code source, vous êtes obligé par les termes de la licence de le fournir (si vous l'hébergez sur Github ou un autre référentiel public, vous avez déjà satisfait à cette exigence).
-
Une entreprise pourrait prendre le code, fabriquer des produits avec et le vendre (c'est son droit de le faire), mais elle devrait le faire à condition que n'importe quelle source le code qu'ils écrivent pour le projet est également publié sous la GPL. Pour cette raison, beaucoup d'entreprises qui gagnent beaucoup d'argent en écrivant des logiciels n'aiment pas cela parce qu'elles doivent continuellement publier du code au public. D'un autre côté, tout ce qu'ils font est mis au public sous la GPL, vous pouvez donc le replier dans votre projet et l'améliorer. Ils ne peuvent pas prendre votre code, l'améliorer et ne plus jamais le partager.
-
Si vous avez utilisé un code GPL dans votre projet (disons que vous avez pris un quelques lignes du noyau Linux ou du contrôle de version Git ou autre) alors vous devrez également publier votre code sous GPL.
En fin de compte, le choix de la licence affecte davantage la manière dont vous souhaitez que le logiciel soit utilisé (et la communauté éventuelle qu'il pourrait apporter). Si vous envisagez de commercialiser le logiciel (et autorisez implicitement d'autres personnes à faire de même), alors vous voudrez peut-être utiliser BSD. Si vous ne voulez pas que les gens prennent votre travail acharné et en tirent profit sans vous montrer les résultats, alors vous voulez passer à la GPL. Si vous ne vous souciez pas de l'une ou de l'autre, vous pouvez probablement en choisir une. Je pense que BSD est populaire dans le milieu universitaire précisément en raison de l'aspect de la commercialisation (par exemple, LLVM gagne beaucoup de terrain en raison de sa licence permissive).
Réponse pour 3: Comment puis-je faciliter la tâche des autres exécuter le code?
Vous facilitez l'exécution du code en l'ingéniant pour qu'il soit facile à exécuter et en étant extrêmement détaillé avec votre documentation.
L'emballage / distribution peut en fait être assez difficile et demandent généralement plus d'efforts que la plupart des gens ne le pensent. Un bon moyen de rendre le logiciel facile à exécuter est de le tester sur plusieurs machines. Assurez-vous de n'oublier aucune des bibliothèques que vous utilisez dans votre projet logiciel, par exemple, et si possible, essayez d'utiliser des bibliothèques de logiciels communes et bien entretenues. Utilisez des langages traditionnels avec des référentiels de paquets faciles à gérer.
Le cas échéant, utilisez des installateurs, des scripts d'installation, des Makefiles (distutils, qui utilise automake / autoconf est mieux), etc. Même les scripts shell valent mieux que rien . Si vous pouvez fournir des binaires et / ou un installateur, cela rendra les choses encore plus faciles. Le problème est que c'est BEAUCOUP de travail!
Accompagnez-le de documentation. Idéalement, la documentation contiendra une description de la façon de la configurer et de l'exécuter, avec des descriptions des packages / bibliothèques nécessaires, des données que vous pourriez avoir à obtenir et sur quoi taper ou cliquer. Habituellement, quelque chose appelé README ou INSTALL attirera l'attention. Mettez également les instructions sur la page Web, la plupart des solutions d'hébergement vous permettent également d'avoir des pages Web.
J'espère que tout cela vous aidera. La partie la plus difficile du processus est de loin l'étape 3 et la plupart des gens ne parviennent pas à utiliser de bonnes techniques comme les installateurs, l'automake / autoconf, etc. car c'est BEAUCOUP de travail et le développement avance souvent plus vite que vous ne le pouvez. rédiger des documents. Cependant, personne ne vous évalue sur votre style, il est donc souvent plus facile de le sortir que de le nettoyer et de le mettre en valeur d'abord.