Problème de licence, qui dois-je appeler ?

Posté par (page perso) . Modéré par Fabien Penso.
Tags :
0
10
sept.
2002
GNU
J'étais en train de faire une petite intégration de Ghostcript avec lpd, Samba et Exim, quand je me suis demandé si cela n'existait pas ailleurs.

Quel ne fut pas ma joie de voir un logiciel "gratuit pour ceux qui aiment les pubs sous Windows et *payant* pour les autres". Je l'ai décompacté et regardé. J'ai été surpris de voir du code Postscript (et oui c'est aussi un langage) en GPL et des fichiers au nom de gs_....pfb, comme ceux de ghostscript. En fait il semblerait qu'il maquille Ghostscript derrière un "clikodrome".

Avant de crier au loup, trois questions :
- quelqu'un peut il confirmer ou infirmer qu'il s'agit bien de fichiers de Ghostscript?
- le fait de mettre un front-end devant un logiciel GPL est-il une violation de la GPL?
- si c'est vraiment une violation, qu'est-on censé faire?

Aller plus loin

  • # Il s'agit bien de GS

    Posté par (page perso) . Évalué à 10.

    quelqu'un peut il confirmer ou infirmer qu'il s'agit bien de fichiers de Ghostscript?

    Oui, d'après leur FAQ http://pdf995.com/faq.html(...) :

    <extrait>
    PDF995 refers to an unmodified version of GNU Ghostscript and also supports other Postscript-to-PDF converters. GNU Ghostscript is distributed under the GNU General Public License. You may obtain the source code for GNU Ghostscript here.
    </extrait>
    • [^] # Re: Il s'agit bien de GS

      Posté par (page perso) . Évalué à 10.

      Entre le moment ou la news a été publiée et le moment ou les modéros m'ont contacté, j'ai eu le temps de voir ce petit fichier. En fait, il y a deux sous-répertoires dans le répertoire d'install. Un où se trouve ghostscript, et l'autre ou se trouve leur logiciel.

      J'aimerais savoir comment on fait pour lire la table des symboles pour une dll ou un exe sous windows. Comme ça éventuellement je pourrais vérifier qu'il n'appellent pas de fonctions exportées par ghostscript. Je me sens pas encore assez chaud pour désassembler le code.

      Sinon, j'ai demander à un officiel de la FSFE chapîte France qui se reconnaîtra j'espère ce qu'on est censé faire. Il m'a dit la chose suivante:
      Quand tu penses avoir à faire à une violation de la GPL fait la chose suivante :
      - essaies de trouver les preuves par toi même,
      - éventuellement discutes en avec l'auteur du logiciel,
      - si tu penses avoir des preuves, discutes en avec le possible copiteur,
      - et si les choses ne s'arrangent pas à l'amiable contacte la FSF.

      Bref, lire
      http://www.gnu.org/licenses/gpl-violation.html(...)

      La raison est la suivante : ils ont très peu de moyens, il est donc nécessaire, (et je trouve sain) que les personnes apportent comme première contribution leur travail sur le sujet.

      Pour ma part, après avoir bien regardé, je m'aperçois que je suis strictement incapable de pouvoir déterminer si le logiciel incriminé appelle ghostscript par un system() ou non.

      Je me fous un peu de la licence remarquez, pour moi il n'y a peut être pas viol technique de la licence, mais il y a sûrement un viol moral de la licence. Bref, j'aime pas.

      Plutôt que d'installer leur click'a click il existe une solution smart. Pour ceux qui veulent générer du pdf sous windows avec ghostcript voici un lien pertinent et utilisable :
      http://www.cs.wisc.edu/csl/doc/howto/pdf_generation/index.html#writ(...)
      • [^] # Pour lire la table des symboles ...

        Posté par . Évalué à 10.

        Il est possible de lire la table des symboles avec un outil micro$oft ( désolé ... ) nommé "Dependency Walker" et livré avec Visual Studio. On peut le trouver Dans 'Visual Studio/Common/Tools/depends.exe'. Il permet de différencier les symboles exportés des dépendances externes.
        Il me semble aussi que le pack cygwin, et plus particulièrement le portage des 'binutils' offre objdump en version Win, qui permet lui aussi de vérifier les appels et les besoins.
      • [^] # Re: Il s'agit bien de GS

        Posté par (page perso) . Évalué à -1.

        strace est ton ami !
        il te montrera tous les dessous de table.
        un petit :

        [monnier@bokado monnier]$ strace -o out.txt bash
        [monnier@bokado monnier]$ xeyes &
        [1] 21343
        [monnier@bokado monnier]$ exit
        exit
        [monnier@bokado monnier]$ xemacs out.txt

        et tu verras un beau :

        [...]
        stat("/usr/bin/X11/xeyes", {st_mode=S_IFREG|0755, st_size=11584, ...}) = 0
        rt_sigprocmask(SIG_BLOCK, [INT CHLD], [], 8) = 0
        fork() = 21343
        setpgid(21343, 21343) = 0
        [...]


        bon, comme c'est un fork, on n'est pas sûr de ce que le process fils fait, et c'est ce qui nous intéresse. Mais un system, tu le verrais. Je crois.
        enfin bon, on perd rien à essayer, non ?
      • [^] # Re: Il s'agit bien de GS

        Posté par . Évalué à 10.

        Pour ma part, après avoir bien regardé, je m'aperçois que je suis strictement incapable de pouvoir déterminer si le logiciel incriminé appelle ghostscript par un system() ou non.

        Déplace ou supprime tous les exécutables Ghostscript (*.exe) jusqu'à ce qu'il n'en reste plus un. Si le programme continue à fonctionner, c'est en toute logique qu'il se lie avec une DLL Ghostscript.

        (pratique les extensions de fichier, non ? ;-))
      • [^] # Une autre solution pour "imprimer" des PDF sous Windows

        Posté par (page perso) . Évalué à 1.

        La solution pour imprimer que tu proposes (http://www.cs.wisc.edu/csl/doc/howto/pdf_generation/index.html#writ(...))
        n'est pas équivalente : pdf995 permet de générer des PDF directement depuis une quelconque application, y compris propriétaire, car il se présente comme une imprimante.

        Personnellement, j'avais réussi à bidouiller une solution proche de pdf995 (d'après ce que je lis sur le site) en utilisant RedMon ( http://www.cs.wisc.edu/~ghost/redmon/index.htm(...) ) et GhostScript combiné au driver PostScript générique d'Adobe ( http://www.adobe.com/support/downloads/product.jsp?product=pdrv&(...) ). Il est important de bien sélectionner le fichier PPD (il me semble qu'il en a un qui est "générique" ou "standard"). Ca marchait avec le driver Adobe 4.2.x. La dernière fois que j'ai essayé, il y a deux ou trois ans, avec le nouveau driver Adobe 1.x (oui, la version 1 est postérieure à la version 4), Ghostscript avait des problème pour lire le PostScript généré.

        Tout ceci permet probablement d'obtenir une meilleure qualité de reproduction que pdf995 car on utilise un pilote provenant directement d'Adobe.

        Donc si vous tentez l'expérience, ou si vous voulez plus d'infos, contactez-moi.
        dolmen .arobase. bigfoot .point. com

        Mainteneur de LiquidPrompt - https://github.com/nojhan/liquidprompt

  • # Je crois que ...

    Posté par . Évalué à 10.

    Hum, si le fameux front end ne comprend pas de code de ghostscript, et qu'il se comptante de uniquemant de jouer le role de GUI il n'y a pas violation de la GPL.
    Rien n'interdit a un programme proprio, ou méme a un OS proprio de lancer un programme libre ou de lui passer des arguments, hors c'est plus ou moin ce que fait un frontend, le cas est courant pour beaucoup de logiciel libre comme Lame ou le codec MP3_Lame.dll avec les ripper de CD.
    • [^] # Re: Je crois que ...

      Posté par (page perso) . Évalué à 10.

      ATTENTION: s'ils lancent Ghostscript en tant qu'exécutable indépendant (ex avec la fonction system() de la librairie C) alors pas de pb, mais s'ils sont linkés statiquement ou dynamiquement avec Ghostscript alors il y a violation. Leur FAQ indique "refers to" ce qui est loin d'être précis.

      examiner le contenu de l'archive avec les outils appropriés, avant de conclure, et le cas échéant envoyer un mail à license-violation@gnu.org
      • [^] # Re: Je crois que ...

        Posté par . Évalué à 10.

        C'est marrant, j'ai l'impression qu'appeler un executable ou etre lie dynamiquement avec une lib c'est plus ou moins la meme chose. Je trouve que la difference est plus technique que conceptuelle. En effet, il suffirait d'ecrire des petits executables (sous license GPL) qui fourniraient les fonctions importantes de la lib et hop on contourne une lib sous gpl...
        • [^] # Re: Je crois que ...

          Posté par (page perso) . Évalué à 6.

          Tu pourra bien la contourner mais, tu risque d'avoir un logiciel "un peu" lent. De plus, c'est assez peu estetique pour un utilisateur de voir une serie d'excutables qui ne sont rien lorsqu'on clique dessus. Ca peut se maquiller mais bon...
          • [^] # Re: Je crois que ...

            Posté par . Évalué à 4.

            Ben, non, ca ne maquillerai toujours pas ! Car ces petites programment, qui eux, utilisent la GPL, devront alors être en GPL ... Et si eux font tout le traitement, il est facile de tout repomper, toujours en GPL, et eefaire le front-end en GPL, non ?

            JMS.
            • [^] # Re: Je crois que ...

              Posté par . Évalué à 10.

              Heu, non l'idée exposé plus bas c'est que si il n'est pas possible de faire directemant un front end ou tout autre type de programme qui s'interface avec le programme GPL, avec un programme non GPL il est assez simple de lier ce programme "contraignaient" dans un autre programme GPL ou de modifier celui-ci pour créer une interface interprocessus ou protocol ou autre, pour qu'il soit utilisable par un soft non libre sans avoir recours a des liens statics ou de la repompe de code.

              Ce qui n'est pas specifiquemant genant puisque que toute la partie libre reste libre.

              Dans le cas present:

              Si le programme repompe le code de ghostscript, c'est une violation de la GPL.
              Si le programme et lié statiquemant a du code de ghostscript c'est encore une violation de la GPL.
              Si il communique par des procedés XYZ avec ghostscript, sans le lier statiquemant ou par le biers de modifications faite a ghostscript dans le cadre de la GPL, il n'y a pas violation de la GPL .

              Pour prendre un exmple concret,il existe un excelent decoder MP3 sous GPL appelé MAD, il est present dans de nombreux lecteur GPL, mais aussi sous winamp par le bier d'un plug-ins, les sources du plug-ins sont sous GPL mais pas Winamp, puisque celui-ci ne viole pas la GPL en utilisant une librairie dynamique libre/GPL. ( le plug-ins MAD n'est pas fournis par default avec winamp, faut aller le chercher sur le net, je precises pour ce qui le cherche ).
              • [^] # Re: Je crois que ...

                Posté par (page perso) . Évalué à 3.

                Ton exemple est excellent !

                Par contre, lorsque le bon fonctionnement d'un logiciel non GPL (ou d'une de ces principales fonctionnalités) dépend de la présence d'un objet (logiciel) GPL, au point que ce dernier doit accompagner la diffusion du premier, alors, il y a bien, selon moi, en toute logique (la mienne donc ;), violation de la PGL.
                • [^] # Re: Je crois que ...

                  Posté par (page perso) . Évalué à 3.

                  Non. Même si l'exécution normale d'une application propriétaire dépend nécessairement de la présence d'un composant externe sous GPL, l'application en question n'est pas un travail modifié ou dérivé du composant sous GPL. Ce n'est pas comme un lien statique ou dynamique, qui entraîne la fusion des deux programmes, au moins dans leur forme compilée.


                  Mais je suis parfaitement d'accord avec toi quant à l'abus que ce contournement présente, et l'on peut considérer que la GPL n'a pas encore placé la barre assez haut dans sa protection.


                  Personnellement je pense qu'il est parfaitement immoral, mais légal, d'éviter ainsi les restrictions imposées par l'auteur. Cependant il est également impensable de modifier la GPL.

        • [^] # Re: Je crois que ...

          Posté par (page perso) . Évalué à 10.

          Il suffit de faire un tour sur la FAQ de la GPL.


          In what cases is the output of a GPL program covered by the GPL too?
          Only when the program copies part of itself into the output.


          et ceci


          I'd like to incorporate GPL-covered software in my proprietary system. Can I do this?
          You cannot incorporate GPL-covered software in a proprietary system. The goal of the GPL is to grant everyone the freedom to copy, redistribute, understand, and modify a program. If you could incorporate GPL-covered software into a non-free system, it would have the effect of making the GPL-covered software non-free too.
          A system incorporating a GPL-covered program is an extended version of that program. The GPL says that any extended version of the program must be released under the GPL if it is released at all. This is for two reasons: to make sure that users who get the software get the freedom they should have, and to encourage people to give back improvements that they make.

          However, in many cases you can distribute the GPL-covered software alongside your proprietary system. To do this validly, you must make sure that the free and non-free programs communicate at arms length, that they are not combined in a way that would make them effectively a single program.

          The difference between this and "incorporating" the GPL-covered software is partly a matter of substance and partly form. The substantive part is this: if the two programs are combined so that they become effectively two parts of one program, then you can't treat them as two separate programs. So the GPL has to cover the whole thing.

          If the two programs remain well separated, like the compiler and the kernel, or like an editor and a shell, then you can treat them as two separate programs--but you have to do it properly. The issue is simply one of form: how you describe what you are doing. Why do we care about this? Because we want to make sure the users clearly understand the free status of the GPL-covered software in the collection.

          If people were to distribute GPL-covered software calling it "part of" a system that users know is partly proprietary, users might be uncertain of their rights regarding the GPL-covered software. But if they know that what they have received is a free program plus another program, side by side, their rights will be clear.


          Donc on a tout à fait le droit de faire un front-end closed source pour un soft GPL, ce qui a l'air d'être le cas, mais il me semble qu'ils doivent bien expliquer que leur distrib est composée de deux soft dont l'un est sous licence GPL.
          • [^] # Re: Je crois que ...

            Posté par . Évalué à 10.

            Ce qui est expliqué dans la FAQ, ce programme utilise une version non modifié de GNU ghostscript, et support de nombreux convertisseur PDF.

            Donc tous semble correct, les 2 programmes sont biens distinctes et peuvent méme étre remplacés.
            • [^] # Re: Je crois que ...

              Posté par (page perso) . Évalué à 0.

              Justement non, l'interface ne peut pas fonctionner sans GNU Ghostscript derrière. À mon avis, elle viole clairement la GPL.

              Je crois qu'il y avait déjà eu des discussions ici à propos d'un cas similaire concernant GNU Parted.
              • [^] # Re: Je crois que ...

                Posté par (page perso) . Évalué à 7.

                -1, je ne peux plus voter aujourd'hui.

                Extrait de la faq :
                PDF995 refers to an unmodified version of GNU Ghostscript and also supports other Postscript-to-PDF converters. GNU Ghostscript is distributed under the GNU General Public License. You may obtain the source code for GNU Ghostscript here.

                Le soft peut donc fonctionner sans Ghostscript et probablement utiliser Acrobat PDF Writer.
        • [^] # Re: Je crois que ...

          Posté par (page perso) . Évalué à 7.

          Ce qui est difficile, c'est de passer des structures de données compliquées d'un process à l'autre (par exemple, essaye de passer un pointeur d'un processus à l'autre ... ça ne rime à rien)

          Dans le cas ou quelqu'un ferait un executable-librairie, cet executable serait relativement facilement réutilisable pour d'autres projets libres, donc, je ne vois pas de problème.
          • [^] # Re: Je crois que ...

            Posté par . Évalué à 3.


            Ce qui est difficile, c'est de passer des structures de données compliquées d'un process à l'autre (par exemple, essaye de passer un pointeur d'un processus à l'autre ... ça ne rime à rien)

            C'est technique mais tu peux bien souvent lineariser/serialiser tes donnees. C'est d'ailleurs ce que tu fais si tu veux sauver ou faire passer sur un reseau.


            Selon ma logique lorsque l'on depend d'une librairie ou d'un programme sous license gpl pour fonctionner alors on doit etre sous license gpl. Cette dependance peut se materialiser de differentes facons (link statique, link dynamique, appel de programme, appel de procedure a distance...). C'est d'ailleurs pourquoi je pense que pour diffuser certaines librairies il faut mieux utiliser des librairies sous license lgpl.
            • [^] # Re: Je crois que ...

              Posté par . Évalué à 3.

              Tes conditions sont beaucoups trop restrictives. Tu ne pourrais pas écrire un script qui appelle le "cp" de GNU sans le diffuser en GPL.

              Sinon, je suis d'accord avec toi sur la license LGPL. Il faut penser aux pauvres développeurs qui n'ont pas la chance de faire du libre et qui sont bien embêtés quand ils trouvent une superbe librairie dont ils ont bien besoin et qu'ils ne peuvent pas utiliser parce qu'elle est en GPL.

              C'est dommage pour la librairie en question, qui pourrait avoir plus de gens interessés pour la faire évoluer.

              Je trouve qu'une librairie est bien plus "libre" en LGPL qu'en GPL.

              Mettre une librairie en GPL se justifie si le but est de protéger une application en license GPL qui repose principalement sur la libraire en question.
              Si c'est juste par principe, comme pour la libgtop, cela ne me semble pas très constructif.

              Mais bon, l'auteur d'un logiciel a le droit de choisir la licence qu'il veut.

              Matthieu.
              • [^] # Re: Je crois que ...

                Posté par (page perso) . Évalué à 3.

                Sinon, je suis d'accord avec toi sur la license LGPL. Il faut penser aux pauvres développeurs qui n'ont pas la chance de faire du libre et qui sont bien embêtés quand ils trouvent une superbe librairie dont ils ont bien besoin et qu'ils ne peuvent pas utiliser parce qu'elle est en GPL.

                Le but de la GPL n'est pas de restreindre l'utilisation des sources, mais de proteger les sources contre ceux qui veulent restreindre leur diffusion, accès, modification, ou bénéfices.

                Le principe du logiciel sous GPL est simple: "Tu peux bénéficier des sources, et de ce qu'elles rapportent, car la connaissance se partage".

                Le principe proprio est différent: "L'esclusivité d'utilisation d'un programme s'achète, et rémunère uniquement son auteur, car la connaissance doit resté secrète".

                Dans la logique du logiciel propriétaire, il est évident que quand le développeur n'est pas l'auteur, il ne puisse pas jouir exclusivement des bénéfices d'un source.

                @+
                Code34
                • [^] # Re: Je crois que ...

                  Posté par (page perso) . Évalué à 0.

                  Le but de la GPL n'est pas de restreindre l'utilisation des sources, mais de proteger les sources contre ceux qui veulent restreindre leur diffusion, accès, modification, ou bénéfices.

                  Oui et non, c'est bien beau de dire ca. Mais si moi je transforme un soft libre en soft propriétaire nulle part je ne restreins quoi que ce soit sur le soft original. A partir du moment ou le soft original reste libre (je ne peux restreindre que des copies, jamais je ne peux rendre impossible les diffusions du code original), pour moi les restrictions que pose la GPL sur les distributions et modification sont là uniquement pour "restreindre" les modif à ceux qui font du libre, certainement pas pour garantir l'accès au soft original (cette garantie ne peut de toute facon etre enlevé).

                  La GPL est une licence politique et son but est bien de "contraindre" les gens à l'utiliser en cassant toute interaction entre libre et propriétaire. Je ne dis pas que c'est bien ou mal, chacun est assez grand pour juger, mais si comme tu ne le dis il s'agissait juste de garantir tes sources contre "ceux qui veulent restreindre leur diffusion, accès, modification, ou bénéfices" alors une BSD ou autre du même type suffit largement (car toujours tes sources seront accessibles sous cette licence à ceux qui veulent) (or il est clair que la GPL amène plus de restrictions)
              • [^] # Re: Je crois que ...

                Posté par . Évalué à 0.

                L'exemple du cp me parait abusif car tu depends d'un "cp" et pas necessairement du cp de gnu (ie. tu depends d'un systeme posix). Si par contre tu fais un script qui utilise un programme bien particulier et qui est sous license gpl alors il me semble que ton script devrait etre sous license gpl...

                Pour mettre une lib en gpl, je pense que c'est un choix qui se respecte. Eventuellement tu peux vendre la meme lib sous une license autre...
          • [^] # Communication inter-composants

            Posté par . Évalué à 6.

            c'est de passer des structures de données compliquées d'un process à l'autre

            Non, tu utilises CORBA, COM ou autre truc du même genre. En général tu as le choix de la méthode de communication, mais si tu n'utilises pas le mode inproc (similaire à une DLL), tu ne lies ton programme qu'avec la couche CORBA/COM, qui se charge de communiquer elle-même avec l'objet que tu appelles (qui est lui-même lié avec une autre instance de la couche CORBA/COM).

            Les termes de la GPL deviennent de plus en plus difficiles à interpréter avec ce genre de choses. Il serait temps d'un petit toilettage ou au moins d'un examen en profondeur....
  • # Licence BSD

    Posté par . Évalué à -10.

    Passer en licence BSD, et tous ces problème n'existeront plus.

    Ca évite l'énervement et ça laisse plus de temps pour coder.
    • [^] # Re: Licence BSD

      Posté par . Évalué à -1.

      Trop gros passera pas.
      -1
    • [^] # Re: Licence BSD : éclaircissements

      Posté par . Évalué à 2.

      Pourrait-on m'expliquer les avantages/inconvénients le la license BSD ?

      J'ai franchement des doutes sur cette license.
      Mais je voudrai en avoir le coeur net.
      Je ne vois pas non plus les faiblesses de la GPL.

      Merci d'avance
      • [^] # Re: Licence BSD : éclaircissements

        Posté par . Évalué à 2.

        Tu abordes un sujet qui ne peut etre que controverti dans un forum tel que celui-ci.

        La licence BSD n'impose aucune restrictions aux consommateurs et aux auteurs du produit. De ce fait, ils peuvent modifier et redistribuer le produit dans n'importe quelle forme, sans ou avec les sources et a n'importe quel prix. Cela donne au consommateur une liberte certaine.
        Certains diront que c'est injuste que des entreprises ou particulier puissent reutiliser le travail des autres de cette maniere; les auteurs qui travaillent sur un produit sous licence BSD saventc ela et ont deja fait leur choix (eclaire).

        Si ce dernier point est derangeant, il est preferable de distribuer le produit sous licence GPL. la licence GPL garantit que les sources seront toujours dispo au fil des modifications/redistributions. Personne ne peut s'approprier le code du produit.

        De la a parler d'avantages et d'inconvenients, il n'y a qu'un pas que je ne franchirais pas. C'est une affaire de gout personnel.

        As tu fais l'effort de lire les 2 licences? Il serait tres facile d'effacer tous ces "doutes" que tu as exprimes.
        • [^] # Re: Licence BSD : éclaircissements

          Posté par (page perso) . Évalué à 4.

          la licence GPL garantit que les sources seront toujours dispo au fil des modifications/redistributions

          La formulation pret à confusion. Meme sur une BSD ton source sera toujours accessible. C'est la copie modifiée qui peut ne pas l'être.

          Je tiens à préciser car trop souvent je vois des "avec la BSD on peut restreindre ton logiciel" ou "le logiciel peut devenir propriétaire" ce qui n'est absolument pas vrai, le soft restera toujours sous BSD, par contre n'importe qui peut en faire une copie et faire ce qu'il veut de la copie, la communauté ne perdra rien (au pire elle ne gagnera pas les modifs faites, la nuance est de taille).
  • # Alerte !!! Hack Délirant !

    Posté par . Évalué à 3.

    je viens de cliquer sur le lien concernant le serveur web développé en PostScript.

    Je viens de réaliser, là.
    Un type est allé faire attendre une requete sur le port 8080 par inetd, lequel appelle Ghostscript qui interprete alors un fichier postscript. Bien pensé pour contourner l'imposibilité pour Postscript de gérer les socket TCP/IP.
    Alors, le bidule sert une page. Vraisemblablement pas grand chose de plus, mais c'est déjà une performance technique.

    Bon, il y en a vraiment qui n'ont que ça à faire, mais là, c'est tellement saugrenu que j'applaudis !

Suivre le flux des commentaires

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