Qual é a gravidade da perda do código fonte? [fechadas]

9

Se uma empresa de software perder o código-fonte para um dos produtos que está vendendo, qual seria a gravidade disso, em termos que você poderia explicar a um leigo? O termo "negligência grave" seria muito forte? Ou "incompetência grosseira"? Obviamente, ninguém foi morto, mas não é tão grave quanto uma negligência financeira pela qual as pessoas recebem pena de prisão?

EDIT: Digamos que não seja o caso de uma unidade de disco travar, desastre natural ou algo assim. Apenas eles perderam o lugar.

JoelFan
fonte
37
Há uma história por trás dessa pergunta, e eu quero ouvi-la. Vou apenas esperar que ele apareça no Daily WTF.
BlairHippo 21/10
4
@ Josh K - Má analogia! Uma criança não pode ser substituída. O código fonte pode. (e estou seriamente abalado se você acha que source_code == kid). Mas, suponho que você ainda não tenha um.
Rook
6
@Rook: Por que é uma analogia ruim? O código-fonte não pode ser substituído exatamente, apenas pode ser replicado da mesma forma. É verdade que isso não é tão extremo quanto perder um filho, mas o símile ainda é bom.
Josh K
6
@Rook: Você está perdendo o argumento de que, embora um (filho) seja obviamente muito mais importante que o código-fonte, a posse de ambos ainda é muito valorizada. Você descarta minha analogia porque os filhos são mais importantes do que o código fonte seria como dispensar o Yahoo! como uma empresa de pesquisa porque o Google é muito maior. O que quero dizer é que ambos são enormes, o fato de um ser ~ 10x tão significativo / importante que o outro não importa. Diga o que você precisa, solte o repositório (e todas as cópias do código) do aplicativo principal da sua empresa e volte para mim em 5-10.
Josh K
5
Eu não entendo como só pode haver uma cópia para ser "extraviada" em primeiro lugar? I normalmente têm pelo menos duas ou três cópias sozinho em vários estágios de correções, atualizações e patches que eu estou trabalhando. Meus colegas teriam suas próprias cópias. Na pior das hipóteses, você pode perder a história em seu repositório de origem (se você estiver usando um repositório central, sem backups) ... Eu só não vejo como isso é possível ...
Dean Harding

Respostas:

27

Digamos que a MS perca a fonte do Windows Phone 7 ... pessoas foram mortas por muito menos do que os US $ 400 milhões estimados em custos para desenvolvê-lo.

Dependendo do produto, não posso pensar em um termo que seja "muito forte".

Steven Evers
fonte
11
Se eles estão vendendo software e não têm o código fonte, sim, é incompetente. No entanto, como desenvolvedor de software personalizado, é incrível a frequência com que eu deparei com pequenas empresas executadas por não programadores que terceirizaram seu desenvolvimento e nem sequer possuíam cópias construtíveis do código-fonte do software que estavam vendendo.
Bob Murphy
11
E não são apenas as pequenas empresas que fazem isso. Minha empresa de consultoria costumava fazer muito trabalho para o Informix, que antigamente era um concorrente viável da Oracle. Eles decidiram mudar um de nossos projetos para uma empresa indiana de terceirização, e um dia o gerente nos chamou: "Você não nos enviou fonte!" "Sim, nós fizemos, era no dia X (cerca de um ano antes), e aqui está o número de rastreamento da FedEx. Você o perdeu?" "Não, claro que não." "Tudo bem se você o fez, porque podemos recuperá-lo de nossos arquivos, mas haverá uma taxa". "Não, não se preocupe." Descobrimos mais tarde que eles realmente a perderam.
Bob Murphy
18

Para uma empresa, é como perder as joias da coroa. Se for um produto com um processador incorporado, eles poderão continuar produzindo o produto "como estão", mas perderão a capacidade de aprimorá-lo ou corrigir qualquer problema.

Nos mercados de hoje, uma empresa é IP. Perder isso e sair do negócio.

uɐɪ
fonte
13

Como os outros observaram, isso provavelmente se enquadra na rubrica "tudo depende"; portanto, alguns senarios:

Origem de um videogame para console baseado em disco - Isso provavelmente terá pouco impacto na empresa, pois eles tendem a não fazer nenhuma alteração no jogo depois de gravado em disco. Concedido que eles podem perder algum tempo se houver um código de biblioteca que eles precisam reconstruir, não seria tão ruim assim.

