El cliente quiere el código fuente, pero contiene mucho código compartido que reutilizo con otros proyectos

96

Tengo un cliente que desea que entregue el código fuente con una aplicación binaria desarrollada. Originalmente no dijeron nada sobre el código fuente, pero recientemente dijeron que lo necesitan. El contrato no está finalizado. Estuvieron de acuerdo con el trabajo, no firmaron y luego regresaron con esta cláusula.

El problema es: tengo una base de código que he creado a lo largo de los años y la he usado como plantilla para la mayoría de las aplicaciones que escribo. Es mucho más grande que el alcance del proyecto.

También tengo la intención de usarlo para un producto, por lo que realmente no deseo proporcionarlo para un proyecto relativamente pequeño.

Supongo que esta no es la primera vez que esto sucede en esta industria. ¿Cuál es la mejor manera de sortear este problema? Supongo que cosas como las bibliotecas compartidas podrían ayudar.

robby987
fuente
18
¿Para qué lo necesitan? Lo más probable es que solo quieran asegurarse de tener el código en caso de que cierre el negocio. Posiblemente puede agregar licencias que limitan el uso permitido. Hubo un tiempo en que una compañía con la que trabajaba depositaba el código fuente (¿palabra correcta?) En una compañía de abogados como seguridad para tal caso.
thorsten müller
33
El software personalizado debe entregarse con el código fuente. De lo contrario, es un producto minorista. No creo que necesiten un producto congelado en caso de que algo le suceda a usted / su negocio más adelante. Pero cobrar en consecuencia. También considere colocar el código de su biblioteca en una biblioteca compilada (si es compatible con su idioma) para que puedan modificar el software, compilarlo pero no reutilizar fácilmente su biblioteca por sí mismo.
CodeAngry
14
@CodeAngry "debería"? No. Solo si pagan la cantidad correcta de dinero.
o0 '.
32
@CodeAngry no. Es tuyo, a menos que se acuerde lo contrario ...
o0 '.
46
Seamos realistas: no importa cuántos años haya puesto en su marco, no tendrá ningún valor para nadie más que para usted. Nadie creará una nueva aplicación basada en un marco indocumentado, no compatible y generalmente desconocido, sin importar cuán bueno creas que sea. Déles el código fuente completo, asegúrese de conservar los derechos de autor de las partes no personalizadas de su aplicación y obtenga un cliente satisfecho.
Guntram Blohm

Respuestas:

137

Lo primero a tener en cuenta es que el código fuente tiene un valor separado de los binarios. Es perfectamente razonable negarse a firmar un contrato que requiere la entrega del código fuente o insistir en pagos adicionales para la entrega del código fuente. Los contratos son documentos bidireccionales. No permita que la otra parte dicte lo que se requiere solo porque son "grandes empresas" y "hacen esto todo el tiempo". En primer lugar, decidir lo que está dispuesto a entregar y la forma en que desea ser compensado. Luego lleve su contrato a un abogado y determine qué necesita cambiar. Entonces, negocias.

No hagas lo que hacen muchos jóvenes cuando comienzan a contraerse. No solo firme porque parece que tienen mucha experiencia y usted no. Esa es una buena manera de ser estafado.

Mira por qué quieren la fuente. Es posible que lo quieran para tener la opción de usar otro desarrollador más adelante. O pueden quererlo solo porque tienen miedo de que un autobús te golpee y de repente se quedarán con binarios que no pueden mejorar. Si es este segundo caso, busque un Servicio de depósito de garantía de código de software . Estos servicios contienen el código fuente en caso de quiebra o si no puede mantener el software. Esto puede satisfacer tanto su deseo de mantener su código patentado para atender a otros clientes como su deseo de no quedarse con la bolsa con un conjunto de binarios que no se puede mantener si sucede algo malo.

