Quelle est la gravité de la perte du code source? [fermé]

9

Si une entreprise de logiciels perd le code source de l'un des produits qu'elle vend, quelle en serait la gravité, en termes que vous pourriez expliquer à un profane? L'expression "négligence grave" serait-elle trop forte? Ou "incompétence grossière"? De toute évidence, personne n'a été tué, mais n'est-ce pas aussi grave qu'une négligence financière pour laquelle les gens purgent une peine de prison?

EDIT: Disons que ce n'est pas un cas de panne d'un lecteur de disque, de catastrophe naturelle ou quelque chose comme ça. Ils l'ont juste égaré.

JoelFan
la source
37
Il y a une histoire derrière cette question, et je veux tellement l'entendre. J'attendrai juste qu'il apparaisse sur Daily WTF.
BlairHippo
4
@Josh K - Mauvaise analogie! Un enfant ne peut pas être remplacé. Le code source peut. (et je suis sérieusement secoué si vous pensez que source_code == kid). Mais je suppose que vous n'en avez pas (encore).
Tour
6
@Rook: Pourquoi est-ce une mauvaise analogie? Le code source ne peut pas être remplacé exactement, il ne peut être répliqué que de la même manière. Certes, ce n'est pas aussi extrême que de perdre un enfant, mais la comparaison est toujours bonne.
Josh K
6
@Rook: Vous manquez le point que même si un (enfants) est évidemment beaucoup plus important que le code source, la possession des deux est toujours très précieuse. Vous rejetez mon analogie parce que les enfants sont plus importants que le code source serait comme rejeter Yahoo! en tant que société de recherche, car Google est beaucoup plus grand. Mon point est que les deux sont énormes, le fait que l'un soit environ 10 fois plus significatif / important que l'autre n'a pas d'importance. Dites-vous quoi, perdez le référentiel (et toutes les copies de code) pour l'application principale de votre entreprise et revenez me voir en 5-10.
Josh K
5
Je ne comprends pas comment il ne pourrait y avoir qu'une seule copie à "égarer" en premier lieu? J'ai généralement au moins deux ou trois copies moi-même à divers stades de correctifs, mises à jour et correctifs sur lesquels je travaille. Mes collègues auraient leurs propres exemplaires. Au pire, vous risquez de perdre l'historique dans votre référentiel source (si vous utilisez un référentiel central sans sauvegardes) ... Je ne vois tout simplement pas comment cela est possible ...
Dean Harding

Réponses:

27

Disons que MS perd la source de Windows Phone 7 ... des gens ont été tués pour waaaaay moins que les 400 millions de dollars estimés pour le développer.

Selon le produit, il n'y a pas de terme que je puisse penser qui soit «trop fort».

Steven Evers
la source
1
S'ils vendent des logiciels et n'ont pas le code source pour cela, oui, c'est incompétent. Cependant, en tant que développeur de logiciels personnalisés, il est étonnant de voir combien de fois j'ai rencontré de petites entreprises dirigées par des non-programmeurs qui ont externalisé leur développement, et n'avaient même pas de copies à construire du code source du logiciel qu'ils vendaient.
Bob Murphy
1
Et ce ne sont pas seulement les petites entreprises qui le font. Mon cabinet de conseil faisait beaucoup de travail pour Informix, qui à l'époque était un concurrent viable pour Oracle. Ils ont décidé de confier l'un de nos projets à une société d'externalisation indienne, et un jour le manager nous a appelés: "Vous ne nous avez pas envoyé de source!" "Oui, nous l'avons fait, c'était à la date X (environ un an auparavant), et voici le numéro de suivi FedEx. L'avez-vous perdu?" "Non bien sûr que non." "C'est bon si vous l'avez fait, parce que nous pouvons le récupérer dans nos archives, mais il y aura des frais." "Non, ne t'en fais pas." Nous avons découvert plus tard qu'ils l'avaient effectivement perdu.
Bob Murphy
18

