Question:
J'ai trouvé une erreur sur le code d'une personne publié en ligne: quel est le protocole?
user30609
2019-07-18 12:33:29 UTC
view on stackexchange narkive permalink

J'utilise une boîte à outils d'économétrie depuis environ 2 ans et c'est génial, très utile. Il est disponible sur le site Web personnel de quelqu'un.

J'ai trouvé une erreur dans un morceau de code qui m'a fait reculer pendant un temps considérable. C'est un petit changement mais avec de vastes conséquences. Au lieu de remettre en question le code, j'ai fait mon idée.

Maintenant que j'ai trouvé le problème, quel est le protocole pour le mettre en évidence? Un e-mail à l'auteur est-il nécessaire?

J'ai modifié ceci pour inclure les informations de vos commentaires aux réponses ci-dessous.Veuillez modifier davantage si des précisions supplémentaires sont nécessaires ou si mes modifications sont inexactes.
Est-il disponible sur github / bitbucket?Si tel est le cas, créez simplement un problème ou même une meilleure fourchette et soumettez-le à la demande de tirage.
Quelle est cette erreur?Je veux dire: le problème est que le code ne fait pas ce que l'auteur pense qu'il fait (erreur d'implémentation) ou la logique de l'auteur est-elle tout simplement fausse pour la tâche à résoudre (erreur sémantique)?Dans le premier cas, ce n'est généralement pas un gros problème, ouvrez un numéro dans le référentiel s'il est disponible ou envoyez un email à la liste de diffusion si elle existe ou simplement à l'auteur.Si c'est la seconde, cela peut valoir une petite publication selon les circonstances exactes (si l'outil est largement utilisé par d'autres, si votre solution est une idée nouvelle, etc.).
Bien qu'il puisse être impoli de signaler les erreurs des autres en général, quand il s'agit de code, c'est très apprécié.
@Evorlor Comment signaler des erreurs peut-il être impoli?Voilà comment nous apprenons.
@user2768 Il peut être formulé de manière grossière, ou les mêmes personnes s'offusquent même si c'est bien formulé.
sous-question: dois-je les informer de manière anonyme
@gerrit _Il peut être formulé de manière grossière_, mais cela semble orthogonal.Aussi, je suis d'accord, certaines personnes prennent offence.
@user30609 Y a-t-il une raison de le faire de manière anonyme?Il semble que cela entraverait le processus sans aucun avantage.
@user30609 au cas où ils seraient offensés
@user30609 Je ne pense pas que vous offenserez.
Obligatoire xkcd: https://xkcd.com/386/
Écrivez un test démontrant le bogue.Écrivez un correctif qui fait disparaître le bogue, comme indiqué par le test réussi.Soumettez-le.
Six réponses:
user2768
2019-07-18 13:08:23 UTC
view on stackexchange narkive permalink

Maintenant que j'ai trouvé le problème, quel est le protocole pour le mettre en évidence, est-il nécessaire d'envoyer un e-mail à l'auteur?

Ce n'est pas nécessaire, mais c'est la bonne chose à faire , si vous ne le faites pas, vous êtes responsable de causer des revers aux autres qui leur feront perdre un temps considérable.

commentaire honnête, cela m'a ennuyé, je vais penser à une belle façon d'écrire un email,
@user30609 Ne réfléchissez pas trop à cela, le courrier électronique a juste besoin de dire quelque chose du genre: _Chère A, j'utilise votre boîte à outils d'économétrie depuis environ 2 ans et cela a été très utile pour mon travail.<< Mentionnez éventuellement une partie de votre travail, éventuellement entre parenthèses. >> Récemment, j'ai découvert une petite erreur dans le code: << décrire l'erreur (et corriger si elle est connue) >>.Vous pouvez peut-être implémenter ce correctif et l'inclure dans votre boîte à outils;cela épargnerait aux autres la frustration du débogage pendant des heures.
Les codeurs adorent les correctifs gratuits de leur code.Les deux fois où j'ai notifié les codeurs ** et ** fourni le correctif avec l'e-mail, il a été déployé dans les 24 heures.
Codeurs @Nelson ... probablement.Mais soyons honnêtes: il y a * beaucoup * de code PANTA dans les universitaires (Publish And Never Touch Again).On pourrait jouer l'avocat du diable et dire: S'ils étaient intéressés à maintenir le code, ils le mettraient sur un SCM public, et non seulement offriraient un ZIP sur un site Web personnel.Mais cela vaut la peine d'essayer, bien sûr: la pire chose qui puisse arriver est que le message soit ignoré ...
@Marco13 Il se peut qu'ils ne connaissent tout simplement pas le contrôle de code source.Jusqu'à très récemment, même les nouveaux diplômés CS le savaient rarement.
@user2768 N'appelez pas cela une erreur;C'est vulgaire.* J'ai récemment surmonté un obstacle dans mon projet en modifiant XYZ dans votre bibliothèque.J'espère que vous pourrez jeter un oeil et déterminer si ce changement doit être appliqué à votre code source ou si j'ai piraté votre code d'une manière non prise en charge, merci. *
@MonkeyZeus Je n'ai jamais eu ça.Pourquoi est-il impoli de signaler une erreur, alors que c'est une erreur?Tout le monde fait des erreurs.Il est plus clair de dire que c'est une erreur qui doit être corrigée, au lieu de "surmonter un obstacle" qui me prendrait un certain temps à analyser.Perdre du temps n'est-il pas plus grossier que brutal?
"si vous ne le faites pas, vous êtes responsable de causer des revers aux autres" - tout à fait d'accord.Rappelez-vous que vous avez trouvé cette bizarrerie en utilisant OSS et vous ne l'avez jamais signalé?Cette bizarrerie a nui à ma productivité, par conséquent je n'ai plus mon travail et je suis sans abri - merci beaucoup d'avoir gâché ma vie, mon pote.Oh, vous l'avez signalé?Euh ... où?Pourquoi le rapporteriez-vous sur un forum dont je n'ai jamais entendu parler de ma vie?Me cachez-vous des informations en particulier?Je vais t'apprendre à assumer la responsabilité de tes actes.Mon avocat sera bientôt en contact.
@vaultah C'est parabolique.Lorsque vous utilisez OSS, vous devez non seulement * anticiper *, mais aussi * supposer * que les gens vont gâcher les choses (et les avertissements habituels peuvent être trouvés dans LICENSE.md).Les avantages idéaux de l'OSS entrent en jeu lorsque tout le monde joue au jeu selon les règles, et de nombreux universitaires ne le font pas.Lorsque le financement est terminé, ils ne se soucient pas ... du code, et projeter les responsabilités sur les autres est inapproprié.
D'accord.Le principe est élucidé dans [Matthieu 18: 15-17] (https://www.biblegateway.com/passage/?search=Matthew+18%3A15-17&version=GW), qui peut être *** TRÈS ***"Si votre collègue programmeur se trompe, montrez-lui l'erreur en tête-à-tête. S'il corrige le bogue, il vous en sera probablement reconnaissant, et vous vous serez fait un ami. Siil ne corrige pas son bogue, puis demandez à un ou deux autres qui pourraient avoir plus de succès en le persuadant d'essayer. S'il ne résout toujours pas son bogue, ils deviennent publics et publient le correctif en ligne. "* Ce n'est vraiment qu'une application de la règle d'or.
Bien entendu, l'OP n'est pas responsable des dommages en résultant s'il ne le signale pas.Je pense que cette réponse ne signifie pas «responsable» dans le sens «vous êtes à blâmer», mais plutôt «vous auriez pu l'éviter avec un minimum d'effort» - et de nombreuses personnes dorment mieux la nuit et peuvent mener une vie plus heureuse, si elles saventils ont fait ce qu'il fallait, indépendamment du fait que quelqu'un d'autre soit en faute.
@Falco Non, par _vous êtes ** responsable ** d'avoir causé des revers aux autres_, je voulais vraiment dire que vous êtes ** à blâmer ** pour avoir causé des revers aux autres_.(Il n'y a aucune question de responsabilité pour le temps perdu.) Je crois que le PO a la responsabilité d'agir.
@user2768 Je ne pense pas être d'accord avec cela.Je ne blâmerais pas quelqu'un de ne pas avoir fait tout son possible pour éventuellement aider des étrangers, où il ne sait même pas s'ils veulent ou ont besoin d'aide et si l'auteur s'en soucie réellement.Je pense que c'est une bonne chose à faire et je le ferais aussi moi-même, mais je ne blâmerais jamais quelqu'un de ne pas le faire - je ne le vois pas comme un devoir à faire, mais plutôt comme un bon acte que l'onfaire s'il veut faire quelque chose de gentil.
@Falco Je le vois comme un devoir.(Il convient de noter que l'OP ne fait pas tout son possible pour aider éventuellement des étrangers, il leur suffit d'envoyer un seul e-mail.)
@user2768, nous nous intéressons ici à la morale / philosophique.Mais il y a probablement un million de petites choses (aussi petites que l'envoi d'un e-mail) que vous pourriez faire chaque jour, ce qui améliorerait la vie des autres.Si tous étaient un devoir, vous n'auriez pas du tout de temps pour vous.
@Falco J'identifie simplement ce que je considère comme le devoir d'un chercheur.Je ne considère pas les millions de petites choses auxquelles vous éludez comme faisant partie du devoir d'un chercheur.Vous pouvez rédiger votre propre réponse, étant donné que vous n'êtes pas d'accord.
J'ai voté pour votre réponse, parce que vous écrivez simplement "c'est la bonne chose à faire" qui est aussi mon opinion.Ce n'est que dans les commentaires que vous expliquez clairement que vous le voyez comme un devoir qui s'impose à chaque chercheur.La différence est juste, je suis d'accord que l'on est un meilleur humain si l'on fait cela, mais pas pire si on ne le fait pas.
Je ne serais pas surpris qu'il y ait des articles délibérément remplis d'erreurs avec l'intention explicite de perdre du temps aux chercheurs, en particulier le temps de ces chercheurs suffisamment efficaces et consciencieux pour remarquer et prendre le temps de signaler ces erreurs.
TheLuckless
2019-07-19 04:16:15 UTC
view on stackexchange narkive permalink

