O cliente quer código-fonte, mas contém muito código compartilhado que eu reutilizo com outros projetos

94

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

A questão é: Eu tenho uma base de código que criei ao longo dos anos e usei como modelo para a maioria dos aplicativos que escrevo. É muito maior que o escopo do projeto.

Eu também pretendo usá-lo para um produto, então eu realmente não pretendo fornecê-lo para um projeto relativamente pequeno.

Eu estou supondo que esta não é a primeira vez que isso aconteceu nesta indústria. Qual é a melhor maneira de contornar esse problema? Eu estou supondo que coisas como bibliotecas compartilhadas poderiam ajudar.

    
por robby987 05.04.2015 / 04:27
fonte

8 respostas

135

A primeira coisa a ter em mente é que o código-fonte tem valor separado dos binários. É perfeitamente razoável se recusar a assinar um contrato que exija a entrega do código-fonte ou insistir em pagamentos extras para a entrega do código-fonte. Contratos são documentos bidirecionais. Não deixe a outra parte ditar o que é necessário apenas porque são "grandes empresas" e "fazem isso o tempo todo". Primeiro, decida o que você está disposto a entregar e como você quer ser compensado. Depois, assine o contrato com um advogado e descubra 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 roubado.

Olhe para por que eles querem a fonte. Eles podem querer que eles tenham a opção de usar outro desenvolvedor mais tarde. Ou podem querer apenas porque têm medo de serem atropelados por um ônibus e, de repente, ficarão com binários que não podem melhorar. Se este 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ê fale ou seja incapaz de manter o software. Isso pode satisfazer tanto seu desejo de manter seu código proprietário para atender outros clientes quanto o desejo deles de não ficar segurando a mala com um conjunto de binários inamovível se algo de ruim acontecer.

    
por 05.04.2015 / 05:11
fonte
66

"Não" é uma resposta perfeita, na verdade é uma resposta incrivelmente útil que, por algum motivo, não consigo entender é muito subestimada.

"Olá, decidimos de repente que só queremos o código-fonte, gratuitamente". "Oi, não."

Não é tão difícil assim.

Então, se eles quiserem pagar quantias acima do que lhe devem, você poderá fornecer a eles uma versão reduzida de seu aplicativo, que inclui apenas o fontes de que eles realmente precisam, e tomando cuidado, eles obtêm direitos absolutamente exclusivos não-exclusivos.

Não complique coisas simples.

    
por 05.04.2015 / 16:42
fonte
25

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 para fornecer o que é pedido.

Mas você também deve considerar cuidadosamente - e escrever no contrato - as implicações de fornecer o código. É só para o cliente poder ver isso? O cliente pode modificá-lo? E, em particular, você consideraria dar ao seu cliente direitos exclusivos sobre a base de código que você criou ao longo dos anos e é usado como um modelo para a maioria dos aplicativos para que você nunca mais o use no futuro ?

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

    
por 05.04.2015 / 10:06
fonte
18

Lembre-se de que qualquer código-fonte requer uma licença. Se você entregar o código-fonte, a empresa poderá usar o código-fonte para fazer qualquer coisa que a licença permitir, e qualquer coisa além disso é violação de direitos autorais. Então, se você entregar o código fonte, você teria um contrato que deixa absolutamente claro que você mantém os direitos autorais exclusivos do código-fonte, e exatamente quais usos do código-fonte são permitidos. E, claro, código-fonte + licença não viria de graça.

Uma empresa importante provavelmente não violaria seus direitos autorais, porque ser flagrado causaria um grande dano à sua reputação, além de danos financeiros. Por outro lado, pagar por software sem garantia de que algum problema possa ser corrigido no futuro pode ser inaceitável para o cliente.

    
por 05.04.2015 / 10:44
fonte
13

Antes eu geralmente fornecia o código fonte (bibliotecas e tudo) sob uma licença MIT para o cliente. Se suas bibliotecas estiverem bem organizadas, você só fornecerá os arquivos / recursos necessários para esse cliente em particular, mas nada mais. Eu acho que isso é justo para mim e para o cliente. No entanto, sempre havia a questão do novo código escrito para aquele cliente em contrato que não fazia parte da biblioteca antes. Então comecei a discutir o assunto com o cliente antes de iniciar o projeto. Alguns clientes queriam a propriedade desse código, outros não (eu sempre dei incentivos negativos, como preços mais altos para aqueles que o fazem). Mas, na verdade, para alguns clientes, a discussão foi muito confusa e, às vezes, acabei falando com 3 ou 5 pessoas diferentes (incluindo o advogado) apenas para aprovar o projeto.

