Aparte del hecho de que estoy creando una aplicación web, utilizando mucha tecnología de código abierto (que obviamente no pueden poseer), ¿qué significa realmente esa afirmación?
El contrato debe incluir una cláusula sobre el uso de materiales de código abierto o bibliotecas de terceros. Suele ser algo así como que debes notificar al cliente cualquier material de código abierto que utilices. Asegúrate de no utilizar nada con una licencia de código abierto viral.
Si el contrato no incluye disposiciones sobre material de código abierto o bibliotecas de terceros, es probable que el cliente sea demasiado inexperto como para que merezca la pena trabajar para él, pero aun así deberías tomarte tu tiempo para explicarle que nunca podrás completar la tarea si tienes que reinventar la rueda, el martillo, el pan de molde y la electricidad. (Una vez hablé con un cliente potencial que quería hacer una aplicación para Android sin utilizar ningún tipo de tecnología de terceros. Tuve que explicarles que no era práctico hacer una aplicación sin utilizar el SDK de Android o algún marco de desarrollo de aplicaciones de terceros).
Si escribo un método personalizado bonito y elegante (digamos un before_filter) que resuelve un problema concreto en este proyecto (uno con el que nunca me he encontrado antes, pero que me gustaría utilizar en el futuro), al aceptar esta cláusula ¿significa que no puedo utilizar ese método personalizado ni ninguna otra obra original que cree para ese proyecto?
Por supuesto. Si esto te molesta, vas a tener un muy difícil trabajar por cuenta propia. Hay algunas funciones de ayuda y clases de utilidad que siempre utilizo y que he reescrito desde cero una docena de veces para diferentes clientes.
No soy abogado, pero creo que la regla general es que se puede registrar el copyright de un fragmento concreto de código escrito, pero no de un algoritmo. Así que digamos que se te ocurre un nuevo algoritmo de ordenación mientras trabajas en un proyecto, y el algoritmo de ordenación específico en sí no es una parte intrínseca crucial de la aplicación (es decir, podrías sustituirlo razonablemente por un algoritmo de ordenación diferente). Entonces probablemente tengas claro que debes recrear ese algoritmo de memoria en un proyecto futuro. Sin embargo, si te contrataron específicamente para escribir ese algoritmo, o el algoritmo es muy especializado y no podría sustituirse razonablemente por otro algoritmo, probablemente no deberías intentar reproducirlo más adelante. Además, no memorices el código del algoritmo tan bien que puedas reescribirlo línea por línea de memoria; en ese punto, estás copiando, en lugar de recreando.
Esto parece una trampa en todos los sentidos. ¿Cómo evito que me esposen y me impidan mejorar continuamente mi oficio utilizando el trabajo que he hecho en otros proyectos y mejorándolo?
No es una trampa, es bastante normal. ¿Por qué querría la gente pagarte por escribir un código que luego puedes conservar y reutilizar sin su permiso? Probablemente puedas encontrar algunos clientes a los que les parezca bien, pero no lo planees.