Libérer le logiciel open source trop tôt [fermé]

37

Quelle est la responsabilité morale de publier un logiciel open source trop tôt? Par exemple, un produit presque complet qui n'a pas encore été testé.

Quelle est l'attente du programmeur? Attendez-vous à ce qu'il soit entièrement testé ou passez-vous au format open source, puis poursuivez-vous le développement, les tests et les avancées?

La crainte est que les logiciels soient à source ouverte et pourraient potentiellement poser problème aux consommateurs.

Est-ce une peur sans fondement?

Thomas Stringer
la source
10
Ajoutez une clause de non responsabilité si vous êtes concerné. :)
Vaughan Hilts
18
Un inconvénient de la publication trop tôt serait que l’augmentation de la publicité que vous obtenez lors de la publication peut être perdue si le logiciel est inutilisable. Ensuite, les versions suivantes "oui, j’ai essayé ça, c’était nul". Cela dépend bien sûr du temps dont vous avez besoin pour le mettre en forme et du public cible.
Davidmh
@VaughanHilts Je ne m'inquiète pas de la colère de quelqu'un, mais du souci d'améliorer la distribution et la consommation de logiciels. C'est le dernier que je ne voudrais pas souffrir à cause de trop hâte d'une sortie.
Thomas Stringer
@ Davidmh: Ce serait aussi ma principale préoccupation, "une fois brûlé, deux fois timide".
Matthieu M.
8
Publier le code source mais pas les fichiers binaires peut être un bon moyen d’empêcher les personnes aux attentes incorrectes d’utiliser votre logiciel avant qu’il ne soit prêt.
Rétablir Monica

Réponses:

56

Je crois au contraire que vous devriez publier un logiciel open source dès que possible. Il n'y a pas de "trop ​​tôt" pour cela (mais il devrait compiler).

Ou du moins, publiez le code source très tôt et de manière continue (par exemple, en appuyant fréquemment sur github ), sans effectuer de publication officielle .

Cependant, il est très important de marquer comme stade alpha ou bêta, et si possible de dire (par exemple dans un READMEou TODOfichier, et sur certains blog, etc ...) ce qui manque, non testé, ou en mauvais état. Vous devez également utiliser le numéro de version pour transmettre ces informations.

Avec le logiciel libre , le meilleur qui puisse arriver est que quelqu'un jette un coup d'œil dans le code source et vous propose un petit correctif pour l'améliorer. C'est pourquoi vous rendez votre logiciel gratuit!

Par conséquent, vous devez rendre visible votre travail quotidien sur votre logiciel libre! Les contributeurs externes seraient énervés si leur correctif ne fonctionnait pas ou était une copie de votre code source logiciel récent.

Ce que vous devriez avoir peur, c’est que personne ne s’intéresse à votre logiciel (et qu’il y contribue). Attirer l’intérêt extérieur pour un logiciel libre (en particulier attirer des contributeurs externes) est un long voyage.

Basile Starynkevitch
la source
33

TL; DR:

Libérer tôt. Relâchez souvent.

Anecdote personnelle:

J'étais vraiment enthousiasmé par le projet sur lequel je travaillais. Comme, vraiment excité. Je ne pouvais pas dormir la nuit excité. J'ai donc poussé mon co-développeur à publier la v1.0 plus rapidement qu'il ne le voulait.

C'était terrible. Rien ne fonctionnait comme prévu. Il y avait des bugs à chaque tour, mais nous les avons enregistrés et corrigés. Nous avons même eu quelques utilisateurs précoces qui ont soumis des bugs que nous n’avions peut-être pas trouvés. Une semaine ou deux plus tard, nous avons publié une nouvelle version qui traitait de nombreux problèmes, puis nous sommes revenus à la création de nouvelles fonctionnalités.

Sortir tôt était la meilleure chose à faire. Cela met notre produit devant de vrais utilisateurs. Faire cette bugs exposés nous avons pu ou non trouvé et amélioré notre projet. Cela a également permis aux premiers utilisateurs de savoir que notre projet était sérieux. Il y aura plus de versions et de développement actif.

Cela aurait pu facilement être inversé aussi. Nous aurions pu ignorer ces rapports de bugs. Ou nous n'aurions pas pu réagir rapidement. La situation aurait pu être différente si nous avions mis 3 mois pour publier la version 1.1 au lieu de quelques semaines.

