Forum Programmation.autre Licences MIT/BSD et distribution binaire

Posté par  . Licence CC By‑SA.
Étiquettes :
5
11
oct.
2023

Bonjour à tous,

Au travail, nous développons, entre autre, une application Electron propriétaire qu'on package pour Windows, Linux et Mac et des extensions de navigateur (Firefox et basés sur Chrome). Tout ce petit monde utilise l'écosystème Node et s'appuie sur de très (très) nombreuses librairies. Nous faisons attention à ne sélectionner que des bibliothèques sous licence non contaminantes, parmi elles, beaucoup sont sous licence MIT ou BSD ou des variantes.

Or ces licences demandent en général une redistribution de la mention de copyright et/ou des conditions de distributions en même temps que le binaire produit. Par exemple pour MIT :

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

Ou pour BSD :

Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution

Tel que je comprend ces licences, il faut que nous maintenions une liste de toutes les dépendances et de leurs dépendances, de façon récursive, puis que nous extrayons les fichiers de licence, pour les distribuer en même temps que le binaire. Et ensuite, que faire de cette collection de fichiers ? Faut-il les mettre sur le système de l'utilisateur ? Comment gérer le cas des extensions de navigateur ? Quelles sont les bonnes pratiques en la matière ?

On a tenté de mettre une fenêtres de remerciements qui listait les dépendances et renvoyait vers leurs licences. Mais on atteint les limites de ce système tant le nombre de dépendances liées est impressionnant : on tourne autour de 1200 dans notre projet !

Et vous comment gérer vous cette problématique ? Connaissez-vous des outils qui la solutionnent, même partiellement ?

Je vous remercie pour votre aide !

  • # Nintendo fait une énorme liste des licences dans une seul page

    Posté par  (site web personnel, Mastodon) . Évalué à 6.

    Hello,

    Je suis tombé hier soir sur la page d'informations de licence dans les menus de la Nintendo Switch suite à une mise à jour hier.

    Eh ben, ils ont juste fait une immense page défilable avec toutes les mentions et licences.

    J'ai commencé à lire le début (il y a curl, c'est peut-être pour ça la mise à jour ?), mais j'ai assez vite abandonné quand j'ai vu la taille de l'ascenseur de la scrollbar 😅

    J'imagine que Nintendo a contrôlé que c'était une solution suffisante avant de le faire…

    Après il serait peut être envisageable d'ajouter un index des projets ou un système de recherche par nom. Ça serait plus sympa pour rendre plus visible les projets (bon ça restera un index avec 1200 entrées 😬).

  • # à voire pour les sous dependances

    Posté par  . Évalué à 3.

    si tu cites ta dependance à une librairie que tu utilises,
    as-tu vraiment besoin de lister la dependance de cette librairie à une "sous librairie" que tu n 'utilises pas directement ?

    par exemple, tu utilises openvpn dans ton logiciel, tu inclues donc la licence d'openvpn
    mais tu n'as peut-etre pas besoin de lister la licence de Qt/GTK de l'interface graphique du produit, ni celle de openSSL

    • [^] # Re: à voire pour les sous dependances

      Posté par  . Évalué à 2.

      Ben ça, c'est une question qu'on s'est posée aussi. Mais je dirais que si ta dépendance l'intègre, le code se retrouve in fine dans ton code…

      • [^] # Re: à voire pour les sous dependances

        Posté par  . Évalué à 4.

        oui mais tu ne l'utilises pas directement,

        c'est donc la licence de OpenVPN qui va s'appliquer, peu importe les librairies qui sont dedans (aujourd'hui openSSL, demain libreSSL, apres demain xxxSSL…)

        • [^] # Re: à voire pour les sous dependances

          Posté par  (site web personnel) . Évalué à 3.

          oui mais tu ne l'utilises pas directement

          ça dépend si tu fais

          • des liens pour produire un binaire en statique (non recommandé) => là tu inclus la bibliothèque à ton binaire (mauvaise pratique, empêchant de prendre en compte les bibliothèques déjà disponibles sur le système de l'utilisateur)
          • des liens en dynamique => là tu ne cites la bibliothèque que comme dépendance et pas besoin d'indiquer la licence (vu que — comme tu l'indiques en exemple — ça pourrait se baser sur une autre bibliothèque compatible)
  • # Pas de limites

    Posté par  (site web personnel) . Évalué à 6. Dernière modification le 12 octobre 2023 à 15:58.

    Mais on atteint les limites de ce système tant le nombre de dépendances liées est impressionnant

    De quelles limites s'agit-il? si tu a toutes ces libs fournies, tu as de la place pour la petite licence… Mais sinon, voir par exemple la page de licence de Chrome pour une façon de faire (eux n'ont pas 1200 logiciels, certes…)

    Faut-il les mettre sur le système de l'utilisateur ?

    Vu la taille énorme que le binaire doit avoir avec 1200 dépendance, la page HTML que tu lances dans le navigateur ne va pas changer grand chose.

    Et vous comment gérer vous cette problématique ? Connaissez-vous des outils qui la solutionnent, même partiellement ?

    Je dois avouer que perso je liste ce que j'utilise directement puis renvoie à la page de licence des projets, leur laissant la charge des sous-dépendances.
    Peut-être pas des plus carrés, mais franchement : à part si tu es Google sur 1 milliard de machines, tout le monde s'en fout de plus.

  • # attention au scope

    Posté par  (site web personnel) . Évalué à 2.

    J'avais eu le coup pour le même genre de boulot avec maven
    Tes 1200 dépendances sont elles pour le runtime ou aussi pour le build/test/packaging/… ?

    • [^] # Re: attention au scope

      Posté par  . Évalué à 2.

      Il y en a une partie qui sont pour le build, effectivement. On a prévu de les enlever, mais en première approche, on les a laissées dans la liste.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.