Steven Burnap
fuente
17
¿Qué sucede si el servicio de depósito de garantía de código de software se declara en quiebra?
user11153
21
Entonces, el propietario del código está, con suerte, todavía presente, y puede entregar su código a otro Servicio de depósito. El servicio está destinado a eliminar el punto único de falla.
Alexander
17
¿Los servicios de fideicomiso de código de software utilizan los servicios de fideicomiso de código de software?
FreeAsInBeer
29
@FreeAsInBeer: No, utilizan los servicios de fideicomiso de código de software. Obviamente.
nneonneo
@Alexander, solo si re-custodia es una obligación contratada. De lo contrario, el desarrollador cobrará por el segundo depósito de garantía nuevamente.
Pacerier
67

"No" es una respuesta perfectamente buena, en realidad es una respuesta increíblemente útil que, por alguna razón que no puedo entender, está muy subestimada.

"Hola, de repente decidimos que también queremos el código fuente, de forma gratuita".
"Hola no"

No es tan difícil, de verdad.

Luego, si desean pagar grandes cantidades de dinero sobre lo que ya le deben, puede darles una versión recortada de su solicitud, que incluya solo las fuentes que realmente necesitan, y asegurarse de que obtengan derechos absolutamente no exclusivos.

No compliques las cosas simples.

o0 '.
fuente
Gran respuesta concisa.
Costa del mar del Tíbet
26

Su pregunta es, "¿cuál es la mejor manera de sortear este problema?" Pero, ¿qué ves como el problema? Otros han señalado correctamente que es una cuestión de negociación: todo tiene un valor, y depende de usted darle al cliente un precio por proporcionar lo que se solicita.

Pero también debe considerar cuidadosamente, y escribir en el contrato, las implicaciones de proporcionar el código. ¿Es solo para que el cliente pueda verlo? ¿Puede el cliente modificarlo? Y en particular, ¿consideraría otorgarle a su cliente derechos exclusivos sobre la base de código que ha creado a lo largo de los años y que se usa como plantilla para la mayoría de las aplicaciones para que nunca más pueda usarla usted mismo en el futuro?

Debe asegurarse de que el contrato indique explícitamente quién tiene los derechos para usar el código y de qué manera.

Reg Editar
fuente
19

Recuerde que cualquier código fuente requiere una licencia. Si entrega el código fuente, la compañía puede usar el código fuente para hacer cualquier cosa que permita la licencia, y cualquier otra cosa que no sea violación de derechos de autor. Por lo tanto, si entrega el código fuente, tendría un contrato que deja absolutamente claro que conserva los derechos de autor exclusivos del código fuente, y exactamente qué usos del código fuente están permitidos. Y, por supuesto, el código fuente + la licencia no serían gratuitos.

Es poco probable que una compañía importante infrinja sus derechos de autor, ya que ser atrapado causaría un daño importante a su reputación, además de daños financieros. Por otro lado, pagar por software sin garantía de que cualquier problema pueda solucionarse en el futuro puede ser inaceptable para el cliente.

gnasher729
fuente
33
PERO también considere que detectar el mal uso del código fuente es increíblemente difícil, especialmente si no lo está buscando. No confíes ciegamente en una licencia: para algunas personas es solo un pedazo de papel.
o0 '.
1
@Lohoris, sin embargo, si sospecha que una aplicación está usando su código, es realmente fácil de decir, no importa que sea solo un binario. La habilidad básica de ingeniería inversa es todo lo que necesita para estar seguro.
rev
66
-1 ya que no creo que haya ninguna evidencia para su reclamo "Una empresa importante ...", es solo una suposición.
djechlin
@Lohoris: Si eso sucede, ¿cuál es el daño para ti? Mejor caso: el póster ofrece sus servicios a otra empresa y descubre que ya tienen la biblioteca de la que está tan orgulloso. Gran día de pago!
gnasher729
13

