Quais são os casos em que manter o código fonte em segredo é justificado?

8

Quando trabalhei como freelancer, encontrei muitos casos em que os clientes estavam protegendo suas idéias e código-fonte de seus projetos (como aplicativos da Web) o máximo possível, não importando o quão sem importância, desinteressante e sem originalidade eram os projetos e os conceitos por trás deles. .

Eu já postei uma pergunta sobre como manter as idéias em segredo e recebi muitas ótimas respostas. Agora, minha preocupação é mais com o sigilo do código fonte.

De acordo com minhas observações de:

  • As bases de código em que tive que trabalhar durante minha carreira,
  • Minha vontade de manter em segredo parte do meu código-fonte e:
  • Alguns artigos, como, por exemplo, Resposta aberta a Simon Stuart pelo popular colaborador Programmers.SE Mason Wheeler ,

Concluo que o código fonte é mantido em segredo principalmente por esses motivos:

  1. Como o autor tem vergonha do código de uma qualidade tão ruim ou a empresa teme perder a reputação se alguém vê uma base de código tão ruim, ou que, dada a baixa qualidade da base de código, isso não trará nada útil a ninguém para abrir o código: mesmo se alguém estivesse interessado, dificilmente seria capaz de executar a solução (ou, muitas vezes, até compilar).

  2. Como partes do código são roubadas (principalmente de projetos de código aberto cobertos por uma licença que restringe seu uso em uma determinada situação),

  3. Porque o código depende da segurança pela obscuridade e o autor não se importa com o princípio de Kerckhoffs .

  4. Como o produto é tão frágil que exibir o código causaria muitos danos: se um aplicativo de código-fonte fechado com todos esses vazamentos de segurança suportasse um hacker iniciante, o mesmo aplicativo de código aberto teria chances muito menores, porque mesmo o hacker iniciante só preciso estudar o código para descobrir todos os buracos.

    Se não estiver claro do que estou falando, aqui está um exemplo:

    if (credentials.password === 'masterPassword12345')
    {
        isLoggedIn = true
        currentUser = credentials.userName
    }
    else
    {
        authenticate(credentials)
    }
    
  5. Porque o autor superestimou o código fonte (e suas próprias habilidades e conhecimentos). Exemplo: acreditar que um algoritmo caseiro relacionado à criptografia (que nunca foi revisado por ninguém) é melhor do que qualquer um conhecido.

  6. Porque o autor acredita que a idéia por trás do código é ótima e que seria roubada.

  7. Por causa da síndrome "Não é perfeito o suficiente". Em outras palavras, o desenvolvedor está disposto a liberar o código fonte para o público quando o código for "bom o suficiente", mas dia após dia ainda há coisas a melhorar, para que o código nunca seja lançado.

Todas essas razões dão uma imagem bastante negativa das pessoas que são contra a publicação do código fonte.

Existem casos válidos para não divulgar ao público o código de alta qualidade que segue o princípio de Kerckhoffs?

Arseni Mourzenko
fonte
Eu amo esta pergunta, mas ...
James McLeod
3
Eu amo essa pergunta também. A questão "código fechado" versus "código aberto" é baseada em opiniões ", mas não é possível encontrar razões válidas para o código fonte (pelo menos não na minha opinião). Gostaria de reabrir a pergunta, mas não tenho reputação suficiente para isso.
K3b
Também não posso votar para reabrir, mas acho que essa é uma pergunta "boa e subjetiva". Dada a justificável inclinação para o software de código aberto da SO, acho que uma investigação sobre quando o código fechado é bom é uma questão válida.
1
Não xkcd desta vez: clique em
Vorac 3/13
Que pergunta insana. É como perguntar por que um artista não daria sua arte de graça? Não é como se alguém pudesse copiá-lo e usá-lo para seu próprio lucro. Oh espere, sim eles podem. Mesmo com software.
Dunk

Respostas:

25

Algumas pessoas e a maioria das empresas têm uma estranha percepção sobre o valor do código.

"Gastamos US $ 100.000 nesse projeto, portanto, o código deve valer a pena" e sentimos a necessidade de protegê-lo.

