Le client veut du code source, mais il contient beaucoup de code partagé que je réutilise avec d'autres projets

96

J'ai un client qui souhaite que je fournisse le code source avec un binaire d'application développé. À l'origine, ils ne disaient rien sur le code source, mais ils ont récemment déclaré en avoir besoin. Le contrat n'est pas finalisé. Ils ont accepté le travail, n'ont pas signé, puis sont revenus avec cette clause.

Le problème est le suivant: j'ai créé une base de code au fil des ans et je l'ai utilisée comme modèle pour la plupart des applications que j'écris. C'est beaucoup plus large que la portée du projet.

J'ai également l'intention de l'utiliser pour un produit, donc je ne souhaite vraiment pas le fournir pour un projet relativement petit.

J'imagine que ce n'est pas la première fois que cela se produit dans cette industrie. Quel est le meilleur moyen de contourner ce problème? Je suppose que des choses comme des bibliothèques partagées pourraient aider.

robby987
la source
18
Pourquoi en ont-ils besoin? Les chances sont qu'ils veulent seulement être sûr d'avoir le code au cas où vous faites faillite. Vous pouvez éventuellement ajouter une licence qui limite l'utilisation autorisée. À un moment donné, une entreprise avec laquelle je travaillais a déposé (mot juste?) Un code source auprès d’une société d’avocats en tant que garantie dans de tels cas.
Thorsten Müller
33
Les logiciels personnalisés doivent être livrés avec le code source. Sinon, c'est un produit de vente au détail. Je ne pense pas qu'ils aient besoin d'un produit congelé au cas où quelque chose vous arriverait / votre entreprise plus tard dans la ligne. Mais facturez en conséquence. Pensez également à placer votre code de bibliothèque dans une bibliothèque compilée (si elle est prise en charge par votre langue) afin qu'ils puissent modifier le logiciel, le compiler mais ne pas réutiliser facilement votre bibliothèque par lui-même.
CodeAngry
14
@CodeAngry "devrait"? Non, seulement s'ils paient la bonne somme d'argent.
o0 '.
32
@ CodeAngry Nope. C'est à vous, sauf convention contraire…
o0 '.
46
Let's face it - peu importe combien d'années vous avez mis dans votre cadre, il n'aura aucune valeur pour personne sauf vous. Personne ne créera une nouvelle application basée sur un cadre non documenté, non pris en charge et généralement inconnu, aussi bon soit-il, selon vous. Donnez-leur le code source complet, assurez-vous de conserver le droit d'auteur sur les parties non personnalisées de votre application et obtenez un client heureux.
Guntram Blohm

Réponses:

137

La première chose à garder à l'esprit est que le code source a une valeur distincte des fichiers binaires. Il est parfaitement raisonnable de refuser de signer un contrat exigeant la livraison du code source ou de demander des paiements supplémentaires pour la livraison du code source. Les contrats sont des documents à double sens. Ne laissez pas l’autre partie dicter ce qui est requis simplement parce qu’elles sont des "grandes entreprises" et "le font tout le temps". Tout d'abord, décidez ce que vous êtes prêt à fournir et comment vous souhaitez être rémunéré. Ensuite, confiez leur contrat à un avocat et déterminez ce qui doit changer. Ensuite, vous négociez.

Ne faites pas ce que font beaucoup de jeunes quand ils commencent à sous-traiter. Ne vous contentez pas de signer car il semble qu’ils aient beaucoup d’expérience et pas vous. C'est un bon moyen de se faire arnaquer.

Cherchez pourquoi ils veulent la source. Ils peuvent le vouloir pour pouvoir utiliser ultérieurement un autre développeur. Ou ils peuvent le vouloir simplement parce qu'ils craignent que vous ne soyez heurté par un bus et qu'ils se retrouvent soudain avec des fichiers binaires qu'ils ne peuvent améliorer. Si c'est ce deuxième cas, examinez un service de dépôt de code logiciel . Ces services contiennent le code source en cas de faillite ou d’impossibilité de maintenir le logiciel. Cela peut satisfaire à la fois votre désir de garder votre code propriétaire pour servir d'autres clients et leur désir de ne pas être obligés de garder le sac avec un ensemble incalculable de fichiers binaires en cas de problème.