Fonte para um videogame para download - Isso provavelmente seria ruim, já que os clientes esperam que os bugs sejam corrigidos, não poder fazer isso pode fazer com que os clientes percam a fé na empresa, o que poderia afetar adversamente os lançamentos futuros.

Origem de um jogo em desenvolvimento - A maioria das empresas de videogames não pode perder o código de um jogo atualmente em desenvolvimento, a menos que seja extremamente no início do ciclo de desenvolvimento (ou seja, dias, talvez semanas). Para uma pequena empresa, perder a fonte pois seu lançamento principal poderia levá-los a fechar o negócio.

Origem de um aplicativo para pequenas empresas com um público de lançamento limitado - É improvável que cause problemas à empresa, embora eles possam perder alguns clientes.

Origem de um aplicativo de negócios grande com um público de lançamento limitado - Outra situação em que a empresa pode sair do negócio devido à perda de fé de seus clientes. Mesmo na maioria dos mercados pequenos, costuma haver mais de uma empresa operando e isso pode ser suficiente para a empresa passar para um concorrente.

Origem de uma grande empresa para uma aplicação importante - Aqui é onde tudo realmente depende e provavelmente seria muito restrito, caso a caso. Os produtos principais (por exemplo, Microsoft Windows) geralmente têm contratos de suporte associados a eles e não poder dar suporte ao produto pode levar à violação de processos judiciais contratuais. Se eu tivesse que fazer uma estimativa, diria que a maioria das pessoas envolvidas na perda do código até a liderança sênior dessas pessoas pode precisar procurar um novo emprego.

No geral, porém, eu diria que a pessoa que perdeu o código estaria procurando um novo emprego (e pode achar difícil encontrar um!) E também pode estar enfrentando ações judiciais da empresa.

rjzii
fonte
É comum reutilizar grandes partes do código-fonte de um jogo lançado anteriormente ao desenvolver um próximo jogo - especialmente ao desenvolver sua sequência. No entanto, dada a vida relativamente curta dos estúdios de jogos, não é raro ouvir sobre as perdas de fontes de jogos nas últimas décadas.
wip
3

Embora certamente haja casos em que possa ser cataclísmico, acho que há muitos em que não é (pelo menos da perspectiva da empresa de software).

Eu acho que existem muitas variáveis ​​para dar uma resposta geral sobre se há alguma repercussão legal, mas algumas perguntas a serem consideradas na determinação de que incluiriam:

  • Qual é a natureza do programa? Se é algo que eles perderam porque aplicativos como esse são uma moeda de dez centavos e não são importantes , e daí? Se é o principal produto comercial da empresa, eles realmente se machucaram. Se é um software personalizado que eles foram contratados para construir, é aí que pode ficar interessante, mas é preciso perguntar ...
  • Quem possuía os direitos autorais do código? (Se o cliente detém os direitos autorais, suas propriedades foram indiscutivelmente perdidas / destruídas)
  • O cliente está sendo prejudicado ativamente pelo desaparecimento do código?
  • Havia contratos em vigor sobre desenvolvimento futuro que serão violados como resultado do desaparecimento do código?
  • Qual a importância de recriar o software existente? Se for algo como um script de shell para executar tarefas de manutenção, a empresa de software gasta o tempo necessário para criar um novo que faça as mesmas coisas. Se for uma suíte de escritório, limpe o currículo.

E tenho certeza de que há muitos outros fatores que devem ser considerados. Sinta-se livre para adicionar.

Agora, eu disse "da perspectiva da empresa de software". Ainda pode ser catastrófico na mente do cliente por causa dos planos que ele tinha para mudanças, aprimoramentos ou outros enfeites. Não obstante, um contrato para tais coisas ou propriedade dos direitos autorais pode irritar seriamente o cliente, mas sem qualquer obrigação por parte do desenvolvedor, além de fazer o possível para manter boas relações com o cliente.

Blumer
fonte
E para expandir ainda mais a parte da "perspectiva do cliente", o que estou falando é que não sei qual é a história por trás da pergunta, mas não seria inédito que o cliente pensasse que tem o direito de esperar que o código-fonte seja protegido como Fort Knox, enquanto o desenvolvedor o considera "descartável" quando o cliente não solicita modificações ou trabalhos adicionais nos três anos desde a implantação.
Blumer
Observe que fazer coisas que irritam seriamente um cliente também pode ser uma violação do contrato e ser legalmente acionável. Também pode resultar na reclamação pública do cliente.
precisa
3

