O cliente deseja código-fonte, mas contém muitos códigos compartilhados que reutilizo com outros projetos


96

Eu tenho um cliente que gostaria que eu entregasse o código-fonte com um aplicativo binário desenvolvido. Eles originalmente não disseram nada sobre o código-fonte, mas recentemente disseram que precisam dele. O contrato não está finalizado. Eles concordaram com o trabalho, não assinaram e voltaram com esta cláusula.

O problema é: eu tenho uma base de código criada ao longo dos anos e usada como modelo para a maioria dos aplicativos que escrevo. É muito maior do que o escopo do projeto.

Também pretendo usá-lo para um produto, por isso não desejo fornecê-lo para um projeto relativamente pequeno.

Suponho que essa não é a primeira vez que isso acontece neste setor. Qual é a melhor maneira de contornar esse problema? Suponho que coisas como bibliotecas compartilhadas possam ajudar.


18
Para que eles precisam? As chances são de que eles só querem ter o código, caso você saia do negócio. Você pode adicionar licenças que limitam o uso permitido. Ao mesmo tempo, uma empresa em que trabalhei depositou (palavra certa?) Código-fonte em uma empresa de advogados como garantia para esse caso.
Thorsten Müller

33
O software personalizado deve ser entregue com o código fonte. Caso contrário, é um produto de varejo. Não acho que eles precisem de um produto congelado, caso algo aconteça com você / sua empresa posteriormente. Mas cobrar em conformidade. Considere também colocar o código da sua biblioteca em uma biblioteca compilada (se suportada pelo seu idioma) para que eles possam modificar o software, compilá-lo, mas não reutilizar facilmente sua biblioteca por si só.
precisa saber é o seguinte

14
@CodeAngry "should"? Não. Somente se eles pagarem a quantia certa em dinheiro.
o0 '.

32
@CodeAngry nope. É seu, a menos que seja acordado de outra forma ...
o0 '.

46
Vamos ser sinceros - não importa quantos anos você tenha colocado em sua estrutura, ela não terá nenhum valor para ninguém além de você. Ninguém criará um novo aplicativo com base em uma estrutura não documentada, não suportada e geralmente desconhecida, não importa o quão bom você ache que seja. Forneça o código-fonte completo para eles, certifique-se de manter os direitos autorais das partes não personalizadas do seu aplicativo e obtenha um cliente feliz.
Guntram Blohm

Respostas:


137

A primeira coisa a ter em mente é que o código fonte tem valor separado dos binários. É perfeitamente razoável recusar-se a assinar um contrato que exija a entrega do código-fonte ou insistir em pagamentos extras pela entrega do código-fonte. Os contratos são documentos de mão dupla. Não deixe a outra parte ditar o que é necessário apenas porque são "grandes empresas" e "fazem isso o tempo todo". Em primeiro lugar, decidir o que você está disposto a oferecer e como você quer ser compensado. Em seguida, leve o contrato a um advogado e calcule o que precisa mudar. Então, você negocia.

Não faça o que muitos jovens fazem quando começam a contratar. Não assine apenas porque parece que eles têm muita experiência e você não. Essa é uma boa maneira de ser enganado.

Veja por que eles querem a fonte. Eles podem querer, para ter a opção de usar outro desenvolvedor posteriormente. Ou eles podem querer isso apenas porque temem que você seja atropelado por um ônibus e, de repente, eles ficam com binários que não podem melhorar. Se esse for o segundo caso, procure um Serviço de Custódia de Código de Software . Esses serviços mantêm o código-fonte caso você vá à falência ou não consiga manter o software. Isso pode satisfazer tanto seu desejo de manter seu código proprietário para atender outros clientes quanto seu desejo de não ficar segurando a sacola com um conjunto de binários não-sustentável, se algo ruim acontecer.


17
E se o Serviço de Custódia de Código de Software falir?
precisa saber é o seguinte

21
Em seguida, o proprietário do código ainda está por aí - espero - ainda por aí, e pode entregá-lo para outro Serviço de Custódia. O serviço destina-se a remover o ponto único de falha.
Alexander Alexander