Pour une entreprise, c'est comme perdre les joyaux de la couronne. S'il s'agit d'un produit avec un processeur intégré, ils peuvent continuer à fabriquer le produit «tel quel», mais ils perdent la possibilité de l'améliorer ou de résoudre les problèmes.

Dans les marchés d'aujourd'hui, une entreprise EST c'est IP. Perdez ça et ça s'arrête.

uɐɪ
la source
13

Comme les autres l'ont noté, cela relève probablement de la rubrique "tout dépend", donc quelques sénarios:

Source pour un jeu vidéo sur console et sur disque - Cela aurait probablement peu d'impact sur l'entreprise car ils ont tendance à ne pas apporter de modifications au jeu une fois qu'il a été gravé sur disque. Certes, ils pourraient perdre du temps s'il y a du code de bibliothèque à redévelopper, ce ne serait pas si mal.

Source pour un jeu vidéo téléchargeable - Ce serait probablement mauvais car les clients s'attendront probablement à ce que des bogues soient corrigés, ne pas pouvoir le faire pourrait faire perdre confiance aux clients en la société, ce qui pourrait avoir un effet négatif sur les versions futures.

Source pour un jeu en développement - La plupart des sociétés de jeux vidéo ne peuvent pas se permettre de perdre le code d'un jeu en cours de développement à moins qu'il ne soit très tôt dans le cycle de développement (c'est-à-dire des jours, voire des semaines). Pour une petite entreprise, perdre la source car leur sortie phare pourrait les amener à fermer leurs portes.

Source pour une application pour petite entreprise avec une audience limitée - Peu susceptible de causer des problèmes à l'entreprise, même si elle risque de perdre quelques clients.

Source pour une application d'entreprise de grande envergure avec une audience limitée - Une autre situation où cela pourrait entraîner la fermeture de l'entreprise en raison de la perte de confiance de leurs clients. Même dans la plupart des petits marchés, il y a généralement plus d'une entreprise en activité et cela pourrait suffire pour que l'entreprise passe à un concurrent.

Source pour une application majeure d'une grande entreprise - Voici où tout dépend vraiment et serait probablement sur une base très étroite, au cas par cas. Les produits phares (par exemple Microsoft Windows) ont généralement des contrats de support qui leur sont associés et le fait de ne pas pouvoir prendre en charge le produit peut entraîner une violation des poursuites contractuelles. Si je devais donner une estimation, je dirais que la plupart des personnes impliquées dans la perte du code jusqu'à la haute direction de ces personnes pourraient avoir besoin de chercher un nouvel emploi.

Dans l'ensemble, je dirais probablement que la personne qui a perdu le code chercherait un nouvel emploi (et pourrait avoir du mal à en trouver un!) Et qu'elle pourrait également faire face à des poursuites judiciaires de la part de l'entreprise.

rjzii
la source
Il est courant de réutiliser de grandes parties du code source d'un jeu précédemment publié lors du développement d'un prochain jeu - en particulier lors du développement de sa suite. Cependant, étant donné la durée de vie relativement courte des studios de jeux, il n'a pas été rare d'entendre parler de pertes de sources de jeux au cours des dernières décennies.
essuyez
3

Bien qu'il y ait certainement des cas où cela pourrait être cataclysmique, je pense qu'il y en a beaucoup où ce n'est pas (du moins du point de vue de la société de logiciels).

Je pense qu'il y a beaucoup trop de variables pour donner une réponse globale quant à savoir s'il y a des répercussions juridiques, mais une poignée de questions à considérer pour déterminer cela comprendrait:

  • Quelle est la nature du programme? Si c'est quelque chose qu'ils ont perdu parce que des applications comme ça coûtent un centime et ce n'est pas important , alors quoi? S'il s'agit du produit commercial phare de l'entreprise, ils ne se sont vraiment fait du mal. Si c'est un logiciel personnalisé qu'ils ont été mandatés pour construire, c'est là que cela pourrait devenir intéressant, mais ils doivent vous demander ...
  • À qui appartient le droit d'auteur du code? (Si le client détient le droit d'auteur, alors sa propriété a sans doute été perdue / détruite)
  • Le client est-il activement lésé par la disparition du code?
  • Y avait-il des contrats en place concernant les développements futurs qui seront violés suite à la disparition du code?
  • Dans quelle mesure est-il important de pouvoir recréer le logiciel existant? Si c'est quelque chose comme un script shell pour effectuer des tâches de maintenance, la société de logiciels mange le temps qu'il faut pour en créer un nouveau qui fait les mêmes choses. S'il s'agit d'une suite bureautique, dépoussiérez le CV.

