Wie ernst ist der Verlust des Quellcodes? [geschlossen]


9

Wenn ein Softwareunternehmen den Quellcode für eines der von ihm verkauften Produkte verliert, wie ernst wäre das, was Sie einem Laien erklären könnten? Wäre der Begriff "grobe Fahrlässigkeit" zu stark? Oder "grobe Inkompetenz"? Offensichtlich wurde niemand getötet, aber ist es nicht so schwerwiegend wie finanzielle Nachlässigkeit, für die die Leute Gefängnis bekommen?

EDIT: Nehmen wir an, es handelt sich nicht um einen Absturz eines Festplattenlaufwerks, eine Naturkatastrophe oder ähnliches. Nur haben sie es verlegt.


37
Hinter dieser Frage steckt eine Geschichte, und ich möchte sie unbedingt hören. Ich werde nur warten, bis es auf Daily WTF erscheint.
BlairHippo

4
@ Josh K - Schlechte Analogie! Ein Kind kann nicht ersetzt werden. Quellcode kann. (und ich bin ernsthaft erschüttert, wenn du denkst, dass source_code == kid). Aber ich vermute, Sie haben (noch) keine.
Turm

6
@Rook: Warum ist es eine schlechte Analogie? Der Quellcode kann nicht genau ersetzt werden, er kann nur auf ähnliche Weise repliziert werden. Zugegeben, das ist nicht so extrem wie ein Kind zu verlieren, aber das Gleichnis ist immer noch gesund.
Josh K

6
@Rook: Sie verpassen den Punkt, dass einer (Kinder) offensichtlich viel wichtiger ist als der Quellcode, aber der Besitz von beiden immer noch sehr geschätzt wird. Sie lehnen meine Analogie ab, weil Kinder wichtiger sind als Quellcode, als würden Sie Yahoo! als Suchfirma, weil Google so viel größer ist. Mein Punkt ist, dass beide riesig sind, die Tatsache, dass einer ~ 10x so aussagekräftig / wichtig ist wie der andere, spielt keine Rolle. Sagen Sie was, verlieren Sie das Repository (und alle Kopien des Codes) für die Hauptanwendung Ihres Unternehmens und melden Sie sich in 5-10 bei mir.
Josh K

5
Ich verstehe nicht, wie es nur eine Kopie geben kann, die überhaupt "verlegt" werden kann? Ich habe in der Regel mindestens zwei oder drei Kopien selbst in verschiedenen Stadien der Fixes, Updates und Patches , die ich arbeite. Meine Kollegen hätten ihre eigenen Kopien. Im schlimmsten Fall verlieren Sie möglicherweise den Verlauf in Ihrem Quell-Repository (wenn Sie ein zentrales Repository ohne Backups verwenden) ... Ich sehe nur nicht, wie dies möglich ist ...
Dean Harding

Antworten:


27

Nehmen wir an, MS verliert die Quelle für Windows Phone 7 ... Menschen wurden für waaaaay weniger als die geschätzten 400 Millionen US-Dollar getötet, die es für die Entwicklung gekostet hat.

Je nach Produkt gibt es keinen Begriff, den ich für "zu stark" halten kann.


1
Wenn sie Software verkaufen und keinen Quellcode dafür haben, ist dies inkompetent. Als Entwickler von kundenspezifischer Software ist es jedoch erstaunlich, wie oft ich auf kleine Unternehmen gestoßen bin, die von Nicht-Programmierern geführt werden, die ihre Entwicklung ausgelagert haben und nicht einmal baubare Kopien des Quellcodes für die von ihnen verkaufte Software hatten.
Bob Murphy

