Quanto è grave la perdita del codice sorgente? [chiuso]


9

Se una società di software perde il codice sorgente di uno dei prodotti che sta vendendo, quanto sarebbe grave, in termini che potresti spiegare a un laico? Il termine "negligenza grave" sarebbe troppo forte? O "grave incompetenza"? Ovviamente nessuno è stato ucciso, ma non è così grave come una negligenza finanziaria per cui le persone ottengono il carcere?

EDIT: Diciamo che non è un caso di crash di un'unità disco, disastro naturale o qualcosa del genere. Solo l'hanno smarrito.


37
C'è una storia dietro questa domanda, e così voglio ascoltarla. Aspetterò solo che appaia sul Daily WTF.
BlairHippo,

4
@Josh K - Cattiva analogia! Un bambino non può essere sostituito. Il codice sorgente può. (e sono seriamente scosso se pensi che source_code == bambino). Ma suppongo che tu non ne abbia (ancora).
Rook,

6
@Rook: Perché è una cattiva analogia? Il codice sorgente non può essere sostituito esattamente, può solo essere replicato in modo simile. Certo, questo non è estremo come perdere un bambino, ma la similitudine è ancora sana.
Josh K,

6
@Rook: Ti manca il punto che mentre uno (i bambini) sono ovviamente molto più importanti del codice sorgente, il possesso di entrambi è ancora molto apprezzato. Stai respingendo la mia analogia perché i bambini sono più importanti del codice sorgente sarebbe come respingere Yahoo! come società di ricerca perché Google è molto più grande. Il mio punto è che entrambi sono enormi, il fatto che uno sia ~ 10 volte più significativo / importante dell'altro non importa. Ti dico cosa, perdi il repository (e tutte le copie del codice) per l'applicazione principale della tua azienda e torna da me in 5-10.
Josh K,

5
Non capisco come possa esserci una sola copia da "smarrire" in primo luogo? In genere ho almeno due o tre copie me stesso in varie fasi di correzioni, aggiornamenti e patch su cui sto lavorando. I miei colleghi avrebbero avuto le loro copie. Nel peggiore dei casi, potresti perdere la cronologia nel tuo repository di origine (se stai utilizzando un repository centrale senza backup) ... Non vedo come sia possibile ...
Dean Harding

Risposte:


27

Diciamo che MS perde la fonte per Windows Phone 7 ... le persone sono state uccise per waaaaay meno dei 400 milioni di dollari stimati per svilupparlo.

A seconda del prodotto, non esiste un termine a cui possa pensare che sia "troppo forte".


1
Se vendono software e non dispongono del codice sorgente, sì, è incompetente. Tuttavia, come sviluppatore di software personalizzato, è sorprendente la frequenza con cui ho incontrato piccole aziende gestite da non programmatori che hanno esternalizzato il loro sviluppo e non avevano nemmeno copie costruibili del codice sorgente per il software che stavano vendendo.
Bob Murphy,

1
E non sono solo le piccole aziende a farlo. La mia società di consulenza faceva molto lavoro per Informix, che in passato era un valido concorrente per Oracle. Decisero di trasferire uno dei nostri progetti in una società di outsourcing indiana e un giorno il direttore ci chiamò: "Non ci hai inviato la fonte!" "Sì, l'abbiamo fatto, era in data X (circa un anno prima), ed ecco il numero di tracciamento FedEx. L'hai perso?" "No certo che no." "Va bene se lo hai fatto, perché possiamo recuperarlo dai nostri archivi, ma ci sarà una commissione." "No, non preoccuparti." Abbiamo scoperto in seguito che l'avevano effettivamente perso.
Bob Murphy,

18

Per un'azienda è come perdere i gioielli della corona. Se si tratta di un prodotto con un processore incorporato, possono continuare a rendere il prodotto "così com'è", ma perdono la capacità di migliorarlo o di risolvere eventuali problemi.

Nei mercati di oggi un'azienda è il suo IP. Perdi quello e va fuori mercato.


13

Come hanno notato gli altri, questo probabilmente rientra nella rubrica "Tutto dipende", quindi un paio di senari:

Sorgente per un videogioco su console, basato su disco - Ciò avrebbe probabilmente un impatto limitato sull'azienda poiché tendono a non apportare modifiche al gioco una volta che è stato masterizzato su disco. Concesso che potrebbero perdere un po 'di tempo se c'è un codice di libreria che devono riqualificare, non sarebbe così male.

Fonte per un videogioco scaricabile - Questo sarebbe probabilmente un male poiché i clienti probabilmente si aspetteranno che i bug vengano corretti, non essere in grado di farlo potrebbe far perdere fiducia ai clienti nella società che potrebbe influenzare negativamente le versioni future.

