Si la justicia no es buena, debes reducir la complejidad de la relación contractual, para evitar problemas futuros. Por eso, le convences al cliente de que le vas a cobrar 5 veces más caro el desarrollo del programa, pero a cambio le cedes el código fuente, como propiedad.
Desde el punto de vista del cliente, le estás demostrando que no quieres que sea un cliente cautivo (busca la palabra
cautiverio en la página
Mapa estratégico de Wikipedia). Si no lo ve, se lo explicas. Le cuentas que no le estás obligando a nada para el futuro.
A cambio, tu eres libre de hacer otra aplicación para otras empresas. No podrás usar el mismo código fuente... pero siempre hay que hacer modificaciones para ajustarlas a cada cliente... todo consiste en dar una solución muy ajustada a cada uno de ellos, de tal manera que no sean fácilmente trasladables. No te podrán acusar de vender la misma aplicación. Aparte, de lo que has aprendido en hacer una, al hacer la siguiente le incorporarás lo que hayas aprendido hasta entonces.
Dar una buena imagen es importante.
Si en cambio sigues haciendo lo de los demás, lo de dar el código cerrado, los clientes saben que dependen de ti para las próximas modificaciones o si aparecen errores. Al menos, por Europa, eso está cada vez más peor visto. Nadie quiere ser cliente cautivo.
Si el cliente no quiere pagar 5 veces por tener la propiedad intelectual del código, entonces le dices que tu te quedas con la propiedad del mismo y que solo le cobrarás una licencia de uso. Y además, que sepa que eres libre de licenciar de nuevo ese programa a la competencia de ese cliente
En todos los casos, en el presupuesto incluyes los posibles casos de resolución de errores debidos a ti, en un periodo de dos años. Tu pones una cláusula diciendo que le das una garantía durante ese tiempo, y el cliente lo agradecerá.
Si el cliente paga por el código fuente, se lo das en claro. Si el cliente lo quiere compilado, valora antes el trabajo a mayores que te costará realizar eso (herramientas, pruebas de instalación, tiempo, etc.).
Si el cliente solo quiere una licencia de uso, se lo das compilado (en tu país, en otros no es necesario como te he explicado antes).
Formas de proteger Perl hay unas cuantas, empezando por Acme::Bleach... por estos foros se comentan algunas.
Si las grandes empresas contratan programadores de otros países, es por la diferencia de sueldo, claro.
En cuanto a lo raro que parece que es Perl, en algunas ocasiones puede ser una ventaja: como es muy difícil encontrar programadores de Perl, de alguna forma estás creando un cliente cautivo: dependerá de ti para el futuro, incluso aunque le des el código en claro
De todas formas, piensa que si se quiere, se puede decompilar todo.
Y todo lo comentado arriba no tiene nada que ver con el
código abierto.