1
Und das tun nicht nur kleine Unternehmen. Meine Beratungsfirma hat viel für Informix gearbeitet, das damals ein tragfähiger Konkurrent für Oracle war. Sie beschlossen, eines unserer Projekte an eine indische Outsourcing-Firma zu verlagern, und eines Tages rief uns der Manager an: "Sie haben uns keine Quelle geschickt!" "Ja, wir haben es getan, es war am X-Datum (ungefähr ein Jahr zuvor), und hier ist die FedEx-Tracking-Nummer. Haben Sie sie verloren?" "Nein natürlich nicht." "Es ist in Ordnung, wenn Sie es getan haben, weil wir es aus unseren Archiven abrufen können, aber es wird eine Gebühr erhoben." "Nein, mach dir keine Sorgen." Wir fanden später heraus, dass sie es tatsächlich verloren hatten.
Bob Murphy

18

Für ein Unternehmen ist dies wie der Verlust der Kronjuwelen. Wenn es sich um ein Produkt mit einem eingebetteten Prozessor handelt, können sie das Produkt weiterhin "wie es ist" herstellen, verlieren jedoch die Fähigkeit, es zu verbessern oder Probleme zu beheben.

In den heutigen Märkten ein Unternehmen IST es IP. Verliere das und es geht aus dem Geschäft.


13

Wie die anderen angemerkt haben, fällt dies wahrscheinlich unter die Überschrift "alles hängt davon ab", also ein paar Szenarien:

Quelle für ein festplattenbasiertes Konsolenvideospiel - Dies hätte wahrscheinlich nur geringe Auswirkungen auf das Unternehmen, da das Spiel nach dem Brennen auf die Festplatte tendenziell keine Änderungen mehr vornimmt. Zugegeben, sie könnten etwas Zeit verlieren, wenn es Bibliothekscode gibt, den sie neu entwickeln müssen. Es wäre nicht so schlimm.

Quelle für ein herunterladbares Videospiel - Dies wäre wahrscheinlich schlecht, da die Kunden wahrscheinlich erwarten werden, dass Fehler behoben werden. Wenn sie dies nicht tun, können die Kunden das Vertrauen in das Unternehmen verlieren, was sich negativ auf zukünftige Versionen auswirken könnte.

Quelle für ein Spiel in der Entwicklung - Die meisten Videospielunternehmen können es sich nicht leisten, den Code für ein Spiel, das sich derzeit in der Entwicklung befindet, zu verlieren, es sei denn, er befindet sich extrem früh im Entwicklungszyklus (dh Tage, vielleicht Wochen später). Für ein kleines Unternehmen verliert er die Quelle denn ihre Veröffentlichung als Flaggschiff könnte dazu führen, dass sie ihr Geschäft aufgeben.

Quelle für eine Anwendung für kleine Unternehmen mit einer begrenzten Zielgruppe - Es ist unwahrscheinlich, dass das Unternehmen Probleme bekommt, obwohl möglicherweise einige Kunden verloren gehen.

Quelle für eine große Geschäftsanwendung mit einem begrenzten Release-Publikum - Eine andere Situation, in der das Unternehmen aufgrund des Vertrauensverlusts seiner Kunden möglicherweise aus dem Geschäft ausscheidet. Selbst in den meisten kleinen Märkten gibt es in der Regel mehr als ein Unternehmen, und dies könnte ausreichen, damit das Unternehmen zu einem Wettbewerber wechselt.

Quelle für eine Hauptanwendung eines großen Unternehmens - Hier hängt wirklich alles davon ab und wird wahrscheinlich von Fall zu Fall sehr eng gefasst. Mit Flaggschiffprodukten (z. B. Microsoft Windows) sind im Allgemeinen Supportverträge verbunden. Wenn das Produkt nicht unterstützt werden kann, kann dies zu Vertragsverletzungen führen. Wenn ich eine Schätzung abgeben müsste, würde ich sagen, dass die meisten Personen, die am Verlust des Kodex bis zur Führung dieser Personen beteiligt sind, möglicherweise nach einer neuen Beschäftigung suchen müssen.