Fonte di un gioco in sviluppo - La maggior parte delle società di videogiochi non può permettersi di perdere il codice per un gioco attualmente in sviluppo a meno che non sia estremamente precoce nel ciclo di sviluppo (cioè giorni, forse settimane). Per una piccola azienda, perdere la fonte perché il loro rilascio di punta potrebbe farli fallire.

Fonte per un'applicazione per piccole aziende con un pubblico a rilascio limitato : è improbabile che possa causare problemi alla società, sebbene possano perdere un paio di clienti.

Fonte per un'applicazione aziendale di grandi dimensioni con un pubblico a rilascio limitato : un'altra situazione in cui potrebbe causare la cessazione dell'attività da parte della società a causa della perdita di fiducia dei propri clienti. Anche nella maggior parte dei piccoli mercati ci sono più di un'azienda che opera e questo potrebbe essere sufficiente per consentire all'azienda di passare a un concorrente.

Fonte per una grande applicazione di una grande azienda - Qui è dove tutto dipende davvero e sarebbe probabilmente su una base molto stretta, caso per caso. I prodotti di punta (ad es. Microsoft Windows) hanno generalmente contratti di supporto associati e la mancata supporto del prodotto potrebbe comportare la violazione di azioni legali. Se dovessi fornire un preventivo, direi che la maggior parte delle persone coinvolte nella perdita del codice fino alla leadership senior di quelle persone potrebbe aver bisogno di cercare una nuova occupazione.

Tuttavia, direi probabilmente che la persona che ha perso il codice sarebbe alla ricerca di un nuovo lavoro (e potrebbe trovarlo difficile trovarne uno!) E potrebbero anche affrontare azioni legali da parte dell'azienda.


È comune riutilizzare gran parte del codice sorgente di un gioco precedentemente rilasciato quando si sviluppa un gioco successivo, specialmente quando si sviluppa il sequel. Tuttavia, date le vite relativamente brevi degli studi di gioco, negli ultimi decenni non è stato raro sentire notizie sulle perdite delle fonti di gioco.
pulire il

3

Mentre ci sono certamente casi in cui potrebbe essere catastrofico, penso che ce ne siano molti in cui non lo è (almeno dal punto di vista della società di software).

Penso che ci siano troppe variabili per dare una risposta generale sul fatto che ci siano ripercussioni legali, ma una manciata di domande da considerare nel determinare che includerebbe:

  • Qual è la natura del programma? Se è qualcosa che hanno perso perché app come questa sono una dozzina e non è importante , e allora? Se si tratta del prodotto commerciale di punta dell'azienda, si sono solo fatti del male. Se si tratta di un software personalizzato che è stato incaricato di costruire, è lì che potrebbe diventare interessante, ma devi chiedere ...
  • Chi possedeva il copyright del codice? (Se il cliente detiene il copyright, la sua proprietà è stata probabilmente persa / distrutta)
  • Il cliente è attivamente danneggiato dalla scomparsa del codice?
  • Sono stati stipulati contratti relativi allo sviluppo futuro che verranno violati a seguito della scomparsa del codice?
  • Quanto è importante essere in grado di ricreare il software esistente? Se è qualcosa come uno script di shell per eseguire attività di manutenzione, la società di software consuma il tempo necessario per crearne uno nuovo che fa le stesse cose. Se si tratta di una suite per ufficio, rispolvera il curriculum.

E sono sicuro che ci sono molti altri fattori che dovrebbero essere considerati. Sentiti libero di aggiungere.

Ora, ho detto "dal punto di vista della società di software". Potrebbe essere ancora catastrofico nella mente del cliente a causa dei piani che avevano per modifiche, miglioramenti o quant'altro. Un contratto per tali cose o la proprietà del copyright, tuttavia, può irritare seriamente il cliente, ma senza alcun obbligo da parte dello sviluppatore oltre a fare il possibile per mantenere buoni rapporti con i clienti.


E per espandere ulteriormente il punto di vista della "prospettiva del cliente", quello che sto arrivando è, non so quale sia la storia dietro la domanda, ma non sarebbe inaudito per il cliente pensare di avere il giusto aspettarsi che il codice sorgente sia custodito come Fort Knox mentre lo sviluppatore lo considera un "buttare via" quando il cliente non ha richiesto alcuna modifica o lavoro aggiuntivo nei tre anni successivi alla distribuzione.
Blumer,

Nota che fare cose che fanno arrabbiare seriamente un cliente potrebbe anche essere una violazione del contratto e legalmente perseguibile. Può anche comportare un reclamo pubblico da parte del cliente.
David Thornley,

