Otra forma de hacerlo (mas facil y correcta) es usando un control de versiones con
branching, las mejores opciones son
mercurial (el que uso) y
git.
Esto te permite tener 2 versiones y facilmente recombinar los cambios de uno en otro.
Otra manera es con plugins, quizas mas practico aun (aunque usar control de versiones debe ser la regla no importa que
).
------------
Una alternativa, ya que estoy por arrancar un proyecto con un requerimiento similar (porque un cliente pide esto? Para que el competidor no lo tenga!), es dar exclusividad por un tiempo limitado.
Total, el desarrollo gasta X tiempo, y mientras pruebas y todo otro X. De esa manera le puedo garantizar X tiempo en el que la mejora es exclusiva, pero por contrato, no le doy licencia exclusiva a partir de ese tiempo.
Si la innovacion realmente es de las que vale la pena, es un compromiso aceptable...