Cómo el código de software es protegido contra el plagio? Al hacer este tipo de preguntas muchas veces se está pensando en las grandes empresas,casi nunca en un desarrollador freelance o en solitario. Entonces, el riesgo para ellos (por la reputación y litigios) es demasiado grande para los infractores. No van, a nivel corporativo, a utilizar el código ilegal en la práctica. Pero tampoco se puede asumir que todos los empleadores se mantendrán leales a los desarrolladores. No es cierto que esto sea específico del software. El mismo razonamiento se puede aplicar a otros aspectos (por ejemplo, financiero, normativo, etc.). Pero no hay que ser tan ingenuo como para creer que las empresas siempre se comportan de forma legal, pero sí tienen incentivos para evitar conductas gravemente ilegales. En particular, no pueden confiar ciegamente y de forma indefinida en cada persona que sabe algo acerca de su comportamiento real. Como ejemplo reciente, mira lo que pasó en VolksWagen en materia de software "ilegal". Ni siquiera se lo roban, pero lo insertan con fines ilícitos. Por supuesto, podría suceder que algunos empleados están robando o pidiendo prestado un millar de líneas de código. Su jefe directo probablemente podría darse cuenta de que esto está pasando (y si no lo hace, eso no es un gran problema en la práctica). Pero es poco probable que alguien pueda robar un millón de líneas (o sólo la mitad de un centenar de miles) de código fuente sin que se note. Por cierto, las grandes empresas de software tienen abogados internos y los procedimientos de auditoría interna para evitar que grandes trozos de código puedan ser robados: tienen algunos controles internos sobre eso. A modo de ejemplo, he oído que a los desarrolladores de Microsoft no se les permite buscar en el código fuente del software libre desde los ordenadores de oficina. Por último, si tienes una empresa pequeña y un enorme gigante del software ha robado algo de tu código fuente se puede hacer mucho con ayuda de un abogado especialista, si en realidad existe la infracción. Cómo manejan las empresas sus derechos de propiedad intelectual sobre software? Microsoft es la empresa que -cada vez más- es más abierta con el código de su software. Si hubieran robado algo sería de libre acceso para todo el mundo poder ver. Pero una gran parte de su software antiguo no lo es, y creo que puede ser porque hay partes que no están muy bien escritas. Pero los nuevos productos como el nuevo compilador de C # Roslyn son de código abierto y se pueden encontrar en GitHub. Yo diría que, además de los derechos de autor y tratar de patentar tu software (esto es difícil por sunaturaleza), una forma de proteger es el código abierto y subirlo a GitHub. El mundo va a saber que es tuyo y la comunidad también puede ayudar a encontrar errores y corregirlos, incluso de forma gratuita. Cuando se trata de Microsoft, Google y otros gigantes de esa manera, no van a robar la totalidad o parte de tu código, ya que lo más probable es que no será lo suficientemente bueno para ellos. Si un ingeniero quisiera robar, no pasaría la próxima revisión de código. Cuando compran una compañía de software o un producto, están comprando los usuarios y el concepto, no el código en sí. Por supuesto, no siempre es financieramente prudente comenzar de inmediato volver a escribir código, pero a menudo se piensa en ello. Una empresa grande no va a robar, lo van a comprar o escribir desde cero. Ahora, es posible que las empresas más pequeñas y menos importantes estén dispuestas a robar tu software. Simplemente pregúntate qué realmente deseas, quién puede robar tu software y el impacto que esto puede tener. Pasar mucho tiempo, tratando de proteger algo casi nadie va a querer robar es a menudo el enfoque equivocado. Cómo proteger el software? Como se ha señalado en otras ocasiones, el software está generalmente protegido por derechos de autor, (y por la protección de patentes cuando está asociado a una máquina que ejecuta el proceso), si lo que estás haciendo es único. En segundo lugar, a menos que estén en el mismo mercado y necesites el mismo código es difícil ver lo que sería la motivación; la codificación es un proceso de creación de módulos de interconexión, no secciones individuales aisladas. Además, las patentes protegen conceptos y uno o más métodos para la realización del concepto. Realmente no puedes patentar sólo la idea de una máquina del tiempo. Hay falta de claridad en torno al software y algunos precedentes terribles que se distribuyen en la aplicación de patentes. Por ejemplo, puedes tener una patente sobre un método para lograr un borde muy afilado en una hoja de afeitar, pero no sobre cualquier proceso de producción de una. Algunos métodos diferentes no infringirían una patente previa. También hay patrones de diseño que protegerían el "look and feel" de tu software. La pregunta real es lo que estaría cubierto como nuevo y novedoso en tu persecución de propiedad intelectual. En la codificación hay una gran cantidad que es obvio” y sólo puede salir más o menos en un sentido. La secuencia de agarrar el contexto de un controlador JDBC de JNDI es así, al igual que miles de otras secciones de código. Tales secciones no son nuevas Algunas secciones de código ya pueden aparecer en el código fuente abierto en otro lugar, cómo demostrar quién copió a quién? Supón que estás escribiendo un compilador y tiene un optimizador de recursión de cola y lo mismo ocurre con GCC. Un tercero utiliza el mismo método. Pese a las afirmaciones no sería nuevo y novedoso. Sin embargo, si cualquiera de estos ejemplos copiados directamente de la línea de código para la línea, carácter a carácter se romperían los derechos de autor. Puedes permitirte el lujo de iniciar una expedición de pesca dudosa en contra de una empresa que puede demandar sobre sus derechos legítimos para proteger secretos de la compañía? Y si te equivocas? Si una empresa se sintiera tentada a robar algo sería el método, no el código. La escritura de código no es la parte más difícil en el esquema más grande. Qué hacer en caso de infracción? Uno cosa a tener en cuenta es si se habla de infracción de copyright o sobre infracción de patentes. La primera significa que alguien robó tu código, lo último significa que alguien robó tu idea. La infracción de derechos de autor cuando es robado código simplemente no sucederá si tienes un proyecto de código cerrado. Claro que podrías descompilar programas y tratar de improvisar tu propia versión del producto de los restos, pero significa el doble de trabajo y da como resultado un producto muy inferior a continuación, simplemente volver a escribir por ti mismo es la mejor respuesta. Es mucho más fácil simplemente robar el diseño. El estado de la técnica cambia tanto en informática con tanta rapidez que copiar código antiguo puede llevar a soluciones subóptimas. Además, una gran compañía no va a sancionar nada por el estilo y la mayoría del código está trabajado por varios desarrolladores y pasa a través de revisiones de código, así como tiene que cumplir con las normas de estilo de la empresa, la biblioteca escogida y la arquitectura. Si estás construyendo algo que tienes a escala y deseas hacerlo cualitativamente, no deseas aceptar sólo código aleatorio escrito por cualquiera Hay algunos casos en que los fragmentos y grandes porciones de código fuente abierto han sido copiados, por lo general, ingenuamente, a continuación, adquiridos y utilizados para algún oscuro proceso del que en realidad nadie se preocupa. En general, sin embargo, la única precaución razonable que tienes que hacer para evitar la copia de tu código es simplemente compilarlo. Si a un buen desarrollador le gusta lo que has hecho, simplemente copia la esencia del mismo y lo escribe en el lenguaje y la librería de su elección sin ninguna infracción de derechos de autor, simplemente mirando cómo se ejecuta la aplicación. La infracción de patente es un animal diferente. El 99,99999% de las veces en que se infringe una patente de software sucede sin dolo. Las pocas patentes verdaderamente bloqueadas son por lo general tan obvias que nunca deberían haber sido concedidas en primer lugar. Una gran cantidad concedida consegue algo totalmente sin relación, entonces el estado de la técnica avanza de tal manera que hace que una solución particular la manera obvia de hacer algo, pero rara vez debido a que una idea patentada mostró el nuevo camino a seguir. Las ideas verdaderamente revolucionarias que se ejecutan bien crecen durante la noche y se vuelven demasiado grandes para conquistar incluso sin la protección de patentes. No hay prácticamente un coste cero para hacer pequeños cambios en una idea que pueda invalidar una patente. Si sabes de una patente en el software, es trivial para evitarlo. Si Microsoft quiere copiar tu idea, simplemente van a cambiar una cosa y hacerlo a continuación. No te preocupes por violación de patentes. Es mejor preocuparse por la ejecución y conseguir que tu idea llegue a los usuarios lo suficientemente rápido para crear un éxito viral. Si tienes una idea verdaderamente grande, ejecútala bien y primero que nadie, las únicas formas en que una gran compañía puede robarlo a partir de allí es mediante juicio por violación de patentes. Quieres tu propia patente para defenderte más tarde, pero tal vez simplemente no tienes el dinero o los recursos para utilizar tu propia ofensiva como una gran empresa pudiera hacerlo. Piensa en las patentes, como el seguro, que sólo va a hacer que todo funcione en el caso de un evento extremo negativo y no como un seguro contra alguien haciendo un mejor producto. Conclusión Sólo existen muy pocos casos en los que esto sea un problema real. Sólo cuando hay una parte muy específica de código que es extremadamente valiosa y produce salidas que podrían reconocibles para tener una base para acciones legales, y hacer el intento de obligar a un análisis de código fuente. El resto del tiempo no puede ser suficiente el valor económico en el código fuente para justificar la acción. Para tener una base legal que deba ser capaz de demostrar la pérdida económica real y daños. Sin embargo, y esto es cierto para todas las empresas con éxito por ahí - no se puede tener un control efectivo sobre la calidad del código si copia y pegan funciones de todas partes. No sólo crea riesgo de acciones legales, se crea el riesgo de un sistema que no funciona. Es mucho más rentable pagar un equipo de desarrolladores para construir algo desde cero. Por supuesto, siempre habrá el código que se obtiene de desbordamiento de partes y piezas de los blogs y otras fuentes. Todo lo que Googlees "cómo x en Python 3" o similar para encontrar soluciones a los problemas de codificación difíciles. Así que hay una gran cantidad de software propietario que utiliza código comúnmente disponible. Al final del día no es el código lo que es importante, es la velocidad a la que se puede implementar una solución valiosa para un mercado capturado lo que importa.