¿En qué casos se justifica mantener en secreto el código fuente?

8

Cuando trabajaba como freelance, encontré muchos casos en los que los clientes protegían sus ideas y el código fuente de sus proyectos (como aplicaciones web) tanto como sea posible, sin importar cuán importantes, poco interesantes y poco originales fueran los proyectos y los conceptos detrás de .

Ya publiqué una pregunta sobre cómo mantener en secreto las ideas y recibí muchas respuestas excelentes. Ahora, mi preocupación es más sobre el secreto del código fuente.

De acuerdo con mis observaciones de:

  • Las bases de código en las que tuve que trabajar durante mi carrera,
  • Mi propia voluntad de mantener en secreto parte de mi propio código fuente y:
  • Algunos artículos como, por ejemplo, Respuesta abierta a Simon Stuart por parte del popular contribuyente de Programmers.SE Mason Wheeler ,

Concluyo que el código fuente se mantiene en secreto principalmente por esas razones:

  1. Debido a que el autor se avergüenza del código de tan mala calidad, o la compañía teme perder reputación si alguien ve una base de código tan mala, o que dada la baja calidad de la base de código, no traerá nada útil a nadie para abrir el código fuente: incluso si alguien estuviera interesado, difícilmente podría ejecutar la solución (o, a menudo, incluso compilar).

  2. Debido a que partes del código son robadas (principalmente de proyectos de código abierto cubiertos por una licencia que restringe su uso en una situación dada),

  3. Porque el código se basa en la seguridad por la oscuridad y al autor no le importa el principio de Kerckhoffs .

  4. Debido a que el producto es tan frágil que mostrar el código causaría demasiado daño: si una aplicación de código cerrado con todas esas fugas de seguridad resistiera a un hacker novato, la misma aplicación de código abierto tendría muchas menos posibilidades, porque incluso el hacker principiante tendría solo hay que estudiar el código para descubrir todos los agujeros.

    Si no está claro de qué estoy hablando, aquí hay un ejemplo:

    if (credentials.password === 'masterPassword12345')
    {
        isLoggedIn = true
        currentUser = credentials.userName
    }
    else
    {
        authenticate(credentials)
    }
    
  5. Porque el autor sobreestimó el código fuente (y sus propias habilidades y experiencia). Ejemplo: creer que un algoritmo casero relacionado con la criptografía (que nunca fue revisado por nadie) es mejor que uno conocido.

  6. Porque el autor cree que la idea detrás del código es genial y que sería robada.

  7. Debido al síndrome "No es lo suficientemente perfecto". En otras palabras, el desarrollador está dispuesto a lanzar el código fuente al público cuando el código es "lo suficientemente bueno", pero día tras día, todavía hay cosas que mejorar, por lo que el código nunca se lanzará.

Todas esas razones dan una imagen bastante negativa de las personas que están en contra de publicar el código fuente.

¿Existen casos válidos para no divulgar al público el código de alta calidad que sigue el principio de Kerckhoffs?

Arseni Mourzenko
fuente
Me encanta esta pregunta, pero ...
James McLeod
3
También me encanta esta pregunta. El tema "fuente cerrada" versus "fuente abierta" se basa en la opinión ", pero no es posible encontrar razones válidas para la fuente de cloed (al menos no en mi opinión). Me gustaría volver a abrir la pregunta pero no tengo suficiente reputación para esto.
k3b
No puedo votar para reabrir tampoco, pero creo que esta es una pregunta "buena subjetiva". Dada la inclinación justificada hacia el software de código abierto por SO, creo que una investigación sobre cuándo el código cerrado es bueno es una pregunta válida.
1
No xkcd esta vez: haga clic
Vorac
Qué pregunta tan tonta. Es como preguntar por qué un artista no regalaría su arte de forma gratuita. No es que alguien pueda simplemente copiarlo y usarlo para su propio beneficio. Oh espera, sí pueden. Lo mismo con el software.
Dunk

Respuestas:

25

Algunas personas y la mayoría de las empresas tienen una percepción extraña sobre el valor del código.

"Gastamos $ 100,000 en este proyecto, por lo tanto, el código debe valer eso" y sentimos la necesidad de protegerlo.