Ah, dado esse esclarecimento seu (nos comentários):

Foi desenvolvido há muito tempo, sem controle de origem, eles o venderam todo esse tempo e agora, de repente, precisam atualizá-lo

Em tal situação específica , eu diria que provavelmente não é o fim do mundo. Como eles vendem o software há anos sem precisar do código-fonte, basta dizer a esse cliente que está solicitando a atualização: "desculpe, não posso fazer".

Agora não me interpretem mal, perder o código não é bom. Vai ser muito caro para sua empresa reescrever ou fazer engenharia reversa da versão original (se é isso que eles decidem fazer). Mas não é o fim do mundo. Obviamente, eles sobreviveram por tanto tempo sem precisar do código, por isso provavelmente continuam a sobreviver sem ele.

Isso pressupõe, é claro, que o software que eles estão vendendo seja apenas uma pequena parte de seus negócios. Acho que deve ser o caso ...

Dean Harding
fonte
Sim, é apenas um dos muitos produtos que eles vendem
JoelFan
Não é apenas um cliente ... ele não funcionará mais na versão mais recente do sistema operacional
JoelFan
1

Enquanto eles ainda puderem vender o produto, não acho que estejam com problemas. Agora, se eles estão sob contrato com um cliente para estender o produto e fornecer certos novos recursos na próxima versão, isso é muito mais sério, porque os está configurando para violar as penalidades do contrato. Mas não acho que exista um problema legal com a perda do próprio código.

Isso não significa que não seja um desastre absoluto para a empresa. Mas é um desastre financeiro; não é legal. Eu provavelmente começaria com o termo "incompetência grosseira" e subisse a partir daí.

Mason Wheeler
fonte
-1: "Eu não acho que eles estejam com problemas". Eles não podem corrigir bugs, corrigir ou fazer alterações quando a Microsoft "atualizar" o sistema operacional. Eles estão totalmente condenados a uma base de clientes cada vez menor e as únicas novas vendas serão completar idiotas. (Uma população diferente de zero, mas sem muito dinheiro para gastar em sfotware).
S.Lott
@ S.Lott: O que pode ser mais importante, eles não podem nem recompilar. Se algo mudar no ambiente do cliente, o software não funcionará.
David Thornley
1

Para ser sincero, acho que depende do idioma usado. Se você perder uma base de código C #, ela poderá ser descompilada com extrema facilidade, mas se você perder uma base de código C ++, isso será muito pior.

Nota para pensar em um nome
fonte
Descompilado até o ponto em que ainda poderia ser construído e executado, mas ainda assim seria sustentável?
Jay
3
Se você seguiu as boas práticas de codificação, então, sim . Todos os nomes de métodos e campos são preservados, mesmo os privados. Se os métodos são curtos, o objetivo das variáveis ​​locais deve ser óbvio. Os truques do compilador, como métodos anônimos e iteradores, podem parecer intimidadores, mas podem ser revertidos (se necessário) com algum trabalho. E mesmo que o assembly tenha sido ofuscado, ainda deve haver uma versão de depuração em algum lugar .
Note to self - pense em um nome
A menos que o único código que você tenha seja ofuscado, nesse caso, será um pouco doloroso.
MIA
1

Se a notícia foi divulgada, bem, qualquer fornecedor que possa perder seu código-fonte por qualquer outro meio que não seja um desastre bastante difundido obviamente não está seguindo nada como boas práticas de desenvolvimento e não é confiável. Consideraria isso uma evidência prima facie muito forte da incompetência corporativa bruta.

Que tal "estupidez incrível"?

David Thornley
fonte
0

Eu o compararia a outros trabalhos que exigem a construção de um item. Provavelmente algo físico. por exemplo, se um arquiteto perdeu os planos para um edifício que foi construído; Se uma empresa automobilística perdesse os planos para um modelo de carro; Se uma costureira perdesse o padrão de uma roupa que havia feito; etc.

Existem muitos trabalhos que têm comparações físicas para comparar com a criação de software.