Un point d'étiquette important qui a été ignoré dans les autres réponses:

Traitez-le comme un bogue suspecté et ne supposez pas "J'ai raison, vous" re faux "lors de la présentation de votre correctif.

  • Peu importe votre degré de confiance en la matière, il est toujours possible d'avoir mal interprété ou négligé quelque chose d'important.

Considérez le cas de trouver une 'erreur' dans le code de:

  (A + B)  

Et vous décidez que tous vos cas d'utilisation doivent être:

  ABS (A + B)  

Vos cas d'utilisation peuvent ne pas inclure un besoin pour que ce négatif éventuel existe, ou même être capable de le gérer quand il le fait, mais cela ne signifie pas que les cas hors de votre considération peuvent ne pas en avoir besoin.

  • Commencez par le en supposant que les codeurs d'origine en savent plus sur le code que vous. [Ce n'est peut-être pas le cas en fait, mais les opinions des autres peuvent toujours être réévaluées ...]
  • L'approche comme ayant pour objectif de mieux comprendre mutuellement ce que fait le code et ce qu'il devrait faire, et comment il est réellement utilisé.
  • Envisagez de formuler toute suggestion de changement / amélioration sous forme de questions plutôt que de commandes . ["Voyez-vous des failles dans ma tentative de résoudre mon problème?" vs "Vous devriez utiliser mon code à la place."]