17
Os Serviços de Custódia de Código de Software usam os Serviços de Custódia de Código de Software?
FreeAsInBeer 07/04

29
@FreeAsInBeer: Não, eles usam os Serviços de Custódia de Código de Software. Obviamente.
Nneonneo 8/04

@ Alexander, apenas se o novo compromisso for uma obrigação contratada. Caso contrário, o desenvolvedor cobrará pelo segundo depósito novamente.
21717 Pacerier

67

"Não" é uma resposta perfeitamente correta, na verdade é uma resposta incrivelmente útil que, por alguma razão que não consigo entender, é muito subestimada.

"Oi, de repente decidimos que também queremos código-fonte gratuitamente."
"Oi, não."

Não é tão difícil, realmente.

Então, se eles desejam pagar uma quantia gritante de dinheiro pelo que devem a você, você pode fornecer a eles uma versão reduzida de seu aplicativo, que inclui apenas as fontes de que eles realmente precisam e cuidando para que eles obtenham direitos absolutamente não- exclusivos.

Não complique coisas simples.


Ótima resposta concisa.
Costa do Mar do Tibete

26

Sua pergunta é: "qual é a melhor maneira de contornar esse problema?" Mas o que você vê como o problema? Outros apontaram corretamente que é uma questão de negociação: tudo tem um valor, e cabe a você dar ao cliente um preço por fornecer o que é solicitado.

Mas você também deve considerar cuidadosamente - e escrever no contrato - as implicações do fornecimento do código. É apenas para que o cliente possa vê-lo? O cliente pode modificá-lo? E, em particular, você consideraria conceder ao seu cliente direitos exclusivos sobre a base de código criada ao longo dos anos e é usado como modelo para a maioria dos aplicativos, para que você nunca mais possa usá-lo novamente no futuro?

Você precisa garantir que o contrato indique explicitamente quem tem direitos para usar o código e de que maneiras.


19

Lembre-se de que qualquer código fonte requer uma licença. Se você entregar o código-fonte, a empresa poderá usá-lo para fazer tudo o que a licença permitir e qualquer coisa além disso seja uma violação de direitos autorais. Portanto, se você entregar o código-fonte, teria um contrato que deixasse absolutamente claro que retém os direitos autorais exclusivos do código-fonte e exatamente quais usos do código-fonte são permitidos. E, é claro, o código-fonte + licença não seria gratuito.

É improvável que uma grande empresa viole seus direitos autorais, pois ser pego causaria um grande dano à sua reputação, além de danos financeiros. Por outro lado, pagar por software sem garantia de que quaisquer problemas possam ser corrigidos no futuro pode ser inaceitável para o cliente.


33
MAS também consideramos que a detecção de uso indevido do código fonte é incrivelmente difícil, especialmente se você não estiver procurando por ele. Não confie cegamente em uma licença: para algumas pessoas, é apenas um pedaço de papel.
o0 '.

1
@ Lohoris, no entanto, se você suspeitar que um aplicativo está usando seu código, é realmente fácil saber, não importa se é apenas um binário. Habilidade básica de engenharia reversa é tudo que você precisa para ter certeza.
rev

6
-1, já que acho que não há nenhuma evidência para a sua reivindicação "Uma grande empresa ...", é apenas um palpite.
djechlin

@ Lohoris: Se isso acontecer, qual é o dano para você? Melhor caso: o pôster oferece seus serviços a outra empresa e descobre que eles já têm a biblioteca da qual ele se orgulha. Grande dia de pagamento!
precisa saber é o seguinte

13

Anteriormente, normalmente fornecia o código-fonte (bibliotecas e tudo) sob uma licença MIT para o cliente. Se suas bibliotecas estão bem organizadas, você fornece apenas os arquivos / recursos necessários para esse cliente específico, mas nada mais. Eu acho que é justo para mim e para o cliente. No entanto, sempre houve a emissão de um novo código escrito para esse cliente específico, sob contrato, que não fazia parte da biblioteca antes. Então comecei a discutir o problema com o cliente antes de iniciar o projeto. Alguns clientes queriam a propriedade desse código, outros não (eu sempre dava incentivos negativos, como preços mais altos para quem o faz). Mas, realmente, para alguns clientes, essa discussão foi muito confusa e, às vezes, eu acabava conversando com 3 ou 5 pessoas diferentes (incluindo o advogado), apenas para obter o projeto aprovado.