Anteriormente, generalmente proporcionaba el código fuente (bibliotecas y todo) bajo una licencia MIT al cliente. Si sus bibliotecas están bien organizadas, solo proporciona los archivos / recursos necesarios para ese cliente en particular, pero nada más. Creo que es justo tanto para mí como para el cliente. Sin embargo, siempre existía el problema del nuevo código escrito para ese cliente en particular bajo contrato que antes no formaba parte de la biblioteca. Entonces comencé a discutir el problema con el cliente antes de comenzar el proyecto. Algunos clientes querían la propiedad de ese código, otros no (siempre daba incentivos negativos, como precios más altos para aquellos que lo hacen). Pero, realmente para algunos clientes, esa discusión fue muy confusa y, a veces, terminé hablando con 3 o 5 personas diferentes (incluido su abogado) solo para obtener la aprobación del proyecto.

Así que ahora todas mis bibliotecas son parte de un marco personalizado que siempre uso para desarrollar y le explico al cliente que usaré este marco pero que el marco es un producto diferente con una licencia diferente. (A veces uso "componentes de software" cuando explico porque "framework" puede ser desconocido para ellos). Siempre proporciono el código de los archivos usados ​​bajo una licencia MIT y (porque todo el código está bien organizado) el código de bajo nivel (incluso el nuevo) permanece en el marco (para que yo y ellos lo reutilicemos) pero el código correspondiente para su aplicación solo es para ellos mantenerlos bajo sus propios términos (ese código probablemente sería inútil para mí reutilizarlo en otro proyecto). Por supuesto, todo lo que está escrito correctamente en el contrato. Creo que esto también es justo.

La clave es: "estos componentes son un producto diferente" y todo está escrito en un contrato antes de comenzar.

Entonces sí, su idea sobre el uso de bibliotecas compartidas puede ser correcta. Sin embargo, le pregunto, ¿por qué no les proporciona el código fuente que utilizó bajo una licencia que les permitirá reducir su riesgo? Creo que eso sería justo.

MV.
fuente
2
Creo que esto se siente como una buena respuesta. El OP obviamente no debería simplemente darse la vuelta, sino que, por otro lado, pedir el código fuente para un proyecto personalizado parece eminentemente razonable (y he visto que suficientes proyectos contratados se descarrilan por completo y necesitan ser rescatados por alguien de lo contrario, probablemente no consideraría a un contratista que se negara a ofrecer la fuente, si estuviera buscando).
Casey
11

La forma de lidiar con esto es negociar.

Si quieren el código fuente, entonces deberían estar preparados para pagarlo, y depende de usted decidir cuánto debería ser.

Por otro lado ... si no están preparados para pagar lo que desea, pueden decidir "llevar su negocio a otro lado".

Bienvenido al mundo de los negocios :-)


Y cuando hable con posibles clientes en el futuro, asegúrese de mencionar este tema desde el principio ... para evitar perder el tiempo de todos.


También vale la pena señalar que lo que está haciendo es un anatema para los desarrolladores de código abierto y para los clientes (educados) que buscan soluciones de código abierto.

Stephen C
fuente
55
En primer lugar, hay muchas más posibilidades para una licencia de lo que "quieren". En segundo lugar, creo que es muy injusto que culpes al OP por no "mencionar esto lo suficientemente temprano" en lugar de a la compañía. Esto está un poco editorializado. En tercer lugar, no veo por qué los desarrolladores de código abierto enfrentan anatema si desean trabajar en un proyecto de código cerrado. Cuarto, si la empresa buscara una solución de código abierto, la pediría, no una copia privada del código fuente para sus propósitos.
djechlin
1
@djechlin - 1) No culpé al OP. Pero si no está preparado para negociar sobre ese punto ... entonces >> debería << haberlo mencionado antes. Es un requisito obvio y razonable para un cliente conocedor de software a medida. 2) El "anatema" sería lo que está haciendo el OP ... tratando de mantener el código fuente. 3) Si bien, no hay indicios de que el cliente solicite código abierto (tal vez, realmente no entienden sus beneficios) está claro que el >> do << quiere el código fuente, que es uno de sus principales beneficios de OSS .
Stephen C
3
Este comentario es perfecto. Como desarrollador de software, todos mis clientes obtienen una licencia exclusiva para usar y modificar el software, y les proporciono el código fuente. Además de eso, me reservo el derecho de reutilizar el código que he escrito en otros proyectos, y de reutilizar el código de otro proyecto en este proyecto. Esto les ahorra dinero y a ambos tiempo. Nadie ha tenido un problema con eso.
dotancohen
1
@dotancohen: Espero que obtengan una licencia "no exclusiva". Si tienen una licencia exclusiva, no puede reutilizar el código para el próximo cliente. No puede tener dos clientes con una licencia "exclusiva" para el mismo código.
gnasher729
La licencia les permite usar y modificar el código, pero no compartirlo, venderlo o distribuirlo. Siendo principalmente PHP ejecutándose en VPS, no hay mucho que pueda hacer, o me gustaría hacer, si el código 'se filtra'. No lo veo como un gran problema en el campo en el que trabajo.
dotancohen
5