Na realidade, a maioria dos códigos é mais parecida com tinta. Você gasta US $ 100 em tinta e US $ 200 para aplicá-lo em suas paredes. Mas agora a tinta não vale nada, você não pode vendê-la, ninguém a quer, e mesmo que o fizessem, você não pode tirá-la da parede e colocá-la na parede de outra pessoa.

Pode aumentar o valor do edifício, mas você não pode perceber isso sem vender o edifício.

Você pode "roubar" a base de código da Amazônia (a maioria está disponível gratuitamente em vários projetos de código aberto) e criar um site da Ammassons, mas você não assumirá muitos negócios da Amazônia.

O código é uma parte necessária de qualquer infraestrutura empresarial moderna, mas só tem valor como parte de um processo e cultura, por si só não vale nada.

Eu acrescentaria que há algumas situações em que o código é vital para os negócios e seria valioso o suficiente para qualquer concorrente para que fosse mantido em segredo:

  • Para impedir a manipulação mal-intencionada de suas instalações - um bom exemplo seria o sistema de "page rank" do Google, que está sendo constantemente utilizado para oferecer aos sites uma classificação injustificadamente alta.
  • Algoritmos de negociação automatizados - um concorrente inescrupuloso pode estudar o algoritmo e enganar seu sistema para vender muito baixo e comprar muito alto.
  • Um algoritmo "mais rápido / melhor" - se o ponto de venda exclusivo do seu software for um algoritmo melhor e mais rápido para classificação / compactação / o que quer que seja, provavelmente vale a pena manter esse segredo comercial pelo maior tempo possível.
James Anderson
fonte
3
+1 para a analogia da tinta!
Gerry
3
"Comprei tinta usada, mas felizmente estava na forma da minha casa" - Steven Wright
JeffO
1
À sua lista de códigos que devem ser mantidos em sigilo, acrescentaria: Código que compreende centenas ou mesmo milhares de horas de pesquisa em um sistema específico; que é usado em um pacote de software que permite aos clientes de uma empresa tirar proveito dessa pesquisa sem adquirir o mesmo (nível de) conhecimento; e que, quando divulgado, permitiria aos concorrentes oferecer o mesmo tipo de valor aos seus clientes. Você também não espera que a empresa Coca Cola compartilhe a receita com a bebida da Coca Cola, não é?
Marjan Venema
Ótima resposta, embora eu discorde que o código "por si só não vale nada". Não existe um valor para outros desenvolvedores que possam estudá-lo para seu próprio enriquecimento? (Mesmo se como um exemplo do que não fazer)
Dan1701
Enquanto estivermos usando a analogia da lata de tinta, muitos projetos de software criam suas próprias fábricas de latas de tinta e enchem as latas com várias cores de tinta usando outra fábrica em outra cidade. É verdade que a tinta custa US $ 100 para as fábricas criarem, mas as próprias fábricas custam US $ 1.000.000 para fabricar. Existem observadores para garantir que a tinta tenha a cor certa e, embora a fábrica de latas de tinta conheça a fábrica, o inverso não é verdadeiro.
Robert Harvey
6

Porque era difícil escrever e testar . E design. E especifique. E depurar. E ISO 9000. E documento. E controle de versão. E tire o chefe de cabelos pontudos do caminho. E o que faz valer a pena o trabalho de um engenheiro de software.

E você não quer que seus concorrentes copiem e colem seu código-fonte em vez de colocar tanto tempo e dinheiro quanto você em seus produtos.

mouviciel
fonte
Existem casos em que uma abordagem de negócios bem-sucedida seria copiar e colar código sem agregar nenhum valor?
Arseni Mourzenko
3
@MainMa - Sim: todos os casos que envolvem o uso de código-fonte aberto. Isso inclui a Apple usando o BSD Unix para seu sistema operacional, em vez de desenvolver um sistema operacional a partir do zero.
mouviciel
Está bem. Bom ponto. +1 então.
Arseni Mourzenko
1
Esse é um mau exemplo. Ninguém fica rico vendendo software de código aberto, sem suporte ou valor agregado, com um nome diferente. O OS X foi um pouco de "valor agregado" sobre o BSD. (e pagaram 100% do preço de tabela de qualquer maneira).
DougM 3/13/13
1
@DougM - O ponto não está no software de código aberto, mas no custo de desenvolvimento de software, em comparação ao uso de software já desenvolvido. Se o código-fonte do Photoshop V1 tivesse sido lançado há vinte anos, a Adobe não estaria onde está agora.
mouviciel
4