En realidad, la mayoría del código se parece más a la pintura. Gastas $ 100 en pintura y $ 200 dólares para aplicarlo en tus paredes. Pero ahora la pintura no vale nada, no puedes venderla, nadie la quiere, e incluso si lo hicieran, no puedes quitarla de tu pared y ponerla en la pared de otra persona.

Puede mejorar el valor del edificio, pero no puede darse cuenta de esto sin vender el edificio.

Podría "robar" la base de código de Amazonas (la mayor parte está disponible gratuitamente en varios proyectos de código abierto) y establecer un sitio web de Ammassons, pero no se haría cargo de gran parte del negocio de Amazonas.

El código es una parte necesaria de cualquier infraestructura empresarial moderna, pero solo tiene valor como parte de un proceso y cultura, por sí solo no vale nada.

Agregaría que hay algunas situaciones en las que el código es vital para el negocio y sería lo suficientemente valioso para cualquier competidor como para mantenerlo en secreto:

  • Para evitar la manipulación maliciosa de sus instalaciones, un buen ejemplo sería el sistema de "rango de página" de Google, que constantemente se "engaña" para dar a los sitios web un rango injustificadamente alto.
  • Algoritmos de negociación automatizados: un competidor sin escrúpulos podría estudiar el algoritmo y engañar a su sistema para que venda demasiado bajo y compre demasiado alto.
  • Un algoritmo "más rápido / mejor": si el punto de venta único de su software es un mejor algoritmo más rápido para clasificar / comprimir / lo que sea, entonces probablemente valga la pena mantener este secreto comercial el mayor tiempo posible.
James Anderson
fuente
3
¡+1 para la analogía de la pintura!
Gerry
3
"Compré algo de pintura usada, pero afortunadamente tenía la forma de mi casa" - Steven Wright
JeffO
1
Agregaría a su lista de código que debe mantenerse en secreto: Código que comprende cientos o incluso miles de horas de investigación en un sistema específico; que se utiliza en una suite de software que permite a los clientes de una empresa aprovechar esa investigación sin adquirir el mismo (nivel de) conocimiento; y que, cuando se divulgue, permitiría a los competidores ofrecer el mismo tipo de valor a sus clientes. Usted tampoco espera que la compañía Coca Cola comparta la receta de su bebida Coca Cola, ¿verdad?
Marjan Venema
Gran respuesta, aunque estaría en desacuerdo con que el código "por sí solo no vale nada". ¿No hay un valor para otros desarrolladores que puedan estudiarlo para su propio enriquecimiento? (Aunque sea como un ejemplo de lo que no se debe hacer)
Dan1701
Mientras usemos la analogía de la lata de pintura, muchos proyectos de software crean sus propias fábricas de latas de pintura y llenan las latas con varios colores de pintura usando otra fábrica en otra ciudad. Es cierto que la pintura cuesta $ 100 para que las fábricas creen, pero las fábricas mismas cuestan $ 1,000,000 para hacer. Hay observadores para asegurarse de que la pintura sea del color correcto, y si bien la fábrica de latas de pintura conoce la fábrica de pinturas, lo contrario no es cierto.
Robert Harvey
6

Porque era difícil de escribir y probar . Y diseño. Y especificar. Y depurar. E ISO 9000. Y documento. Y control de versiones. Y sacar al jefe de pelo puntiagudo del camino. Y lo que sea que haga que el trabajo de un ingeniero de software valga la pena.

Y no desea que sus competidores simplemente copien y peguen su código fuente en lugar de invertir tanto tiempo y dinero como usted en su producto.