Et je suis sûr qu'il y a beaucoup d'autres facteurs à prendre en considération. N'hésitez pas à ajouter.

Maintenant, j'ai dit "du point de vue de la société de logiciels". Cela peut toujours être catastrophique dans l'esprit du client en raison des plans qu'il avait pour les changements, les améliorations ou autres. Cependant, un contrat pour de telles choses ou la propriété du droit d'auteur peut sérieusement irriter le client, mais sans aucune obligation de la part du développeur, à part faire ce qu'il peut pour maintenir de bonnes relations avec la clientèle.

Blumer
la source
Et pour développer davantage le "point de vue du client", ce que je veux dire, je ne sais pas quelle est l'histoire derrière la question, mais il ne serait pas inconnu pour le client de penser qu'il a le droit de s'attendre à ce que le code source soit gardé comme Fort Knox tandis que le développeur le considère comme un "jetable" lorsque le client n'a pas demandé de modifications ou de travaux supplémentaires au cours des trois années écoulées depuis le déploiement.
Blumer
Notez que faire des choses qui mettent sérieusement en colère un client peut également être une violation de contrat et une action en justice. Cela peut également entraîner une plainte publique du client.
David Thornley
3

Ah, étant donné cette clarification de votre part (dans les commentaires):

Il a été développé il y a longtemps, sans contrôle de source, ils le vendent depuis tout ce temps et maintenant ils ont soudainement besoin de le mettre à jour

Dans cette situation spécifique , je dirais que ce n'est probablement pas la fin du monde. Étant donné qu'ils vendent le logiciel depuis des années sans avoir besoin du code source, vous pouvez simplement dire à ce client qui demande la mise à jour, "désolé, ne peut pas faire".

Maintenant, ne vous méprenez pas, perdre le code n'est pas bon. Cela va coûter très cher à votre entreprise de réécrire ou de désosser la version originale (si c'est ce qu'elle décide de faire). Mais ce n'est pas la fin du monde. Ils ont évidemment survécu aussi longtemps sans avoir besoin du code, alors ils continuent probablement à survivre sans lui.

Cela suppose, bien sûr, que les logiciels qu'ils vendent ne représentent qu'une petite partie de leur activité. Ce qui, je suppose, doit être le cas ...

Dean Harding
la source
Oui, ce n'est qu'un des nombreux produits qu'ils vendent
JoelFan
Ce n'est pas seulement 1 client ... cela ne fonctionnera plus sur la dernière version du système d'exploitation
JoelFan
1

Tant qu'ils sont encore en mesure de vendre le produit, je ne pense pas qu'ils soient en difficulté. Maintenant, s'ils sont sous contrat avec un client pour étendre le produit et fournir certaines nouvelles fonctionnalités dans la prochaine version, c'est beaucoup plus grave car cela les prépare à des pénalités de rupture de contrat. Mais je ne pense pas qu'il y ait un problème juridique avec la perte du code lui-même.

Cela ne signifie pas que ce n'est pas un désastre absolu pour l'entreprise. Mais c'est un désastre financier; pas légal. Je commencerais probablement par le terme «incompétence grossière» et continuerais mon chemin à partir de là.