Portanto, agora todas as minhas bibliotecas fazem parte de uma estrutura personalizada que eu sempre uso para desenvolver e explico ao cliente que vou usar essa estrutura, mas que a estrutura é um produto diferente com uma licença diferente. (Às vezes eu uso "componentes de software" ao explicar porque "framework" pode não ser conhecido por eles). Eu sempre forneço o código dos arquivos usados ​​sob uma licença MIT e (porque todo o código está bem organizado) o código de baixo nível (mesmo o novo) permanece na estrutura (para ser reutilizado por mim e por eles), mas o código relacionado apenas para a aplicação deles é que eles mantenham seus próprios termos (esse código provavelmente seria inútil para eu reutilizar em outro projeto). Claro que tudo isso está escrito corretamente no contrato. Eu acho que isso é justo também.

A chave é: "esses componentes são um produto diferente" e tudo está escrito em um contrato antes de iniciar.

Então, sim, sua idéia sobre o uso de bibliotecas compartilhadas pode estar certa. No entanto, pergunto: por que você não fornece o código-fonte que você usou, sob uma licença que lhes permitirá reduzir o risco? Eu acho que seria justo.


2
Eu acho que isso parece uma boa resposta. Obviamente, o OP não deve apenas rolar, mas, por outro lado, pedir o código-fonte para um projeto personalizado parece eminentemente razoável (e eu já vi vários projetos contratados sairem totalmente dos trilhos e precisarem ser resgatados por alguém caso contrário, eu provavelmente não consideraria um empreiteiro que se recusasse a oferecer fonte, se eu estivesse procurando).
Casey

11

A maneira de lidar com isso é negociar.

Se eles querem código-fonte, devem estar preparados para pagar por isso, e cabe a você decidir quanto deve ser.

Por outro lado ... se eles não estiverem preparados para pagar o que você deseja, eles podem decidir "levar seus negócios para outro lugar".

Bem-vindo ao mundo dos negócios :-)


E quando você conversar com possíveis clientes no futuro, não deixe de mencionar esse problema logo no início ... para evitar desperdiçar o tempo de todos.


Também é importante notar que o que você está fazendo é um anátema para desenvolvedores de código aberto e para clientes (instruídos) que procuram soluções de código aberto.


5
Em primeiro lugar, há muito mais possibilidades de licença do que "eles querem". Em segundo lugar, acho muito injusto você culpar o OP por não "apresentar isso cedo o suficiente" em vez da empresa. Isso é um pouco editorial. Em terceiro lugar, não vejo por que os desenvolvedores de código aberto enfrentam anátema se desejam trabalhar em um projeto de código fechado. Em quarto lugar, se a empresa estivesse procurando uma solução de código aberto, estaria solicitando isso, não uma cópia privada do código-fonte para seus propósitos.
precisa

1
@djechlin - 1) Eu não culpo o OP. Mas se ele não estiver preparado para negociar nesse ponto ... então ele deveria ter mencionado isso antes. É um requisito óbvio e razoável para um cliente qualificado para o software sob medida. 2) O "anátema" seria o que o OP está fazendo ... tentando manter o código-fonte. 3) Embora não haja indicação de que o cliente tenha solicitado código-fonte aberto (talvez eles não entendam realmente seus benefícios), fica claro que o >> do << deseja o código-fonte, que é um dos principais benefícios do OSS .
Stephen C

3
Este comentário está no local. Como desenvolvedor de software, todos os meus clientes recebem uma licença exclusiva para usar e modificar o software, e eu forneço o código-fonte. Além disso, tenho o direito de reutilizar o código que escrevi em outros projetos e de reutilizar o código de outro projeto neste projeto. Isso economiza dinheiro e tempo para nós dois. Ninguém nunca teve um problema com isso.
dotancohen