Entièrement d'accord!!
L'OP écrit, _J'ai trouvé une erreur dans un morceau de code_, donc cela ne répond pas vraiment à la question, cela remet en question la légitimité de la question et répond à une autre.
@user2768 - Ils _ pensent_ qu'ils ont trouvé une erreur, et ils l'ont probablement fait, et ils ont demandé un protocole sur la meilleure façon de la gérer.Une partie du protocole approprié consiste à laisser la porte grande ouverte à la possibilité que vous vous trompiez en fait sur la nature de l'erreur que vous avez trouvée ... Si vous pensez que cela répond à `` une autre question '', alors vousraté le point de la réponse.
@TheLuckless Vous pensez que l'OP pense, mais ils pourraient vraiment savoir qu'il y a une erreur.Ce n'est pas impossible, je l'ai fait moi-même à de nombreuses reprises.J'ai également pensé qu'il n'y avait pas d'erreur et je suis vos conseils en cas de doute.
@user2768, peu importe à quel point on «sait vraiment» sur un bogue logiciel, la _proper étiquette_ consiste à _toujours supposer que vous pourriez vous tromper, même si vous êtes sûr que vous avez raison_.C'est la politesse de commencer une telle conversation et de vous couvrir les fesses si vous oubliez réellement quelque chose.- N'oubliez pas non plus qu'il est également tout à fait possible que les DEUX parties se trompent.Les bogues dans le code et la conception ne sont pas vraiment rares ...
Je ne pense pas qu'il soit approprié de s'inquiéter de savoir qui a raison et qui a tort.Peut-être qu'ils ont tous les deux raison.Peut-être qu'ils ont tous les deux tort.Ce n'est pas important.
@TheLuckless Il y a des cas où je pense que c'est tout simplement faux, par exemple, les trois premiers chiffres de pi étant définis comme 3.13.Dans de tels cas, il n'y a vraiment aucun intérêt à _en supposer que vous vous trompez_, une approximation claire de pi comme 3.13 est une erreur.
@emory: Les humains ne sont pas des robots.Nous sommes * beaucoup * plus disposés à écouter "Pouvez-vous m'aider à comprendre X?"au lieu de "X est la raison pour laquelle vous vous trompez."C'est une question de tact, rien de plus.
@Kevin Supposons que j'écris des logiciels basés sur les unités de liberté.Je peux reconnaître que le logiciel serait plus généralement utile s'il était écrit en unités métriques sans accepter de changement.Je ne me soucie que de mon utilité.C'est la beauté des logiciels open source.Si vous le souhaitez, vous pouvez le transformer en unités métriques sans ma permission.
Solar Mike
2019-07-18 13:17:17 UTC
view on stackexchange narkive permalink