Mason Wheeler
la source
-1: "Je ne pense pas qu'ils soient en difficulté" Ils ne peuvent pas corriger les bugs, corriger ou apporter des modifications lorsque Microsoft "met à niveau" le système d'exploitation. Ils sont totalement voués à une clientèle en baisse rapide et les seules nouvelles ventes seront de compléter des idiots. (Une population non nulle, mais qui n'a pas beaucoup d'argent à dépenser pour les logiciels informatiques.)
S.Lott
@ S.Lott: Quoi de plus important, ils ne peuvent même pas recompiler. Si quelque chose change dans l'environnement du client, le logiciel ne fonctionnera pas.
David Thornley
1

Pour être honnête, je pense que cela dépend de la langue utilisée. Si vous perdez une base de code C #, elle peut être décompilée extrêmement facilement, mais si vous perdez une base de code C ++, c'est bien pire.

Note à soi - pense à un nom
la source
Décompilé au point où il pourrait encore être construit et exécuté, mais serait-il toujours maintenable?
Jay
3
Si vous avez suivi une bonne pratique de codage, alors certainement, oui . Tous les noms de méthode et de champ sont conservés, même les noms privés. Si les méthodes sont courtes, alors le but des variables locales devrait être évident. Les astuces du compilateur comme les méthodes anonymes et les itérateurs peuvent sembler intimidantes, mais peuvent être inversées (si nécessaire) avec un peu de travail. Et même si l'assembly était obscurci, il devrait toujours y avoir une version de débogage quelque part .
Note à soi-même - pensez à un nom
À moins que le seul code que vous ayez soit obscurci, auquel cas ce sera un peu pénible.
MIA
1

Si la nouvelle en est sortie, eh bien, tout fournisseur qui pourrait perdre son code source par un moyen autre qu'un désastre assez répandu ne suit évidemment rien de semblable à de bonnes pratiques de développement et n'est pas digne de confiance. Je considérerais cela comme une preuve prima facie très forte de l'incompétence flagrante des entreprises.

Que diriez-vous d'une "stupidité incroyable"?

David Thornley
la source
0

Je le comparerais à d'autres emplois qui nécessitent la construction d'un article. Probablement quelque chose de physique. Par exemple, si un architecte a perdu les plans d'un bâtiment qui a été construit; Si une entreprise automobile perd les plans d'un modèle de voiture; Si une couturière perdait le patron d'une tenue qu'elle avait confectionnée; etc.

Il existe de nombreux emplois qui ont des comparaisons physiques à comparer à la création de logiciels.

frogstarr78
la source
Sauf que les plans ne sont généralement pas aussi importants. Si l'architecte perd les plans, un autre peut toujours superviser les modifications apportées au bâtiment. Si une entreprise automobile perd ses plans, ses voitures peuvent toujours rouler sur des routes avec une chaussée nouvellement développée. Si je perds le code source, je ne peux pas modifier le programme de manière significative et je ne peux pas le recompiler pour le faire fonctionner sur un nouveau système d'exploitation ou avec une version plus récente d'une bibliothèque.
David Thornley
@ David: Je ne pense pas que vous ayez compris mon analogie. Si un architecte perd les plans d'un bâtiment, il doit refaire les plans afin d'en construire un nouveau. Je ne vois pas non plus comment un autre architecte peut superviser les modifications apportées à un bâtiment s'il n'a pas l'intention de partir. Vous avez totalement mal appliqué l'analogie automobile. Cependant, vous avez souligné que c'était un peu un parallèle faible de toute façon.
frogstarr78
@ frogstarr78: Il est possible d'apporter des modifications à un bâtiment sans les plans d'origine. Il y a un bâtiment qui peut être observé. La construction d'un nouveau bâtiment nécessiterait probablement de nouveaux plans, bien qu'ils puissent être basés sur les anciens. Les plans pour un modèle de voiture ne seront nécessaires que pour une seule année de modèle; après cela, il est possible d'examiner la voiture pour obtenir les informations nécessaires. Perdre des plans sur des objets physiques n'est pas bon, mais cela n'a pas autant d'impact sur l'utilisabilité que de perdre du code source.
David Thornley
@David: Je ne suis pas d'accord.
frogstarr78
@ David: Il me semble que vous comparez le nouveau dessin des plans d'une maison ou d'une voiture, pour être aussi simple que de voir un programme en cours d'exécution et de pouvoir le changer. Si le programme est compilé (et oui raisonnablement compatible multiplateforme), ou qu'une voiture est déjà construite, ou une maison déjà construite, vous pouvez toutes les utiliser. Cependant, lorsque vous devez modifier l'une de ces choses (comme je l'ai dit, la voiture est l'exemple le plus hebdomadaire ici), vous aurez besoin de plans pour le faire. Je ne dis pas que ces exemples sont parfaits, mais ils mettent le concept dans le domaine de quelque chose de physique et familier à la plupart des gens.
frogstarr78
0