Gort le robot
la source
17
Que se passe-t-il si le service d’engagement de code logiciel fait faillite?
user11153
21
J'espère que le propriétaire du code est toujours là et peut transmettre son code à un autre service d'entiercement. Le service est destiné à supprimer le Single Point Of Failure.
Alexander
17
Les services de dépôt de code logiciel utilisent-ils des services de dépôt de code logiciel?
FreeAsInBeer
29
@FreeAsInBeer: Non, ils utilisent les services de dépôt de code logiciel. Évidemment.
nneonneo
@Alexander, Seulement si le ré-engagement est une obligation contractée. Sinon, le développeur facturera à nouveau pour le deuxième séquestre.
Pacerier
67

"Non" est une réponse parfaite, en fait c'est une réponse extrêmement utile qui, pour une raison quelconque, que je ne comprends pas, est très sous-estimée.

"Bonjour, nous avons soudainement décidé de ne vouloir que du code source, gratuitement."
"Salut non."

Ce n'est pas si difficile, vraiment.

Ensuite, s’ils souhaitent payer des sommes énormes par rapport à ce qu’ils vous doivent déjà , vous pouvez leur donner une version simplifiée de votre demande, qui ne comprend que les sources dont ils ont réellement besoin, et en veillant à ce qu’ils obtiennent des droits absolument non exclusifs.

Ne compliquez pas les choses simples.

o0 '.
la source
Super réponse concise.
Côte de la mer du Tibet
26

Votre question est "quel est le meilleur moyen de contourner ce problème?" Mais quel est selon vous le problème? D'autres ont fait remarquer à juste titre qu'il s'agissait d'une question de négociation: tout a une valeur et c'est à vous de donner au client un prix pour fournir ce que vous demandez.

Mais vous devez également examiner avec soin - et inscrire dans le contrat - les implications de la fourniture du code. Est-ce juste pour que le client puisse le voir? Le client peut-il le modifier? Et en particulier, envisageriez-vous d'accorder à votre client des droits exclusifs sur la base de code que vous avez créée au fil des ans et qui sert de modèle pour la plupart des applications afin que vous ne puissiez plus jamais l'utiliser vous-même?

Vous devez vous assurer que le contrat indique explicitement qui a le droit d'utiliser le code et de quelle manière.

Reg Modifier
la source
19

N'oubliez pas que tout code source nécessite une licence. Si vous remettez le code source, l'entreprise peut utiliser le code source pour faire tout ce que la licence permet, et tout ce qui va au-delà constitue une violation du droit d'auteur. Donc, si vous remettez du code source, vous obtiendrez un contrat qui indique clairement que vous conservez les droits d'auteur exclusifs du code source et précise quelles utilisations du code source sont autorisées. Et bien sûr, le code source + licence ne serait pas gratuit.

Il est peu probable qu'une grande entreprise enfreigne votre droit d'auteur, car sa capture causerait un préjudice majeur à sa réputation, outre les dommages financiers. D'autre part, payer pour un logiciel sans garantie que tous les problèmes puissent être résolus à l'avenir peut être inacceptable pour le client.

gnasher729
la source
33
MAIS nous considérons également que la détection des utilisations abusives du code source est incroyablement difficile, surtout si vous ne le recherchez pas. Ne faites pas aveuglément confiance à une licence: pour certaines personnes, il ne s'agit que d'un bout de papier.
o0 '.
1
@ Lohoris cependant, si vous pensez qu'une application utilise votre code, il est très facile à dire, peu importe qu'il s'agisse d'un fichier binaire. Des compétences de base en ingénierie inverse suffisent pour en être sûr.
rev
6
-1 étant donné que je ne pense pas qu'il y ait de preuve pour votre affirmation "Une grande entreprise ...", c'est juste une supposition.
djechlin
@ Lohoris: Si cela se produit, quels dommages vous sont causés? Meilleur exemple: l'affiche propose ses services à une autre société et constate qu'elle possède déjà la bibliothèque dont il est si fier. Le jour de paie majeur!
gnasher729
13

Auparavant, j'avais l'habitude de fournir le code source (bibliothèques et tous) sous une licence MIT au client. Si vos bibliothèques sont bien organisées, vous ne fournissez que les fichiers / ressources nécessaires pour ce client particulier, mais rien de plus. Je pense que c'est juste pour moi et pour le client. Cependant, il y avait toujours la question du nouveau code écrit pour ce client particulier sous contrat qui ne faisait pas partie de la bibliothèque auparavant. J'ai donc commencé à discuter du problème avec le client avant de commencer le projet. Certains clients voulaient être propriétaires de ce code, d'autres non (j'ai toujours donné des incitations négatives, comme des prix plus élevés pour ceux qui le font). Mais, pour certains clients, cette discussion était très déroutante et parfois, je me retrouvais à parler à 3 ou 5 personnes différentes (y compris leur avocat) juste pour faire approuver le projet.