Canard en caoutchouc
la source
9
Il semble que votre seule grosse erreur soit de l’appeler "v1.0". Les utilisateurs s'attendent généralement à indiquer un produit "fini" dans le sens où il est utilisable à des fins supposées, sans bugs évidents, etc. "Libérer tôt" est une bonne chose, mais les utilisateurs doivent être informés qu'ils sont des cobayes.
R ..
3
Oui. Je suis d'accord avec ça dans le recul. Pour être juste cependant, je pensais l'avoir soigneusement testé. Je pensais que c'était 1.0 à l'époque @R ... J'avais tort.
RubberDuck
12

C'est la même chose qu'avec un logiciel à source fermée. La communication est importante.

Informez les utilisateurs de l'état du logiciel et des raisons pour lequel il est disponible au téléchargement.

Les logiciels susciteront toujours des problèmes chez les clients, qu'ils soient entièrement testés ou non. La plupart des clients acceptent ce fait, et certains clients ne le font jamais. Mais si le logiciel entraîne plus de problèmes que prévu, il existe une obligation morale d'informer le client du risque qu'il prend. Les informations doivent être à la fois abrégées (libellés "Alpha / Beta / EarlyAccess") * et en détail: liste des problèmes connus, des solutions de contournement et des considérations spéciales, par exemple, s'il est probable que les données puissent être corrompues.

* Sachez que certains grands éditeurs de logiciels ont formé les utilisateurs à considérer la "version bêta" comme un état dans lequel le logiciel est assez solide. Par conséquent, informer l'utilisateur que le logiciel est "bêta" ne constitue souvent pas une information suffisante.

Peter
la source
3
Devrions-nous en déduire que la "version bêta" ne devrait pas être assez solide? J'imagine que les "grands éditeurs de logiciels" appellent cela "bêta" lorsqu'ils sont sur le point d'être prêts pour la production et de confronter le logiciel à des données réelles. Peut-être appeler cela un prototype ?
Pierre Arlaud
2
Le label "Beta" signifie maintenant différentes choses pour différentes personnes, donc à mon avis, nous ne pouvons pas en déduire beaucoup du label "Beta", à part que le logiciel se situe quelque part entre "un peu utilisable" et "presque terminé". Certains clients vont en déduire quelque chose et tous ne vont pas en déduire la même chose. C'est pourquoi je mets la remarque.
Peter
3
J'ai tendance à utiliser le terme "construction alpha" maintenant pour les constructions de prototypes. Cela donne aux gens le sentiment que "Cette chose n'est même pas encore en version bêta, les gens! Ne vous attendez pas à ce que ce soit presque fait."
RubberDuck
2
Vous pouvez le distribuer sous une forme différente, par exemple uniquement sous forme source, sans paquets binaires.
el.pescado
3
@SteveJessop avant que l'industrie du jeu change ce que nous entendions par "bêta", je serais d'accord avec vous. =)
RubberDuck
7

Il n'y a aucune responsabilité morale que ce soit. Personne n'est obligé d'utiliser votre logiciel à moitié cuit.

Votre seule préoccupation serait votre crédibilité.

comment s'appelle-t-il
la source
2
sans explication, cette réponse peut devenir inutile si quelqu'un d'autre affiche une opinion contraire. Par exemple, si quelqu'un publie une réclamation du type "Il existe une responsabilité morale. Une personne pourrait être tentée d'utiliser votre logiciel à moitié cuit. Votre crédibilité ne serait pas la seule chose qui vous préoccupe". , comment cette réponse aiderait-elle le lecteur à choisir deux opinions opposées? Pensez à le modifier pour qu'il corresponde mieux aux directives de réponse .
moucher
6
@gnat: Il est faux que cette réponse soit sans explication - l'explication est la phrase suivante: "Personne n'est obligé d'utiliser votre logiciel à moitié cuit". C'est une brève explication, oui, mais c'est toujours LA RAISON pour dire "il n'y a aucune responsabilité morale"
slebetman
@gnat: on peut en dire autant de la plupart des réponses. "Je ne crois pas que vous devriez relâcher […] Il n'est pas très important de le signaler […]". Vous attendez-vous à plus de sources externes pour cette réponse?
Pierre Arlaud
2
Il y a du bon et du mauvais. Je suis d’accord avec vous, mais ce serait bien de vous voir appuyer un argument plus ferme.
RubberDuck
6

Mon expérience est qu'il y a un équilibre à atteindre.