Auf ganzer Linie würde ich jedoch wahrscheinlich sagen, dass die Person, die den Code verloren hat, nach einem neuen Job sucht (und es möglicherweise schwierig findet, einen zu finden!), Und dass sie möglicherweise auch Klagen des Unternehmens ausgesetzt ist.


Es ist üblich, große Teile des Quellcodes eines zuvor veröffentlichten Spiels bei der Entwicklung eines nächsten Spiels wiederzuverwenden - insbesondere bei der Entwicklung seiner Fortsetzung. Angesichts der relativ kurzen Lebensdauer von Spielestudios war es jedoch nicht selten, in den letzten Jahrzehnten von Verlusten bei Spielquellen zu hören.
Wischen Sie

3

Zwar gibt es sicherlich Fälle, in denen es katastrophal sein könnte, aber ich denke, es gibt viele Fälle, in denen dies nicht der Fall ist (zumindest aus Sicht des Softwareunternehmens).

Ich denke, dass es viel zu viele Variablen gibt, um eine pauschale Antwort darauf zu geben, ob es rechtliche Auswirkungen gibt, aber eine Handvoll Fragen, die bei der Bestimmung berücksichtigt werden müssen, umfassen:

  • Was ist die Art des Programms? Wenn es etwas ist, das sie verloren haben, weil Apps wie es ein Dutzend sind und es nicht wichtig ist , na und? Wenn es das Flaggschiff des Unternehmens ist, haben sie sich nur wirklich selbst geschadet. Wenn es sich um benutzerdefinierte Software handelt, für deren Erstellung sie beauftragt wurden, könnte dies interessant werden, aber Sie müssen fragen ...
  • Wem gehörte das Urheberrecht des Codes? (Wenn der Kunde das Urheberrecht besitzt, ist sein Eigentum möglicherweise verloren gegangen / zerstört worden.)
  • Wird der Kunde durch das Verschwinden des Codes aktiv geschädigt?
  • Gab es Verträge über zukünftige Entwicklungen, die aufgrund des Verschwindens des Codes verletzt werden?
  • Wie wichtig ist es, die vorhandene Software neu erstellen zu können? Wenn es sich um ein Shell-Skript handelt, das Wartungsaufgaben ausführt, nimmt sich das Softwareunternehmen die Zeit, um ein neues Skript zu erstellen, das die gleichen Aufgaben ausführt. Wenn es sich um eine Bürosuite handelt, entstauben Sie den Lebenslauf.

Und ich bin sicher, dass es viele andere Faktoren gibt, die berücksichtigt werden sollten. Fühlen Sie sich frei, um hinzuzufügen.

Jetzt sagte ich "aus der Sicht des Softwareunternehmens". Es kann für den Kunden immer noch katastrophal sein, weil er Pläne für Änderungen, Verbesserungen oder so weiter hatte. Ungeachtet eines Vertrags über solche Dinge oder des Eigentums an dem Urheberrecht kann dies den Kunden ernsthaft verärgern, jedoch ohne Verpflichtung des Entwicklers, abgesehen davon, was er tun kann, um gute Kundenbeziehungen aufrechtzuerhalten.


Und um die "Kundenperspektive" weiter auszubauen, weiß ich nicht, was die Geschichte hinter der Frage ist, aber es wäre für den Kunden nicht ungewöhnlich zu glauben, dass er die hat Recht zu erwarten, dass der Quellcode wie Fort Knox geschützt wird, während der Entwickler ihn als "Wegwerf" betrachtet, wenn der Kunde in den drei Jahren seit der Bereitstellung keine Änderungen oder zusätzlichen Arbeiten angefordert hat.
Blumer

Beachten Sie, dass Dinge, die einen Kunden ernsthaft verärgern, auch Vertragsverletzungen darstellen und rechtlich strafbar sind. Dies kann auch dazu führen, dass sich der Kunde öffentlich beschwert.
David Thornley

3

Ah, angesichts dieser Klarstellung von Ihnen (in den Kommentaren):