Alors maintenant, toutes mes bibliothèques font partie d’un cadre personnalisé que j’utilise toujours pour développer et j’explique au client que je vais utiliser ce cadre, mais que ce cadre est un produit différent avec une licence différente. (Parfois, j'utilise des "composants logiciels" pour expliquer, parce que "framework" peut leur être inconnu). Je fournis toujours le code des fichiers utilisés sous une licence MIT et (parce que tout le code est bien organisé) le code de bas niveau (même le nouveau) reste dans le cadre (pour pouvoir être réutilisé par moi et par eux) mais le code relatif leur application consiste uniquement à conserver leurs propres conditions (ce code ne me servirait probablement pas à le réutiliser dans un autre projet). Bien sûr, tout cela est écrit correctement dans le contrat. Je pense que c'est juste aussi.

La clé est: "ces composants sont un produit différent" et tout est écrit dans un contrat avant de commencer.

Alors oui, votre idée d'utiliser des bibliothèques partagées est peut-être juste. Cependant, je vous demande, pourquoi ne leur fournissez-vous pas le code source que vous avez utilisé, sous une licence qui leur permettra de réduire leurs risques? Je pense que ce serait juste.

MV.
la source
2
Je pense que cela semble être une bonne réponse. Évidemment, le PO ne devrait pas simplement se renverser, mais demander le code source d’un projet personnalisé me semble tout à fait raisonnable (et j’ai vu suffisamment de projets sous-traités se déformer complètement et doivent être sauvés par quelqu'un sinon, je ne prendrais probablement pas en compte un entrepreneur qui aurait refusé de proposer la source, si je cherchais).
Casey
11

La façon de régler ce problème est de négocier.

S'ils veulent du code source, ils doivent être prêts à payer pour cela, et c'est à vous de décider combien cela devrait être.

D'autre part ... s'ils ne sont pas disposés à payer ce que vous voulez, ils peuvent décider de "prendre leurs affaires ailleurs".

Bienvenue dans le monde des affaires :-)


Et lorsque vous parlez à de futurs clients, assurez-vous de mentionner ce problème au tout début ... pour éviter de perdre tout le temps de chacun.


Il convient également de noter que ce que vous faites est un anathème pour les développeurs open source et pour les clients (instruits) à la recherche de solutions open source.

Stephen C
la source
5
Premièrement, il y a beaucoup plus de possibilités pour une licence que "ils veulent". Deuxièmement, je pense que c'est très injuste pour vous de reprocher à l'OP de ne pas avoir "évoqué cela assez tôt" au lieu de la compagnie. C'est un peu éditorialisé. Troisièmement, je ne vois pas pourquoi les développeurs open source sont confrontés à un anathème s’ils souhaitent travailler sur un projet à source fermée. Quatrièmement, si la société cherchait une solution open source, elle le demanderait, et non une copie privée du code source pour ses besoins.
djechlin
1
@djechlin - 1) Je n'ai pas blâmé l'OP. Mais s’il n’est pas prêt à négocier sur ce point ... alors il aurait dû le faire plus tôt. C'est une exigence évidente et raisonnable pour un client averti de disposer d'un logiciel sur mesure. 2) L '"anathème" serait ce que fait l'OP ... essayant de conserver le code source. 3) Bien que rien n'indique que le client ait demandé l'open source (peut-être ne comprend-il pas vraiment ses avantages), il est clair que le >> do << veut le code source, qui est l'un des principaux avantages des logiciels libres .
Stephen C
3
Ce commentaire est sur place. En tant que développeur de logiciels, tous mes clients obtiennent une licence exclusive pour l’utilisation et la modification du logiciel, et je leur fournis le code source. De plus, je conserve le droit de réutiliser le code que j'ai écrit dans d'autres projets et de réutiliser le code d'un autre projet de ce projet. Cela leur fait économiser de l’argent et du temps à tous les deux. Personne n'a jamais eu de problème avec ça.
dotancohen
1
@dancoo: J'espère qu'ils obtiendront une licence "non exclusive". S'ils ont une licence exclusive, vous ne pouvez pas réutiliser le code pour le prochain client. Vous ne pouvez pas avoir deux clients avec une licence "exclusive" pour le même code.
gnasher729
La licence leur permet d'utiliser et de modifier le code, mais pas de le partager, de le vendre ou de le distribuer. Étant donné que PHP fonctionne principalement sur des VPS, je ne pourrais pas faire grand chose, ou aimerais le faire, si le code "coulait". Je ne vois pas cela comme un gros problème sur le terrain.
dotancohen le
5