1
@dotancohen: Espero que eles obtenham uma licença "não exclusiva". Se eles tiverem uma licença exclusiva, você não poderá reutilizar o código para o próximo cliente. Você não pode ter dois clientes com uma licença "exclusiva" para o mesmo código.
precisa saber é o seguinte

A licença permite que eles usem e modifiquem o código, mas não o compartilhem, vendam ou distribuam. Sendo principalmente o PHP rodando em VPS, não há muito que eu possa fazer, ou gostaria de fazer, se o código 'vazasse'. Eu não vejo isso como um grande negócio no campo que eu trabalhar.
dotancohen

5

Isso pode ser tarde demais para você, já que você já concordou contratualmente em fazer isso e pode ter concordado com termos incompatíveis entre si com diferentes clientes.

Existem duas maneiras pelas quais você pode fornecer aos seus clientes o seu código-fonte. Propriedade dos direitos autorais e licenciada.

Alguns clientes desejam a propriedade do código fonte. Isso significa que, no final do processo, eles pagarão o seu dinheiro e, em troca, você concederá a eles direitos autorais do código que você criar para eles. Uma razão para isso é se eles veem um potencial significativo de propriedade intelectual no código-fonte e podem querer valorizá-lo no balanço da empresa. Nesse cenário, você não terá direito ao uso continuado desse código-fonte para outros projetos, a menos que você também obtenha uma licença do seu cliente fornecendo esse direito.

Se o seu cliente estiver comprando um produto 'de prateleira', esperaria receber uma licença para usar o software, não a propriedade do código-fonte. Eles devem esperar que você esteja vendendo o mesmo software (ou similar) para muitas outras organizações e que, esperançosamente, estejam se beneficiando de um menor custo de compra devido à ampla base de clientes.

No entanto, a situação nesta questão é uma confusão dos dois.

Aqui está o que eu gostaria de poder fazer. Eu concederia ao seu cliente uma licença para usar (e modificar) seu código compartilhado. Se questionado pelo cliente, gostaria de salientar que esse é um código compartilhado que você já usou em vários projetos e possui lances atuais para futuros trabalhos baseados em você continuar usando esse trabalho. ressalte que isso resultou em menos tempo neste projeto para o seu cliente e, como resultado, eles pagaram um preço mais baixo. Como outras bibliotecas compartilhadas de código usadas pelo projeto, elas possuem uma licença para usar esse código e permitem que outras equipes de desenvolvimento desenvolvam esse e outros projetos baseados nessa biblioteca. No entanto, se eles preferirem a propriedade de todo o código, você deseja criar uma substituição, mas isso seria um custo adicional.

Dependendo do que você já se comprometeu, pode ser necessário escrever uma funcionalidade de substituição gratuitamente ou fornecer seu código-fonte.

Lembre-se, existem diferentes tipos de bibliotecas. A Biblioteca de modelos padrão em C ++ é um bom exemplo de uma biblioteca incluída no nível do código-fonte e compilada em um projeto executável que pode ser bastante semelhante ao modo como você usou seu código comum.


1
A partir deste comentário : "O contrato não foi finalizado, eles concordaram, não assinaram e voltaram com esta cláusula". - como são apenas dois dias atrás, eu diria que as negociações ainda estão em andamento.

0

Se você usar um terceiro com o software fornecido, é provável que você não tenha o código-fonte desse terceiro. Você ainda entregará o software à empresa com binários de terceiros. O código que você desenvolveu como uma estrutura compartilhada em todos os seus projetos é exatamente igual a terceiros, mesmo que seja de sua propriedade. Nesse caso, a empresa tem exatamente o mesmo risco com os binários da sua estrutura do que com os terceiros. Por que, nesse caso, você daria à empresa o código fonte da sua estrutura? Você pode fornecer a ela uma boa documentação da API com um contrato de licença e isso. Se o seu código contiver a próxima grande novidade que revolucionará o setor, é outra história, mas geralmente não é o caso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.