Es wurde vor langer Zeit ohne Quellcodeverwaltung entwickelt, sie haben es die ganze Zeit verkauft und jetzt müssen sie es plötzlich aktualisieren

In dieser speziellen Situation würde ich sagen, dass es wahrscheinlich nicht das Ende der Welt ist. Angesichts der Tatsache, dass sie die Software seit Jahren verkaufen, ohne den Quellcode zu benötigen, können Sie diesem Kunden, der das Update anfordert, einfach sagen: "Entschuldigung, das können Sie nicht."

Versteh mich jetzt nicht falsch, den Code zu verlieren ist nicht gut. Es wird für Ihr Unternehmen sehr teuer sein, die Originalversion neu zu schreiben oder zurückzuentwickeln (wenn sie sich dazu entschließen). Aber es ist nicht das Ende der Welt. Sie haben offensichtlich so lange überlebt, ohne den Code zu benötigen, also überleben sie wahrscheinlich weiterhin ohne ihn.

Dies setzt natürlich voraus, dass die Software, die sie verkaufen, nur einen kleinen Teil ihres Geschäfts ausmacht. Was ich vermute, muss der Fall sein ...


Ja, es ist nur eines von vielen Produkten, die sie verkaufen
JoelFan

Es ist nicht nur 1 Kunde ... es wird nicht mehr auf der neuesten Version des Betriebssystems
funktionieren

1

Solange sie das Produkt noch verkaufen können, glaube ich nicht, dass sie in Schwierigkeiten sind. Wenn sie nun einen Vertrag mit einem Kunden haben, um das Produkt zu erweitern und bestimmte neue Funktionen in der nächsten Version bereitzustellen, ist dies viel schwerwiegender, da sie für Vertragsverletzungen eingerichtet werden. Aber ich glaube nicht, dass es ein rechtliches Problem gibt, den Code selbst zu verlieren.

Dies bedeutet nicht, dass es keine absolute Katastrophe für das Unternehmen ist. Aber es ist eine finanzielle Katastrophe. keine legale. Ich würde wahrscheinlich mit dem Begriff "grobe Inkompetenz" beginnen und mich von dort nach oben arbeiten.


-1: "Ich glaube nicht, dass sie in Schwierigkeiten sind" Sie können keine Fehler beheben, patchen oder Änderungen vornehmen, wenn Microsoft das Betriebssystem "aktualisiert". Sie sind völlig dazu verdammt, einen schnell schwindenden Kundenstamm zu bilden, und die einzigen neuen Verkäufe werden darin bestehen, Idioten zu vervollständigen. (Eine Bevölkerung ungleich Null, aber eine ohne viel Geld für sfotware.)
S.Lott

@ S.Lott: Was vielleicht wichtiger ist, sie können nicht einmal neu kompilieren. Wenn sich in der Kundenumgebung etwas ändert, funktioniert die Software nicht.
David Thornley

1

Um ehrlich zu sein, denke ich, dass es von der verwendeten Sprache abhängt. Wenn Sie eine C # -Codebasis verlieren, kann diese extrem einfach dekompiliert werden. Wenn Sie jedoch eine C ++ - Codebasis verlieren, ist das weitaus schlimmer.


Bis zu dem Punkt dekompiliert, an dem es noch gebaut und ausgeführt werden kann, aber wäre es noch wartbar?
Jay

3
Wenn Sie eine gute Codierungspraxis befolgt haben, dann auf jeden Fall ja . Alle Methoden- und Feldnamen bleiben erhalten, auch private. Wenn die Methoden kurz sind, sollte der Zweck lokaler Variablen offensichtlich sein. Compiler-Tricks wie anonyme Methoden und Iteratoren sehen möglicherweise einschüchternd aus, können jedoch mit etwas Arbeit (falls erforderlich) rückgängig gemacht werden. Und selbst wenn die Assembly verschleiert war, sollte irgendwo eine Debug-Version herumliegen .
Hinweis für sich selbst - denken Sie an einen Namen