3

Ah, dato questo chiarimento da parte tua (nei commenti):

È stato sviluppato molto tempo fa, senza il controllo del codice sorgente, lo hanno venduto per tutto questo tempo e ora all'improvviso hanno bisogno di aggiornarlo

In questa situazione specifica , direi che probabilmente non è la fine del mondo. Dato che vendono il software da anni senza la necessità del codice sorgente, allora puoi semplicemente dire a questo cliente che richiede l'aggiornamento, "mi spiace non poterlo fare".

Ora non fraintendetemi, perdere il codice non va bene. Sarà molto costoso per la tua azienda riscrivere o decodificare la versione originale (se è quello che decidono di fare). Ma non è la fine del mondo. Ovviamente sono sopravvissuti così a lungo senza bisogno del codice, quindi probabilmente continuano a sopravvivere senza di esso.

Ciò presuppone, ovviamente, che il software che stanno vendendo sia solo una piccola parte della loro attività. Che suppongo debba essere il caso ...


Sì, è solo uno dei tanti prodotti che vendono
JoelFan il

Non è solo 1 cliente ... non funzionerà più sull'ultima versione del sistema operativo
JoelFan,

1

Finché sono ancora in grado di vendere il prodotto, non penso che siano nei guai. Ora, se sono sotto contratto con un cliente per estendere il prodotto e fornire alcune nuove funzionalità nella prossima versione, è molto più grave perché li sta configurando per la violazione delle penalità contrattuali. Ma non penso che ci sia un problema legale con la perdita del codice stesso.

Ciò non significa che non sia un disastro assoluto per l'azienda. Ma è un disastro finanziario; non legale. Probabilmente inizierei con il termine "grave incompetenza" e salirò da lì.


-1: "Non credo che siano nei guai" Non possono correggere errori, patch o apportare modifiche quando Microsoft "aggiorna" il sistema operativo. Sono totalmente destinati a una base di clienti in rapido calo e le uniche nuove vendite saranno quelle di completare gli idioti. (Una popolazione diversa da zero, ma una senza un sacco di soldi da spendere in sfotware.)
S. Lott

@ S.Lott: Cosa potrebbe essere più importante, non possono nemmeno ricompilarsi. Se qualcosa cambia nell'ambiente del cliente, il software non funzionerà.
David Thornley,

1

Ad essere sincero, penso che dipenda dal linguaggio usato. Se perdi una base di codice C #, può essere decompilato molto facilmente, ma se perdi una base di codice C ++, è molto peggio.


Decompilato al punto in cui poteva ancora essere costruito ed eseguito, ma sarebbe comunque mantenibile?
Jay,

3
Se hai seguito le buone pratiche di programmazione, allora . Vengono conservati tutti i nomi dei metodi e dei campi, anche quelli privati. Se i metodi sono brevi, lo scopo delle variabili locali dovrebbe essere ovvio. Trucchi del compilatore come metodi anonimi e iteratori possono sembrare intimidatori, ma possono essere invertiti (se necessario) con un po 'di lavoro. E anche se l'assembly fosse offuscato, dovrebbe esserci ancora una versione di debug in giro da qualche parte .
Nota per se stessi - pensa a un nome il

A meno che l'unico codice che hai sia offuscato, nel qual caso sarà un po 'doloroso.
MIA,

1

Se ne venisse fuori, beh, qualsiasi fornitore che potrebbe perdere il suo codice sorgente con qualsiasi mezzo diverso da un disastro abbastanza diffuso non sta ovviamente seguendo qualcosa come le pratiche di sviluppo del suono, e non ci si deve fidare. Lo considererei una prova prima facie molto forte di grave incompetenza aziendale.

Che ne dici di "incredibile stupidità"?


0

Lo paragonerei ad altri lavori che richiedono la costruzione di un oggetto. Probabilmente qualcosa di fisico. ad es. se un architetto ha perso i piani per un edificio costruito; Se un'azienda automobilistica perdesse i piani per un modello di automobile; Se una sarta perse il motivo per un abito che avevano realizzato; eccetera.

Esistono molti lavori che hanno confronti fisici da paragonare alla creazione di software.


Solo che i piani di solito non sono così importanti. Se l'architetto perde i piani, un altro può ancora supervisionare le modifiche all'edificio. Se un'azienda automobilistica perde i piani, le sue auto possono ancora guidare su strade con pavimentazione di nuova concezione. Se perdo il codice sorgente, non posso modificare il programma in modo significativo e non posso ricompilarlo per farlo funzionare su un nuovo sistema operativo o con una versione più recente di una libreria.
David Thornley,