frogstarr78
fonte
Exceto que os planos geralmente não são tão importantes. Se o arquiteto perder os planos, outro ainda poderá supervisionar as alterações no edifício. Se uma empresa automobilística perder os planos, seus carros ainda poderão dirigir nas estradas com pavimentos recém-desenvolvidos. Se eu perder o código fonte, não posso alterar o programa de maneira significativa e não posso recompilá-lo para que ele seja executado em um novo sistema operacional ou com uma versão mais recente de uma biblioteca.
David Thornley
@ David: Eu não acho que você entendeu minha analogia. Se um arquiteto perde os planos para um edifício, ele precisa refazer os planos para construir um novo. Também não vejo como outro arquiteto pode supervisionar as alterações em um prédio se não tiver planos de sair. Você aplicou totalmente a analogia do automóvel. No entanto, você apontou que, de qualquer maneira, era um pouco paralelo.
Frogstarr78 22/10/10
@ frogstarr78: É possível fazer alterações em um prédio sem os planos originais. Há um prédio lá que pode ser observado. A construção de um novo prédio provavelmente exigiria novos planos, embora pudessem basear-se nos antigos. Os planos para um modelo de carro serão necessários apenas para um ano de modelo; depois disso, é possível examinar o carro para obter as informações necessárias. Perder planos para objetos físicos não é bom, mas não afeta a usabilidade tanto quanto a perda do código-fonte.
David Thornley
@ David: Eu discordo.
Frogstarr78 23/10/10
@ David: Parece-me que comparar o re-desenho dos planos de uma casa ou carro é tão simples quanto ver um programa em execução e poder alterá-lo. Se o programa for compilado (e sim compatível com várias plataformas), ou se um carro já estiver construído ou uma casa já construída, você poderá usá-los todos. No entanto, quando você precisar alterar alguma dessas coisas (como eu disse que o carro é o exemplo mais semanal aqui), você precisará de planos para fazê-lo. Não estou dizendo que esses exemplos são perfeitos, mas eles colocam o conceito no campo de algo físico e familiar para a maioria das pessoas.
Frogstarr78
0

Penso que, além da opção de descompilar o código, esse seria um problema muito grande, supondo que a empresa pretendesse continuar comercializando o produto de software. Se fosse uma aplicação interna, o mesmo ocorreria em menor grau.

Se você não conseguir restaurar o código-fonte, a manutenção (correção de bugs) e os aprimoramentos não poderão ser executados, de modo que o aplicativo agora está estático. Se a Microsoft, a Apple, o Apache ou quem quer que sua plataforma operacional altere ou atualize o código, o código compilado antigo pode não funcionar e você não pode corrigi-lo. Se você estiver vendendo esse aplicativo para clientes externos, não poderá controlar quando eles atualizarão o Windows, MAC OSX, iPhone, Navegador da Web, para que você tenha um grande risco aqui para a reputação da sua empresa e, possivelmente, risco legal também se tiver um contrato de manutenção com os clientes.

Em segundo lugar, o código fonte representa um ativo para a empresa. Portanto, para uma empresa de software, é um trunfo nos livros. É algo que você pode vender como um produto ou vender o código-fonte e todos os direitos para outra empresa de software. Eu não continuaria vendendo um produto de software para clientes que sabia que não poderia manter, pois perdi o código-fonte. Além disso, duvido que outra empresa de software compre o aplicativo e todos os direitos se não puderem desenvolver o produto. Portanto, o valor do ativo desse aplicativo deve ser reduzido.

Para um aplicativo interno interno, você pode ter mais controle sobre a plataforma operacional do seu aplicativo, mas eu ainda gostaria de substituí-lo se o código-fonte não puder ser decompilado em uma base de código utilizável para manutenção.

Felicidades,

Kevin

PS Espero que esta seja apenas uma questão teórica ... :)

Kevin Horgan
fonte
-1

Se eles não precisam corrigir nenhum erro, provavelmente não é um problema. Por exemplo, se a empresa faz controles ActiveX personalizados e eles perdem a fonte de um de seus produtos herdados, quem realmente se importa? O produto provavelmente não é mantido ativamente e provavelmente também não está sendo comercializado de forma agressiva. Eles o vendem enquanto as pessoas ainda usam o ActiveX de 32 bits e depois esquecem.

Dito isto, eu ainda o classificaria como negligência grave. Obviamente, não existe um sistema de gerenciamento de código fonte, que é incompetência profissional para uma empresa de software.

TMN
fonte
-1: "Se eles não precisam consertar bugs", que nível de perfeição invejável. Quem tem um software tão bom? Qualquer um?
S.Lott
11
"Não é necessário corrigir erros"! = "Sem erros". Muitas empresas continuam vendendo o software da EOL com uma lista de bugs conhecidos que não pretendem corrigir. Como um driver USB para Win98 - eles estão por aí, provavelmente não são perfeitos, mas duvido que alguém esteja aplicando correções de bugs.
TMN