C'est peut-être trop tard pour vous, dans la mesure où vous avez peut-être déjà convenu contractuellement de le faire et que vous auriez pu accepter des conditions mutuellement incompatibles avec différents clients.

Vous pouvez fournir votre code source à vos clients de deux manières. Propriété du droit d'auteur et sous licence.

Certains clients voudront posséder le code source. Cela signifie qu’à la fin du processus, ils vous paieront de l’argent et vous leur accorderez en échange le droit d’auteur du code que vous avez créé pour eux. Cela s’explique notamment par le fait qu’ils voient un potentiel important de propriété intellectuelle dans le code source et souhaitent peut-être l’évaluer dans le bilan de leur société. Dans ce scénario, vous ne pourrez plus utiliser ce code source pour d'autres projets, sauf si vous obtenez également une licence de votre client vous donnant ce droit.

Si votre client achète un produit «standard», il s’attend à recevoir une licence lui permettant d’utiliser le logiciel et non à la propriété du code source. Ils devraient s’attendre à ce que vous vendiez le même logiciel (ou un logiciel similaire) à de nombreuses autres organisations et qu’ils bénéficient, espérons-le, d’un coût d’achat moins élevé en raison de la clientèle plus large.

Cependant, la situation dans cette question est un méli-mélo des deux.

Voici ce que je voudrais pouvoir faire. J'accorderais à votre client une licence pour utiliser (et modifier) ​​votre code partagé. Si le client m'interroge, je vous ferai remarquer qu'il s'agit d'un code partagé que vous avez déjà utilisé dans plusieurs projets et que des offres actuelles ont été mis en place pour les travaux futurs et basé sur votre utilisation continue de ce travail. Faites remarquer que cela a eu pour effet de réduire le temps consacré à ce projet par votre client, ce qui lui a coûté moins cher. Comme d'autres bibliothèques de code partagées utilisées par le projet, elles disposent d'une licence pour utiliser ce code et permettre à d'autres équipes de développement de le développer, ainsi que d'autres projets basés sur cette bibliothèque. Cependant, s'ils préfèrent être propriétaires de tout le code, vous êtes prêt à en créer un autre, mais cela entraînerait des frais supplémentaires.

Selon ce à quoi vous vous êtes déjà engagé, vous pourriez avoir à écrire une fonctionnalité de remplacement gratuitement ou à donner votre code source.

Rappelez-vous, il existe différents types de bibliothèques. La bibliothèque de modèles standard en C ++ est un bon exemple de bibliothèque incluse au niveau du code source et compilée dans un exécutable de projet qui peut être assez similaire à la façon dont vous avez utilisé votre code commun.

Michael Shaw
la source
1
D'après ce commentaire : "Le contrat n'est pas finalisé, ils ont accepté, ils n'ont pas signé et sont revenus avec cette clause." - comme il y a seulement deux jours, je suppose que les négociations sont toujours en cours.
0

Si vous utilisez un tiers avec le logiciel que vous livrez, il est probable que vous ne possédiez pas le code source de ce tiers. Vous livrerez toujours le logiciel à l'entreprise avec les fichiers binaires du tiers. Le code que vous avez développé en tant que cadre partagé dans tous vos projets est identique à celui d'un tiers, même s'il vous appartient. Dans ce cas, la société a exactement le même risque avec les fichiers binaires de votre framework que avec le tiers. Pourquoi, dans ce cas, donneriez-vous à l'entreprise le code source de votre framework? Vous pouvez lui fournir une bonne documentation sur l'API avec un contrat de licence et le reste. Si votre code contient la prochaine grande chose qui révolutionnera l'industrie, c'est une autre histoire, mais ce n'est généralement pas le cas.

Samuel
la source