Forum général.général Question de licence

Posté par  .
Étiquettes : aucune
0
4
avr.
2005
Bonjour a tous,

Voilà je me suis lancé dans un projet opensource sous GPL, écrit en python, et j'aimerais utiliser une bibliothèque écrite pour BitTorrent (la bibliothèque bencode, qui permet de faire de la sérialisation de données en chaînes de caractères.

Je vais donc voir par ici : http://www.bittorrent.com/license/(...) , et je lis le point 4.f :

Distribution of Derivative Works. You may create Derivative Works (e.g., combinations of some or all of the
Licensed Product with other code) and distribute the Derivative Works as products under any other license you select,
with the proviso that the requirements of this License are fulfilled for those portions of the Derivative Works that
consist of the Licensed Product or any Modifications thereto.


Bon si je comprend bien, il faut que la GPL soit compatible avec. Je vais donc faire un tour ici : http://www.gnu.org/licenses/license-list.html,(...) je ne trouve pas ma licence BitTorrent. Une petite recherche sur le net, et je vois que la licence est basée sur celle de Jabber. Malheur :

The license is a free software license, incompatible with the GPL. It permits relicensing under a certain class of licenses, those which include all the requirements of the Jabber license. The GPL is not a member of that class, so the Jabber license does not permit relicensing under the GPL. Therefore, it is not compatible.


Donc, je suis dans la mouise. Ma question est : quelles sont mes options ? Recoder un truc en évitant de s'inspirer ? Faire un sous-package de mon programme contenant la bibliothèque sous une autre licence ?

La solution la plus simple serait d'avoir une dépendance envers BitTorrent, mais ce n'est pas acceptable vu le peu de choses que je récupère. Et je voudrais éviter de changer la licence de mon projet...

--
Thomas

PS: merci linuxfr de m'avoir rappelé comment s'écrit licence en français.
  • # Possibilité

    Posté par  . Évalué à 2.

    Si tu n'utilises pas d'autres composants sous licence GPL écrit par des tiers, tu peux simplement mettre une clause d'exception à la GPL permattant d'utiliser la bibliothèque bittorent en question sous sa présente licence.
    • [^] # Re: Possibilité

      Posté par  . Évalué à 2.

      Si tu n'utilises pas d'autres composants sous licence GPL écrit par des tiers


      J'ai vu cette histoire de clause d'exception à la licence, mais je ne vois pas pourquoi je ne dois pas utiliser d'autres composants sous GPL.. En tout cas j'en utilise.

      Sinon effectivement je suis tenté par recoder la bête, je vais éviter de trop regarder ce qu'ils ont fait. Et puis ca permet d'apprendre certaines choses. L'interêt pour moi était d'utiliser une solution éprouvée, tant pis...

      Merci en tout cas pour vos réponses.

      --
      Thomas
      • [^] # Re: Possibilité

        Posté par  . Évalué à 2.

        La réponse est simple : une clause d'exception change la licence ! Il ne s'agit plus de la GPL, mais de la GPL avec une clause d'exception donnée autorisant a faire tel linkage "contre nature" ;) . La licence est donc incompatible avec une GPL sans clause d'exception.
  • # Développement...

    Posté par  . Évalué à 1.

    Je pense que le plus simple est de recoder la chose (surtout si le bloc est petit). Tu as tout à fait le droit de t'inspirer de l'original, à partir du moment ou tu ne copie pas du code et que tu ne change pas que la syntaxe. Reparts de l'algorithme général (évite de reproduire la structure également, ex classes methodes...) et développe un code personnel.
    • [^] # Re: Développement...

      Posté par  . Évalué à 3.

      Je pense aussi qu'il te sera plus facile de recoder l'algo.
      Tu peux t'aider de ceci http://www.bittorrent.com/protocol.html(...)

      Mais ..... si tu veux sérialiser , pourquoi ne pas simplement utiliser Pickle ?
      >>> import cPickle as pickle
      >>> pickle.dumps('toto',0)
      "S'toto'\np1\n."
      >>> pickle.dumps(({'spam.mp3': {'author': 'Alice', 'length': 100000}}),0)
      "(dp1\nS'spam.mp3'\np2\n(dp3\nS'length'\np4\nI100000\nsS'author'\np5\nS'Alice'\np6\nss."

      Le protocole 0 te permet de sérialiser en mode texte et non en mode binaire.Mais le mode binaire est plus efficace. Il faut choisir suivant l'utilisation que tu vas en faire.
      • [^] # Re: Développement...

        Posté par  . Évalué à 2.

        Effectivement je suis arrivé à la même conclusion. Au départ je voulais utiliser bencode parce que c'est simple (presque lisible) et qu'il existe des implémentations dans d'autres langages (au moins ruby, php, java, donc un peu mieux niveau interoperabilité que pickle).

        Mais cPickle est judicieux. Reste à voir si ca se marrie bien avec longblob, sinon je ferais du dump en string (relire cette fin de phrase pour rigoler).

        --
        Thomas

Suivre le flux des commentaires

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