A resposta mais óbvia de todas, eu acho, é que o software é, para muitas empresas, uma parte substancial do valor que a entidade corporativa agrega aos clientes. Portanto, se alguém pudesse simplesmente modificar e recompilar o código ou reutilizar partes valiosas dele, poderia oferecer o mesmo serviço ou valor. Isso prejudicaria os interesses competitivos da entidade corporativa e possivelmente causaria a perda de dinheiro.

arbn
fonte
1
Na verdade não. A Amazon gastou milhões de capitalistas de risco antes de obter lucro. Este era um mercado que eles mais ou menos criavam com muito pouca concorrência. Você poderia roubar a base de código da Amazônia, mas sem gastar milhões em promoção e branding, não chegaria a lugar algum.
James Anderson
8
@ JamesAnderson: O software é o meio para atingir um fim para a Amazon, não a forma como ganha dinheiro. Se você é da Microsoft ou da Autodesk, o valor se o seu software for uma parte muito maior da imagem.
Blrfl
@ JamesAnderson Editei minha resposta para esclarecer que estou apenas falando sobre um determinado subconjunto de empresas. Como destaca Blrfl, Microsoft, Autodesk, Wolfram Research e provavelmente muitas outras empresas estão nessa situação.
arbn
2
Mas o [Libra | Open] Office faz tudo que o Office faz de graça. Marcas, marketing, contatos com clientes valem muito mais que o próprio software.
James Anderson
4
@JamesAnderson, você acabou de criar um produto (LibreOffice), que foi extraído de um produto de código aberto e ocupou parte de sua base de usuários, ao mesmo tempo em que insistia que não havia valor em proteger o código. Honestamente, você parece estar sendo deliberadamente ignorante.
precisa saber é o seguinte
2

Foi gasto dinheiro para resolver um problema ou um conjunto específico de problemas. Se a concorrência obtiver a resposta para esses problemas de forma "gratuita", isso colocará a empresa que resolveu o problema em desvantagem financeira - especialmente se seria possível para uma empresa maior "chegar ao mercado" antes da empresa criadora porque infraestrutura instalada ou se um concorrente gasta o dinheiro que gastaria no desenvolvimento de marketing.

Além disso, às vezes é possível ter uma idéia das políticas e processos de uma empresa observando essas coisas. Novamente, essas informações podem ser usadas como uma vantagem estratégica. Geralmente, esse é o problema maior ... o código revela o funcionamento interno da empresa.

Don Nickel
fonte
1

Você está certo, a maioria das empresas não precisa se esforçar muito para manter seu código secreto, porque não serve para mais ninguém. Muitas soluções internas estão intimamente ligadas a outros aplicativos e sistemas como um tipo de solução ERP personalizada.

Para algumas empresas, o valor do software faz parte do valor da empresa. Uma base de código ruim que funciona para seus propósitos tem valor e não será motivo de preocupação para um comprador não técnico. Ninguém quer comprar uma empresa com amarras. O comprador quer uma resposta detalhada sobre quem é o proprietário do código e está livre para fazer o que bem entender? Quem sabe, a nova empresa pode querer pegar um aplicativo interno e vendê-lo a outras pessoas do setor e alavancar sua compra. Este grupo não valorizará uma base de código inválida tão alta quanto um aplicativo sólido. Saber que o código foi mantido em segredo (embora isso possa ser uma ilusão) e que não há licenças de código aberto para contornar agrega valor à venda do negócio.

JeffO
fonte
0

Você não distribui o código-fonte porque, quando seu cliente precisar de modificações em um software que você construiu, ele precisará acompanhá-lo e você poderá cobrar um prêmio.

Pieter B
fonte