@ David: non credo che tu abbia capito la mia analogia. Se un architetto perde i piani di un edificio, deve rifare i piani per costruirne uno nuovo. Inoltre non vedo come un altro architetto possa supervisionare le modifiche a un edificio se non hanno intenzione di andarsene. Hai applicato erroneamente l'analogia con l'automobile. Tuttavia, hai sottolineato che era un po 'un parallelo debole comunque.
frogstarr78,

@ frogstarr78: è possibile apportare modifiche a un edificio senza i piani originali. C'è un edificio lì che può essere osservato. La costruzione di un nuovo edificio richiederebbe probabilmente nuovi piani, anche se potrebbero essere basati su quelli vecchi. I piani per un modello di auto saranno necessari solo per un anno modello; successivamente, è possibile esaminare l'auto per le informazioni necessarie. Perdere i piani per oggetti fisici non è buono, ma non influisce sull'usabilità quasi quanto perdere il codice sorgente.
David Thornley,

@ David: Non sono d'accordo.
frogstarr78,

@ David: Mi sembra che tu stia confrontando la riprogettazione dei piani di una casa o di un'auto, per essere semplice come vedere un programma in esecuzione e poterlo cambiare. Se il programma è compilato (e sì, ragionevolmente conforme a più piattaforme), oppure è già stata costruita un'auto o una casa è già stata costruita, è possibile utilizzarli tutti. Tuttavia, quando devi cambiare una di queste cose (come ho detto che l'auto è l'esempio più settimanale qui), avrai bisogno di piani per farlo. Non sto dicendo che questi esempi siano perfetti, ma mettono il concetto nel regno di qualcosa di fisico e familiare per la maggior parte delle persone.
frogstarr78,

0

Penso che a parte l'opzione di decompilare il codice, questo sarebbe un problema piuttosto grande supponendo che l'azienda intendesse continuare a commercializzare il prodotto software. Se fosse un'applicazione interna, lo stesso sarebbe vero in misura minore.

Se non è possibile ripristinare il codice sorgente, la manutenzione (correzione di errori) e i miglioramenti non possono essere eseguiti, quindi l'applicazione è ora statica. Se Microsoft o Apple o Apache o chiunque la tua piattaforma operativa cambi o aggiorni il loro codice, il tuo vecchio codice compilato potrebbe non funzionare e non puoi correggerlo. Se vendi questa applicazione a clienti esterni non puoi controllare quando aggiorneranno Windows, MAC OSX, iPhone, Web Browser, quindi hai un rischio piuttosto grande qui per la reputazione della tua azienda e possibilmente rischio legale anche se hai un contratto di manutenzione con i clienti.

In secondo luogo, il codice sorgente rappresenta una risorsa per l'azienda. Quindi per un'azienda di software è una risorsa sui libri. È qualcosa che puoi vendere come prodotto o vendere il codice sorgente e tutti i diritti a un'altra società di software. Non continuerei a vendere un prodotto software a clienti che sapevo di non poter mantenere poiché ho perso il codice sorgente. Inoltre dubito che un'altra società di software comprerebbe l'applicazione e tutti i diritti se non potesse sviluppare ulteriormente il prodotto. Quindi il valore patrimoniale di questa applicazione deve essere ridotto.

Per un'applicazione interna interna potresti avere un maggiore controllo sulla piattaforma operativa per la tua applicazione, ma cercherei comunque di sostituire questa applicazione se il codice sorgente non può essere decompilato in una base di codice utilizzabile per la manutenzione.

Saluti,

Kevin

PS Spero che questa sia solo una domanda teorica ... :)


-1

Se non devono correggere alcun bug, probabilmente non è un grosso problema. Ad esempio, se la società esegue controlli ActiveX personalizzati e perde l'origine di uno dei suoi prodotti legacy, a chi importa davvero? Probabilmente il prodotto non viene mantenuto attivamente e probabilmente non viene neppure commercializzato in modo aggressivo. Lo venderanno finché le persone usano ancora ActiveX a 32 bit, e poi se ne dimenticano.

Detto questo, lo classificherei comunque come grave negligenza. Ovviamente non esiste un sistema di gestione del codice sorgente, che è incompetenza professionale per una software house.


-1: "Se non devono correggere alcun bug" Che livello di perfezione invidiabile. Chi ha un software così buono? Chiunque?
S. Lott,

1
"Not must to fix bugs"! = "Nessun bug". Molte aziende continuano a vendere software EOL con un elenco di bug noti che non hanno intenzione di correggere. Come un driver USB per Win98 - sono là fuori, probabilmente non sono perfetti, ma dubito che qualcuno stia applicando correzioni di bug.
TMN,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.