Es sei denn, der einzige Code, den Sie haben, ist verschleiert. In diesem Fall wird es ein bisschen schmerzhaft.
MIA

1

Wenn dies bekannt wird, folgt jeder Anbieter, der seinen Quellcode auf andere Weise als durch eine ziemlich weit verbreitete Katastrophe verlieren könnte, offensichtlich keinen soliden Entwicklungspraktiken und ist nicht vertrauenswürdig. Ich würde das als sehr starken Anscheinsbeweis für grobe Unternehmensinkompetenz betrachten.

Wie wäre es mit "unglaublicher Dummheit"?


0

Ich würde es mit anderen Jobs vergleichen, die den Bau eines Gegenstands erfordern. Wahrscheinlich etwas Körperliches. zB wenn ein Architekt die Pläne für ein Gebäude verloren hat, das gebaut wurde; Wenn eine Automobilfirma die Pläne für ein Automodell verloren hat; Wenn eine Näherin das Muster für ein Outfit verlor, das sie gemacht hatte; usw.

Es gibt viele Jobs, bei denen physische Vergleiche mit der Erstellung von Software vergleichbar sind.


Nur dass die Pläne normalerweise nicht so wichtig sind. Wenn der Architekt die Pläne verliert, kann ein anderer noch Änderungen am Gebäude überwachen. Wenn ein Automobilunternehmen die Pläne verliert, können seine Autos immer noch auf Straßen mit neu entwickeltem Bürgersteig fahren. Wenn ich den Quellcode verliere, kann ich das Programm nicht wesentlich ändern und es nicht neu kompilieren, damit es auf einem neuen Betriebssystem oder mit einer neueren Version einer Bibliothek ausgeführt wird.
David Thornley

@ David: Ich glaube nicht, dass du meine Analogie verstanden hast. Wenn ein Architekt die Pläne für ein Gebäude verliert, muss er die Pläne neu erstellen, um ein neues zu bauen. Ich sehe auch nicht ein, wie ein anderer Architekt Änderungen an einem Gebäude überwachen kann, wenn er nicht vorhat, abzureisen. Sie haben die Automobil-Analogie völlig falsch angewendet. Sie haben jedoch darauf hingewiesen, dass es sich ohnehin um eine schwache Parallele handelt.
Frogstarr78

@ frogstarr78: Es ist möglich, Änderungen an einem Gebäude ohne die ursprünglichen Pläne vorzunehmen. Dort gibt es ein Gebäude, das beobachtet werden kann. Der Bau eines neuen Gebäudes würde wahrscheinlich neue Pläne erfordern, obwohl sie auf den alten basieren könnten. Die Pläne für ein Automodell werden nur für ein Modelljahr notwendig sein; Danach ist es möglich, das Auto auf notwendige Informationen zu untersuchen. Der Verlust von Plänen an physische Objekte ist nicht gut, wirkt sich jedoch nicht so stark auf die Benutzerfreundlichkeit aus wie der Verlust von Quellcode.
David Thornley

@ David: Ich bin anderer Meinung.
Frogstarr78

@ David: Es klingt für mich so, als würden Sie die Neugestaltung von Plänen für ein Haus oder ein Auto vergleichen, um so einfach zu sein, wie ein laufendes Programm zu sehen und es ändern zu können. Wenn das Programm kompiliert ist (und ja einigermaßen plattformübergreifend) oder ein Auto bereits gebaut wurde oder ein Haus bereits gebaut wurde, können Sie alle verwenden. Wenn Sie jedoch eines dieser Dinge ändern müssen (wie ich bereits sagte, ist das Auto das wöchentlichste Beispiel hier), benötigen Sie Pläne, um dies zu tun. Ich sage nicht, dass diese Beispiele perfekt sind, aber sie stellen das Konzept in den Bereich von etwas Physischem und Vertrautem für die meisten Menschen.
Frogstarr78