Vous avez 3 possibilités:

  1. Contactez l'auteur selon l'autre réponse. Meilleure option basée sur les commentaires ultérieurs révélant que la source était un site Web personnel.

Si le code a été publié dans un article ou un article, les éléments suivants peuvent être applicables:

  1. Contactez l'éditeur.

  2. Publiez un article présentant votre travail pour améliorer l'utilité du code.

La troisième dépend du type d'erreur et de la manière dont elle a été corrigée - si cela signifiait changer un 3 à 5 alors c'est trivial, mais si cela signifiait recoder une partie significative avec un processus supplémentaire alors cela pourrait bien être une option appropriée.

Vous devez cependant le dire d'une manière ou d'une autre.

J'ajouterai simplement que si le code se trouve sur un référentiel en ligne (par exemple, GitHub), il existe un moyen standard de le faire.
C'était un petit changement avec de vastes conséquences, je ne pense pas que cela justifierait un article, et je n'aimerais pas non plus profiter des malheurs de quelqu'un.
C'est sur un site personnel
Ensuite, il est clair que vous avez pris votre décision - dites simplement que cela vous a été si utile et que vous avez trouvé l'erreur ...
(2) ne semble pas pertinent d'après la question initiale, ni le commentaire du PO.(3) ne semble pas approprié sans plus d'informations: écrire un article sur un bug logiciel semble plutôt inhabituel.Je suppose que (2) est pertinent si le code du logiciel a été publié dans un article, car l'éditeur peut publier une note sur le bogue.De même, je suppose que (3) est pertinent si le code du logiciel a été publié dans un article.Peut-être qu'@SolarMike avait différents scénarios en tête.
@user2768 J'avais supposé (à tort qu'il s'avère) que l'OP avait obtenu le code d'un article publié.Maintenant, il est devenu clair qu'il a été copié à partir d'un site Web personnel qui change le jeu.Oh, si seulement toutes les questions étaient parfaitement écrites pour que les réponses puissent se concentrer sur la bonne direction ...
L'hypothèse @SolarMike est la mère de tous les ****
@user30609 écrire une question claire est utile ici, voir https://academia.stackexchange.com/help/how-to-ask
Désolé @SolarMike que je voulais dire en mon nom, j'aurais dû écrire la question clairement et ne pas supposer que les lecteurs potentiels savaient ce que je disais
h22
2019-07-18 23:47:48 UTC
view on stackexchange narkive permalink

Si vous êtes vous-même le programmeur, et que c'est le projet open source, le mieux serait de simplement soumettre la demande d'extraction s'ils ont le référentiel SCM. Les deux logiciels seraient corrigés et vous obtiendriez des crédits.

Sinon, signalez le bogue, mieux vaut éviter la base de données de bogues s'ils en ont. Bloguer sur le problème à un endroit aléatoire n'a pas de sens car les auteurs peuvent mettre une éternité à trouver vos commentaires.

S'il s'agit d'une équipe obsolète qui n'a ni référentiel ni base de données de bogues, il peut être judicieux de reprendre le projet.

Torben
2019-07-19 02:21:11 UTC
view on stackexchange narkive permalink

De nombreux référentiels ont un fichier "CONTRIBUTING.md". Le fichier contient des instructions pour fournir des commentaires, des rapports de bogue ou la façon dont vous ouvrez les demandes d'extraction. ( Exemple 1, exemple 2) D'autres projets ont une page Web ou un wiki avec une section "Comment contribuer", où vous pouvez trouver ces informations.

Si vous ne trouvez rien de tout cela, vous devriez écrire un e-mail avec le rapport de bogue et demander au propriétaire du référentiel la procédure suivante.

Nyos
2019-07-21 20:01:31 UTC
view on stackexchange narkive permalink

Je voudrais juste souligner que les gens publient du code exactement parce qu'ils veulent / s'attendent à des corrections de bogues / améliorations. J'ai envoyé des correctifs dans ma vie (ou juste signalé des problèmes), et ils ont été généralement bien reçus. Même quand je me suis trompé (il s'est avéré que les compilateurs ont la liberté d'interpréter le "comportement indéfini" de la manière la plus libérale).

Alors n'ayez pas peur d'envoyer un rapport / patch!



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 4.0 sous laquelle il est distribué.
Loading...