Shenzhen

Qui possède le code à l'intérieur de votre produit

Un contrat de matériel règle généralement le moule, les plans et les rapports d'essai, puis ne dit rien du firmware. Ce silence est la raison pour laquelle certains produits ne peuvent ni changer d'usine, ni être mis à jour, ni être corrigés après la vente.

France → Chine

La plupart des produits vendus aujourd'hui contiennent du code. Parfois quelques kilo-octets sur un microcontrôleur, parfois une application complète et son compagnon mobile. L'acheteur négocie soigneusement l'objet physique et hérite du code par accident, parce qu'il arrive déjà écrit, dans un échantillon qui fonctionne. Le moment où ce n'est plus un détail est celui où l'on veut modifier quelque chose — et la position de négociation a déjà disparu.

Trois situations, et ce ne sont pas des variantes l'une de l'autre

Avant de demander qui possède quoi, établissez dans laquelle des trois vous êtes. Les acheteurs croient couramment être dans la troisième alors qu'ils sont dans la première, parce que le produit porte leur marque et leurs libellés de menu.

SituationQui a écrit le codeCe que vous pouvez raisonnablement demander
L'usine fournit son firmwareL'usine ou son fournisseur de composant, bien avant votre arrivéeUn binaire compilé, un numéro de version, un journal des modifications, et le droit de continuer à l'utiliser. Les sources s'obtiennent rarement, et le plan honnête suppose que vous ne les aurez pas
L'usine l'écrit pour vousLes ingénieurs de l'usine, sur votre spécification, payés par vous d'une manière ou d'une autreLa propriété ou une licence large, les sources, l'environnement de compilation et le droit de le faire modifier ailleurs — le tout nommé au contrat, avant le début des travaux
Vous apportez le codeVous, ou un développeur que vous payez directementUne procédure de remise propre : ce que vous livrez, comment c'est chargé, qui détient les clés de signature, et ce que l'usine n'a pas le droit de faire de ce qu'elle reçoit

Ce qu'il faut obtenir par écrit, quelle que soit la situation

La liste ci-dessous n'est pas un document juridique ; c'est l'ensemble des questions dont les réponses décident de ce que vous pourrez faire dans deux ans. Posez-les au moment du devis, quand l'usine veut la commande. Les poser après la première série transforme une clarification de routine en renégociation.

  • Les sources, et dans quel état : un dépôt que vous pouvez compiler, pas un dossier de fichiers envoyé une fois.
  • La chaîne de compilation : compilateur et version, configuration, et les étapes exactes qui transforment les sources en binaire réellement chargé dans le produit.
  • Les clés : qui détient les clés de signature et de chargement, et si un tiers peut produire un binaire que le produit acceptera.
  • Le droit de faire évoluer, et de le faire faire par un autre — c'est la seconde moitié de la phrase qui saute.
  • Les composants tiers : quelles bibliothèques et quelles piles sont incluses, sous quelles licences, et ce que ces licences exigent de vous lorsque vous vendez le produit.
  • La documentation : plan mémoire, protocoles, signification des codes d'erreur, et comment reconstruire une unité à partir de rien.
  • Où vit le back end, s'il y en a un : quels serveurs, quel compte, quel domaine, et ce que deviennent les données.

Quand les sources ne peuvent réellement pas être remises — cela arrive, et c'est parfois légitime — le repli est le dépôt chez un tiers : le code est déposé et vous est libéré sur des événements définis, par exemple la cessation d'activité du fournisseur ou son incapacité à maintenir le produit. C'est une protection plus faible que la propriété et elle se met en place quand les relations sont bonnes, mais elle vaut infiniment mieux que l'alternative habituelle, qui est rien.

Ce qui arrive quand on veut changer d'usine

Changer de fournisseur de matériel est un exercice connu : on récupère l'outillage, on remet les plans, on requalifie les pièces et on accepte une première série difficile. Changer de fournisseur quand on ne possède pas le firmware est un autre exercice, parce que la nouvelle usine peut copier l'objet et ne peut pas copier le comportement. Ce que l'on déplace réellement, ce n'est pas le produit, mais la moitié de celui-ci que l'on sait documenter.

Les symptômes se reconnaissent. Des unités qui fonctionnent mais échouent à un test que les précédentes passaient. Une option de menu que personne ne sait expliquer. Une étape d'étalonnage qui n'existait que dans un script, sur la machine d'un ingénieur. Et, au pire moment, un parc de produits déjà vendus qui ne peut plus recevoir de correction, parce que le seul capable de produire un binaire valide est le fournisseur que vous venez de quitter.

Les mises à jour après vente, qui sont un engagement et non une fonction

Un produit qui peut être mis à jour est un produit qui doit l'être. Dès lors qu'un défaut peut être corrigé à distance, les clients, les distributeurs et, dans certains cas, les autorités s'attendront à ce qu'il le soit. Cette attente survit à la relation avec l'usine qui a écrit le code, et c'est pourquoi le chemin de mise à jour est un sujet contractuel avant d'être un sujet technique.

  • Qui peut produire une mise à jour que les produits installés accepteront, et pour combien de temps cela reste vrai.
  • Ce que cela coûte par version, et si les corrections des défauts du fournisseur lui-même sont facturées.
  • Comment une mise à jour atteint un produit déjà installé chez un client, et ce qui se passe si elle échoue à mi-parcours.
  • Qui est informé de quoi : un historique de versions que vous pouvez montrer à un client, à un distributeur ou à une autorité.

Une question sépare un produit qu'on possède d'un produit qu'on loue : si ce fournisseur disparaissait demain, quelqu'un d'autre pourrait-il produire une mise à jour valide pour les unités déjà vendues ? Si la réponse est non, le code n'est pas le vôtre, quoi qu'en dise la facture — et mieux vaut le savoir avant que la réponse soit mise à l'épreuve.

Rien de tout cela n'exige une conversation hostile. Une usine qui écrit du bon firmware accepte généralement de dire à qui il appartient, ce qui est inclus et ce que coûte une modification, à condition que la question soit posée simplement et tôt. Ce qui casse les relations, c'est de découvrir au bout de deux ans que chacun supposait une réponse différente, et que les deux étaient sincères.

Questions qui reviennent.

L'usine dit que le firmware est inclus. Est-ce suffisant ?

Inclus signifie que vous recevez un produit qui fonctionne, pas que vous recevez le code. Posez deux questions de suite : puis-je obtenir les sources, et quelqu'un d'autre que vous peut-il produire un binaire que ce produit acceptera ? Les réponses disent si « inclus » veut dire propriété, licence ou dépendance. Les trois peuvent convenir — à condition de savoir laquelle vous avez signée.

Faut-il payer un supplément pour le code source ?

Souvent oui, et cela coûte généralement moins cher comme ligne du premier devis que comme demande ultérieure. Jugez-en par rapport à ce que vous perdriez sans : la capacité de corriger un défaut, de déplacer la production, et de continuer à vendre un produit dont le fournisseur ne répond plus. Si le produit ne vit qu'une saison, la réponse peut être non — mais qu'elle soit prise explicitement, et non par défaut.

Nous n'avons changé que le logo et les libellés de menu. Est-ce notre logiciel ?

Non. Personnaliser des textes et des images visibles est un paramétrage, pas une création : le programme dessous appartient à qui l'a écrit. C'est une position tout à fait tenable pour beaucoup de produits, mais elle signifie que vous ne pouvez pas en changer le comportement, ni l'emporter ailleurs, et que vous dépendez du fournisseur pour chaque correction. Sachez-le avant de promettre une fonction à un client.