Je pense qu'en dehors de l'option de décompilation du code, ce serait un assez gros problème en supposant que la société avait l'intention de continuer à commercialiser le produit logiciel. S'il s'agissait d'une application interne, il en serait de même dans une moindre mesure.

Si vous ne pouvez pas restaurer le code source, la maintenance (correction de bogues) et les améliorations ne peuvent pas être effectuées, l'application est donc statique. Si Microsoft ou Apple ou Apache ou quiconque votre plate-forme d'exploitation modifie ou met à niveau leur code, votre ancien code compilé peut ne pas fonctionner et vous ne pouvez pas le corriger. Si vous vendez cette application à des clients externes, vous ne pouvez pas contrôler quand ils mettront à niveau leur Windows, MAC OSX, iPhone, navigateur Web, vous avez donc un gros risque ici pour la réputation de votre entreprise et éventuellement un risque juridique également si vous avez un contrat de maintenance avec les clients.

Deuxièmement, le code source représente un atout pour l'entreprise. Donc, pour une entreprise de logiciels, c'est un atout dans les livres. C'est quelque chose que vous pouvez vendre en tant que produit ou vendre le code source et tous les droits à une autre société de logiciels. Je ne continuerais pas à vendre un produit logiciel à des clients que je savais ne pas pouvoir maintenir car j'ai perdu le code source. De plus, je doute qu'une autre société de logiciels achèterait l'application et tous les droits si elle ne pouvait pas développer davantage le produit. La valeur de l'actif de cette application doit donc être réduite.

Pour une application interne interne, vous pouvez avoir plus de contrôle sur la plate-forme d'exploitation de votre application, mais je chercherais toujours à remplacer cette application si le code source ne peut pas être décompilé en une base de code utilisable pour la maintenance.

À votre santé,

Kevin

PS J'espère que ce n'est qu'une question théorique ... :)

Kevin Horgan
la source
-1

S'ils n'ont pas à corriger de bogues, ce n'est probablement pas si grave. Par exemple, si l'entreprise crée des contrôles ActiveX personnalisés et perd la source de l'un de ses produits hérités, qui s'en soucie vraiment? Le produit n'est probablement pas activement entretenu et n'est probablement pas non plus commercialisé de manière agressive. Ils le vendront tant que les gens utiliseront encore l'ActiveX 32 bits, puis l'oublieront.

Cela dit, je le classerais toujours comme une négligence grave. De toute évidence, il n'y a pas de système de gestion de code source en place, ce qui est une incompétence professionnelle pour une maison de logiciels.

TMN
la source
-1: "S'ils n'ont pas à corriger de bugs" Quel niveau de perfection enviable. Qui a un logiciel aussi bon? N'importe qui?
S.Lott
1
"Ne pas avoir à corriger les bugs"! = "Pas de bugs". De nombreuses entreprises continuent de vendre des logiciels EOL avec une liste de bogues connus qu’elles n’ont pas l’intention de corriger. Comme un pilote USB pour Win98 - ils sont là-bas, ils ne sont probablement pas parfaits, mais je doute que quiconque applique des corrections de bugs.
TMN