Agora, todas as minhas bibliotecas fazem parte de uma estrutura customizada que sempre uso para desenvolver e explico ao cliente que usarei 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 ser desconhecido para eles). Eu sempre forneço o código dos arquivos usados sob uma licença MIT e (porque todo o código é bem organizado) o código de baixo nível (mesmo o novo) permanece no framework (para ser reutilizado por mim e por eles) mas o código relacionado a sua aplicação é apenas para eles manterem em seus próprios termos (esse código provavelmente seria inútil para eu reutilizar em outro projeto). Claro que tudo o que está escrito corretamente no contrato. Eu acho que isso também é justo.

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

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

    
por 06.04.2015 / 09:47
fonte
11

A maneira de lidar com isso é negociar.

Se eles querem código-fonte, então eles 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ê quer, eles podem decidir "levar seus negócios para outro lugar".

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

E quando você falar com possíveis clientes no futuro, não deixe de mencionar esse problema desde o 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 (educados) que estão procurando por soluções de código aberto.

    
por 05.04.2015 / 08:01
fonte
5

Isso pode ser tarde demais para você, pois você já pode ter concordado contratualmente em fazer isso e poderia ter concordado com termos mutuamente incompatíveis com clientes diferentes.

Existem duas formas de fornecer aos seus clientes o código-fonte. Propriedade dos direitos autorais e licenciados.

Alguns clientes querem a propriedade do código-fonte. Isso significa que, ao final do processo, eles lhe pagarão em dinheiro e, em troca, darão a eles direitos autorais sobre o código que você criar para eles. Uma razão para isso é se eles vêem 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 contínuo desse código-fonte para outros projetos, a menos que também obtenha uma licença do seu cliente que lhe conceda este direito.

Se seu cliente estiver comprando um produto "pronto para uso" de você mesmo, ele espera receber uma licença para usar o software e não a propriedade do código-fonte. Eles devem estar esperando que você esteja vendendo o mesmo (ou similar) software para muitas outras organizações, e que eles estejam se beneficiando de um custo menor de compra devido à maior base de clientes.

No entanto, a situação nesta questão é uma mistura 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 este é um código compartilhado que você já usou em vários projetos e que tem lances atuais em vigor para trabalhos futuros que são baseados em você continuar a usar este trabalho. Saliente que isso resultou em menos tempo neste projeto para o seu cliente e que eles pagaram um preço menor como resultado. Como outras bibliotecas compartilhadas de código usadas pelo projeto, elas têm uma licença para usar esse código e permitir que outras equipes de desenvolvimento desenvolvam isso e outros projetos baseados nessa biblioteca. No entanto, se eles preferirem a propriedade de todo o código, você está disposto a criar um substituto, mas isso seria uma cobrança adicional.

Dependendo do que você já se comprometeu, você pode ter que escrever uma funcionalidade de substituição de graça, ou doar seu código-fonte.

Lembre-se de que existem diferentes tipos de bibliotecas. A Standard Template Library em C ++ é um bom exemplo de uma biblioteca que está incluída em um nível de código-fonte e é compilada em um executável de projeto que pode ser bastante semelhante a como você usou seu código comum.

    
por 07.04.2015 / 15:04
fonte
0

Se você usa um terceiro com o software que você entrega, é provável que você não tenha o código-fonte para esse terceiro. Você ainda entregará o software para a empresa com binários do terceiro. O código que você desenvolveu como um framework compartilhado em todos os seus projetos é exatamente como um terceiro, mesmo que seja de sua propriedade. Nesse caso, a empresa tem exatamente o mesmo risco com os binários de sua estrutura do que com o terceiro. Por que neste caso você daria à empresa o código fonte do seu framework. 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 irá revolucionar a indústria, é outra história, mas geralmente não é o caso.

    
por 08.04.2015 / 02:27
fonte