Esto puede ser demasiado tarde para usted, ya que es posible que ya haya acordado contractualmente hacer esto, y podría haber acordado términos mutuamente incompatibles con diferentes clientes.

Hay dos formas en que puede proporcionar a sus clientes su código fuente. Propiedad de los derechos de autor y con licencia.

Algunos clientes querrán la propiedad del código fuente. Esto significa que, al final del proceso, le pagarán dinero y, a cambio, les otorgará derechos de autor sobre el código que cree para ellos. Una razón para esto es si ven un potencial significativo para la propiedad intelectual en el código fuente, y pueden querer valorar esto en el balance de su empresa. En este escenario, no tendrá derecho a continuar usando ese código fuente para otros proyectos, a menos que también obtenga una licencia de su cliente que le otorgue este derecho.

Si su cliente está comprando un producto 'listo para usar', esperarían recibir una licencia para usar el software, no la propiedad del código fuente. Deben esperar que esté vendiendo el mismo software (o similar) a muchas otras organizaciones, y que se beneficien de un menor costo de compra debido a la mayor base de clientes.

Sin embargo, la situación en esta pregunta es una mezcla de los dos.

Esto es lo que me gustaría poder hacer. Le otorgaría a su cliente una licencia para usar (y modificar) su código compartido. Si el cliente lo interrogara, señalaría que este es un código compartido que ya ha utilizado en varios proyectos y que tiene ofertas actuales para el trabajo futuro que se basan en que continúe usando este trabajo. Señale que esto ha resultado en menos tiempo en este proyecto para su cliente y que, como resultado, han pagado un precio más bajo. Al igual que otras bibliotecas de código compartidas utilizadas por el proyecto, tienen una licencia para usar este código y para permitir que otros equipos de desarrollo desarrollen este y otros proyectos basados ​​en esta biblioteca. Sin embargo, si prefieren la propiedad de todo el código, está dispuesto a crear un reemplazo, pero esto sería un cargo adicional.

Dependiendo de lo que ya se haya comprometido, podría tener que escribir una funcionalidad de reemplazo de forma gratuita o regalar su código fuente.

Recuerde, hay diferentes tipos de bibliotecas. La Biblioteca de plantillas estándar en C ++ es un buen ejemplo de una biblioteca que se incluye a nivel de código fuente y se compila en un ejecutable de proyecto que puede ser bastante similar a cómo ha utilizado su código común.

Michael Shaw
fuente
1
De este comentario : "El contrato no está finalizado, acordaron, no firmaron y luego regresaron con esta cláusula". Como hace solo dos días, supongo que las negociaciones aún continúan.
0

Si utiliza un tercero con el software que entrega, es probable que no tenga el código fuente de este tercero. Aún entregará el software a la compañía con los archivos binarios de terceros. El código que desarrolló como marco compartido en todos sus proyectos es exactamente como el de un tercero, incluso si es de su propiedad. En este caso, la compañía tiene exactamente el mismo riesgo con los binarios de su marco que con el tercero. ¿Por qué en este caso le daría a la empresa el código fuente de su marco? Puede proporcionarle una buena documentación API con un acuerdo de licencia y eso. Si su código contiene la próxima gran cosa que revolucionará la industria, es otra historia, pero generalmente no es el caso.

Samuel
fuente