En ce moment, je travaille (dans le sens de répondre aux questions et de fournir des suggestions de développement, sans rien voir de code) avec un développeur qui produit ce qui semble être un projet FOSS très intéressant utilisant le code que j'ai écrit. La publication a été retardée à plusieurs reprises par des modifications de conception qui amélioreront considérablement le projet à long terme, mais qui nécessitent d'importantes réécritures de code déjà écrit et qui fonctionnait déjà. Mon point de vue est que si une publication efficace mais imparfaite avait été réalisée dès que quelque chose fonctionnait, les idées de changements (et les correctifs actuels) auraient pu émaner de la communauté plus large intéressée par ce projet et l'avoir accéléré au lieu de l'avoir les problèmes surgissent lentement, un à la fois, en tant que développeur, pense à eux et demande des commentaires sur la conception de ma part et des autres membres de la communauté intéressés. Donc, de ce point de vue, je suis un fervent défenseur de la "libération anticipée, de la libération fréquente".

D'autre part, des versions de faible qualité peuvent donner à un nouveau projet une mauvaise image avant même qu'il ne soit lancé. Certains pièges que j'ai vus incluent:

  • Arbres squelettes avec des définitions d'interface mais pas de code.
  • Code qui ne se compile pas avec succès sauf pour le développeur.
  • Aucune instruction sur la façon de construire / exécuter le programme.
  • Aucune documentation sur les aspects susceptibles de fonctionner.
  • Description peu claire de ce que le programme fait ou fera.
  • Absence de démonstration d’utilité.

Pour le dernier point, je pense à des choses comme:

  • Compilateur / interprète qui ne peut même pas compiler / exécuter un programme de type hello-world.
  • Un émulateur qui ne peut pas au moins exécuter un exemple de programme ou démontrer de quelque manière que ce soit qu'il fait quelque chose.
  • Outil de traitement d'image qui ne peut rien faire d'autre que charger et réenregistrer l'image non modifiée.
  • Jeu avec rien mais un écran de titre.

Ces types de problèmes donnent une image de "vaporware" qui peut être difficile à éviter sauf si vous êtes très ouvert sur le manque de code fonctionnel.

Enfin, donnez du sens à vos numéros de version. N'appelez pas votre projet "1.0" tant qu'il ne répond pas aux attentes des utilisateurs sans planter. J'ai toujours eu de la chance avec l'utilisation de numéros de version autour de "0.5" pour une première publication publique, mais j'ai aussi vu des choses comme "0.1" ou "0.10" qui ont du sens.

R ..
la source
1

Il y a un cas où la publication de logiciels libres peut avoir des conséquences négatives. Certaines spécifications sont concédées sous licence publique à la condition que toutes les mises en œuvre distribuées au public soient entièrement conformes à la spécification lors de la première publication. L'éditeur vous interdit légalement de distribuer une implémentation en cours de la spécification. Sans une licence négociée spécifique de l'éditeur de la spécification, vous ne devez la partager avec personne jusqu'à ce que tous les tests soient réussis. Cela oblige un "modèle cathédrale" (comme l’appelait Eric S. Raymond) pour la mise en oeuvre de la spécification.

Une spécification sous une telle licence est la spécification du langage Java . Cette restriction s’applique aux développeurs de machines virtuelles compatibles avec la machine virtuelle, mais heureusement pas aux développeurs d’applications exécutées dans une machine virtuelle.

L'article de Liu Qihao et Ciaran O'Riordan, intitulé " 4 détails décalés sur le logiciel Microsoft" Open Source "de Microsoft, mentionne la possibilité d'interpréter la promesse de brevet de Microsoft pour les bibliothèques .NET et les composants d'exécution afin d'exclure les implémentations incomplètes du CLR de manière similaire. . Mais encore une fois, cela ne s'applique pas aux applications qui s'exécutent dans le CLR.

Damian Yerrick
la source
2
Cela n’a d’importance que si vous souhaitez créer une implémentation JRE / JDK, et non les programmes java qui s’exécutent, AFAIK.
Sjas
@sjas Essayez-vous de laisser entendre que JLS est la seule spécification que l’on puisse rencontrer qui a cette restriction "complète ou à garder pour vous"?
Damian Yerrick
Vous essayez d'impliquer que j'implique cela. ;)
sjas
@sjas Merci. Existe-t-il un autre moyen de rendre cette réponse utile?
Damian Yerrick
Je n'ai pas voté par ailleurs. J'ai déjà éclairci le malentendu que j'avais lors de la première lecture de votre réponse. Vous pouvez l'inclure dans votre message si vous voulez changer quelque chose.
Sjas