Ignorando por un momento la sabiduría de manipular el código fuente, pregúntese cómo debería funcionar esta marca de agua. Necesitas tener archivos diferentes para cada desarrollador. Esto significa que una transformación de código automatizada que no cambia el significado del código, sin embargo, no es reversible. Ah, y no debería hacer que el código sea difícil de mantener. Al final del día, se supone que es un código valioso, ¿no?
¿Agregar espacios en blanco? Eso puede ser trivialmente normalizado. ¿Cambiar nombres de variables? ¿Quiere decir ofuscar el código fuente en su propio árbol fuente?
Y si la marca de agua falla alguna vez: "¡Oye, rompiste la compilación!" "En tu pago, tal vez. Funciona para mí ".
A continuación, piénsalo: necesitas tener diferentes archivos para cada desarrollador . ¿Colaborar en la caza de un error? "Seguí el problema en el depurador, x
no está inicializado". "¿Qué x
? Solo tengo y
y z
en mi copia ".
Incluso si de alguna manera encuentras una forma de marcar con marca de agua el código fuente, esto solo puede ser útil si los desarrolladores no tienen otra forma de obtener el código fuente. Por lo tanto, hacer que el servidor de compilación produzca un archivo de origen es correcto. Eso no es un obstáculo, pero estás caminando en una línea delgada.
Ahora pensemos por un minuto en la sabiduría de este enfoque. Le está diciendo a los desarrolladores que confía en ellos para escribir código (y no para hacer un trabajo de mala calidad, o para plantar puertas traseras), pero no confía en que no filtren el código. Primero, esta posición parece bastante inconsistente, por lo que no va a ir bien con su desarrollador típico. Segundo, está haciendo su trabajo más difícil (ver más arriba) sin beneficios tangibles. Una vez más, eso no va a ser popular. El resultado final predecible es que sus desarrolladores echarán un vistazo a sus métodos de codificación, irán y aportarán sus ideas a la competencia, y lo dejarán con su código de mala calidad.
Incluso si por algún milagro pudieras implementar un sistema de marca de agua, ¿qué tan útil crees que podría ser? Si la versión de Alice del código fuente se filtra, ¿cómo sabe si Alice lo filtró? Si Eve quiere filtrar el código, asumiendo que no puede deshacerse de su marca de agua o cambiarla por la de Alice, puede ocultar sus huellas filtrando el código de Alice. Puede acceder a la máquina de Alice a escondidas, por lo que necesita cifrar todas las unidades, entrenar a sus desarrolladores contra los ataques de la criada maligna, tener políticas estrictas de no compartir macros de editor o parches no comprometidos ... Si bien algunas de estas son buenas medidas de alta seguridad, para bloquear todos los ataques También debes limitar seriamente la eficiencia del equipo.
Si tiene un cuerpo de código significativo, lo que puede hacer es limitar el acceso al código fuente, de modo que cada equipo solo vea los módulos en los que está trabajando. Para bases de código suficientemente grandes, esto es de hecho una buena higiene, ya que mantiene la independencia entre los componentes. Si restringir el acceso a partes del código fuente no le funciona, no tiene el código suficiente o no necesita la confidencialidad suficiente para siquiera considerar este esquema de marca de agua.