Mouviciel
fuente
¿Hay casos en los que un enfoque comercial exitoso sería copiar y pegar código sin agregar ningún valor?
Arseni Mourzenko
3
@MainMa - Sí: todos los casos relacionados con el uso de código de código abierto. Esto incluye a Apple usando BSD Unix para su sistema operativo, en lugar de desarrollar un sistema operativo desde cero.
Mouviciel
Okay. Buen punto. +1 entonces.
Arseni Mourzenko
1
Ese es un mal ejemplo. Nadie se enriquece vendiendo software de código abierto, sin soporte o valor agregado, con un nombre diferente. OS X fue un poco de "valor agregado" sobre BSD. (y de todos modos pagaron el 100% del precio de lista)
DougM
1
@DougM: el punto no se trata del software de código abierto, se trata del costo de desarrollar software en lugar de usar software ya desarrollado. Si el código fuente de Photoshop V1 se lanzó hace veinte años, Adobe no estaría donde está ahora.
mouviciel
4

La respuesta más obvia de todas, creo, es que el software es, para muchas empresas, una parte sustancial del valor que la entidad corporativa brinda a los clientes. Entonces, si alguien pudiera simplemente modificar y volver a compilar el código, o reutilizar partes valiosas del mismo, entonces podrían ofrecer el mismo servicio o valor. Esto dañaría los intereses competitivos de la entidad corporativa y posiblemente les haría perder dinero.

arbn
fuente
1
Realmente no. Amazon gastó millones de capitalistas de riesgo antes de obtener ganancias. Esto fue en un mercado que más o menos crearon con muy poca competencia. Podrías robar la base de código de Amazonas, pero sin gastar millones en promoción y marca no llegarías a ninguna parte.
James Anderson
8
@JamesAnderson: El software es el medio para un fin para Amazon, no cómo genera su dinero. Si eres un Microsoft o un Autodesk, el valor si tu software es una parte mucho más grande de la imagen.
Blrfl
@JamesAnderson Edité mi respuesta para aclarar que solo estoy hablando de un cierto subconjunto de empresas. Como señala Blrfl, Microsoft, Autodesk, Wolfram Research y probablemente muchas otras compañías se encuentran en esta situación.
arbn
2
Pero [Libra | Open] Office hace todo lo que Office hace de forma gratuita. La marca, el marketing y los contactos con los clientes valen mucho más que el software en sí.
James Anderson
44
@JamesAnderson, acaba de mencionar un producto (LibreOffice), que se bifurcó de un producto de código abierto y tomó una parte de su base de usuarios, al mismo tiempo que insistía en que no hay ningún valor en proteger el código. Sinceramente, parece que estás siendo deliberadamente ignorante.
MikeFHay
2

Se gastó dinero para resolver un problema o un conjunto específico de problemas. Si la competencia obtiene la respuesta para estos problemas de forma "gratuita", eso pone a la empresa que resolvió el problema en una desventaja financiera, especialmente si sería posible que una empresa más grande "llegara al mercado" antes de la empresa creadora porque infraestructura en su lugar, o si un competidor gasta el dinero que HABRÍA gastado en desarrollo en marketing.

Además, a veces es posible hacerse una idea de las políticas y procesos de una empresa al observar estas cosas. Nuevamente, esta información puede usarse como una ventaja estratégica. Este es a menudo el problema más grande ... el código revela el funcionamiento interno de la compañía.

Don níquel
fuente
1

Tienes razón, la mayoría de las empresas no necesitan hacer grandes esfuerzos para mantener su código en secreto, porque no le sirve a nadie más. Muchas soluciones internas están estrechamente vinculadas a otras aplicaciones y sistemas como una especie de solución ERP personalizada.

Para algunas compañías, el valor del software es parte del valor de su compañía. Una base de código deficiente que funciona para sus propósitos tiene valor y no va a ser una preocupación para un comprador no técnico. Nadie quiere comprar una empresa con condiciones. El comprador quiere una respuesta directa sobre quién es el propietario del código y ¿pueden hacer lo que quieran? Quién sabe, la nueva compañía puede querer tomar una aplicación interna y venderla a otros en la industria y aprovechar su compra. Este grupo no valorará una base de código incorrecta tan alta como una aplicación sólida. Saber que el código se mantuvo en secreto (aunque esto podría ser una ilusión) y que no hay licencias de código abierto para solucionarlo agrega valor a la venta del negocio.

JeffO
fuente
0

No entregas el código fuente porque cuando tu cliente necesite modificaciones en un software que creaste, tendrá que ir contigo y puedes cobrar una prima.

Pieter B
fuente