0

Ich denke, abgesehen von der Möglichkeit, den Code zu dekompilieren, wäre dies ein ziemlich großes Problem, vorausgesetzt, das Unternehmen beabsichtigt, das Softwareprodukt weiterhin zu vermarkten. Wenn es sich um eine interne Anwendung handeln würde, würde dies in geringerem Maße zutreffen.

Wenn Sie den Quellcode nicht wiederherstellen können, können Wartungsarbeiten (Fehlerbehebungen) und Verbesserungen nicht durchgeführt werden, sodass die Anwendung jetzt statisch ist. Wenn Microsoft oder Apple oder Apache oder wer auch immer Ihre Betriebsplattform ihren Code ändert oder aktualisiert, funktioniert Ihr alter kompilierter Code möglicherweise nicht und Sie können ihn nicht reparieren. Wenn Sie diese Anwendung an externe Kunden verkaufen, können Sie nicht steuern, wann diese ihre Windows-, MAC OSX-, iPhone- oder Webbrowser aktualisieren, sodass Sie hier ein ziemlich großes Risiko für den Ruf Ihres Unternehmens und möglicherweise ein rechtliches Risiko haben, auch wenn Sie einen Wartungsvertrag haben mit den Kunden.

Zweitens stellt der Quellcode einen Vermögenswert für das Unternehmen dar. Für ein Softwareunternehmen ist es also ein Gewinn in den Büchern. Es ist etwas, das Sie als Produkt verkaufen oder den Quellcode und alle Rechte an ein anderes Softwareunternehmen verkaufen können. Ich würde ein Softwareprodukt nicht weiter an Kunden verkaufen, von denen ich wusste, dass ich sie nicht warten konnte, da ich den Quellcode verloren habe. Außerdem bezweifle ich, dass ein anderes Softwareunternehmen die Anwendung und alle Rechte kaufen würde, wenn es das Produkt nicht weiterentwickeln könnte. Daher muss der Vermögenswert dieser Anwendung reduziert werden.

Bei einer internen Inhouse-Anwendung haben Sie möglicherweise mehr Kontrolle über die Betriebsplattform Ihrer Anwendung. Ich würde jedoch weiterhin versuchen, diese Anwendung zu ersetzen, wenn der Quellcode nicht in eine für die Wartung verwendbare Codebasis dekompiliert werden kann.

Prost,

Kevin

PS Ich hoffe das ist nur eine theoretische Frage ... :)


-1

Wenn sie keine Fehler beheben müssen, ist das wahrscheinlich keine große Sache. Wenn das Unternehmen beispielsweise benutzerdefinierte ActiveX-Steuerelemente herstellt und die Quelle an eines seiner Legacy-Produkte verliert, wen interessiert das dann wirklich? Das Produkt wird wahrscheinlich nicht aktiv gewartet und wahrscheinlich auch nicht aggressiv vermarktet. Sie werden es verkaufen, solange die Leute noch 32-Bit-ActiveX verwenden, und es dann vergessen.

Trotzdem würde ich es immer noch als grobe Fahrlässigkeit einstufen. Offensichtlich gibt es kein Quellcodeverwaltungssystem, was eine professionelle Inkompetenz für ein Softwarehaus darstellt.


-1: "Wenn sie keine Fehler beheben müssen" Was für ein beneidenswertes Maß an Perfektion. Wer hat so gute Software? Jemand?
S.Lott

1
"Fehler müssen nicht behoben werden"! = "Keine Fehler". Viele Unternehmen verkaufen weiterhin EOL-Software mit einer Liste bekannter Fehler, die sie nicht beheben möchten. Wie ein USB-Treiber für Win98 - sie sind da draußen, sie sind wahrscheinlich nicht perfekt, aber ich bezweifle, dass jemand Fehlerbehebungen anwendet.
TMN
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.