Licence MySQL et GPL [fermé]
pour autant que je sache, quand je construis une application de bureau/serveur en utilisant N'importe quel code GPL comme MySQL je vais devoir libérer le code source de mon logiciel sous la GPL.
si je veux développer une application Web en utilisant MySQL, mon code se liera avec les bibliothèques MySQL. Dois-je libérer le code source de mon webapp dans cette situation pour être conforme à la GPL?
10 réponses
pourvu que vous ne conserviez que le serveur informatique(et donc "privé"), vous n'avez pas à le publier sous GPL. Mais dès qu'il atteint ordinateurs publics, il ne peut plus être considéré comme une version interne, et donc le code source est nécessaire.
de Sorte que vous pouvez:
- Libérer votre code sous GPL
- acheter la version commerciale de MySQL
- ne le conservez que sur le serveur.
vous devez soit libérer la source (sous GPL), soit payer une licence propriétaire à MySQL de sorte que vous obtenez le droit de distribuer les binaires MySQL sous une licence qui est plus compatible avec ce que les produits propriétaires utilisent. Il est préférable de poser ce genre de question à votre avocat.
ETA: juste pour clarifier un peu; si vous écrivez votre propre bibliothèque qui parle à MySQL en utilisant son protocole wire-line, alors vous serez toujours à 100% en clair. De même, si vous utilisez une bibliothèque qui a fait exactement cela, mais qui est sous licence BSD (à titre d'exemple), alors vous seriez aussi dans le clear, parce que vous ne parlez à MySQL que sur une connexion socket, et que vous n'appelez pas dans le code GPL. Je ne suis pas immédiatement au courant de l'existence d'interfaces BSD autorisées pour le protocole MySQL, mais il est certainement possible qu'il y en ait une quelque part.
si vous exécutez vous-même l'application web, et que vous ne la distribuez pas en tant qu'application, alors vous n'avez pas à publier la source. Permettant l'accès à une application web n'est pas considéré comme une distribution.
Edit: si vous êtes intéressé vous pouvez regarder les Affero General Public License, qui exige que la source soit mise à la disposition des utilisateurs du réseau du logiciel AGPL (par exemple, elle s'appliquerait aux applications web).
vous n'avez pas nécessairement besoin de créer un lien avec les bibliothèques MySQL pour utiliser MySQL dans votre application. Tout ce que vous avez à faire est de "parler" à un serveur MySQL en utilisant le protocole MySQL; dans ce cas, vous vous connectez au serveur MySQL en tant que client, c'est-à-dire en tant qu'utilisateur, et vous n'avez pas besoin de publier votre logiciel sous la licence GNU GPL.
la question Est, comment votre programme peut-il parler le protocole MySQL? Une possibilité est d'utiliser la bibliothèque client officielle MySQL (connecteur), GPL. Si vous faites cela, vous liez statiquement votre programme à une bibliothèque sous GPL, et vous devez donc libérer votre logiciel sous GPL.
alternativement, vous pouvez créer un lien avec une bibliothèque de clients tiers, avec une licence différente. Par exemple, vous pouvez utiliser le MariaDB Client Library, qui est LGPL'D (et est donc compatible avec les logiciels propriétaires) et fournit la même API que la bibliothèque client MySQL d'origine. Voir la MariaDB licensing FAQ, qui s'applique aussi à MySQL, pour plus de détails et de conseils.
il peut être délicat de distribuer le serveur MySQL avec votre logiciel: vous pouvez simplement demander à vos clients de télécharger et d'installer MySQL par leurs propres moyens, ou de développer un simple téléchargeur pour être distribué avec votre logiciel.
MySQL utilise la double licence. Si vous êtes libre, nous sommes libres.
donc, si vous utilisez, pour autant que je sache, le connecteur MySQL JDBC seulement - vous devriez avoir une licence ou GPL votre code.
a moins que vous ne dériviez et/ou distribuiez le Logiciel sous GPL, vous devriez être en sécurité.
lier avec la bibliothèque client MySQL n'est ni un travail dérivé, ni une distribution.
mise à jour: en y réfléchissant, la façon dont vous liez (dynamique ou statique) les bibliothèques fera une différence. Lien statique est la distribution, mais si vous liez dynamiquement et vos clients Télécharger les connecteurs eux-mêmes, ce n'est pas la distribution et vous devriez être sûr.
Oh, et IANAL.
si je veux développer une application Web en utilisant MySQL, mon code se liera avec les bibliothèques MySQL. Dois-je libérer le code source de mon webapp dans cette situation pour être conforme à la GPL?
comme d'autres l'ont dit, si vous ne distribuez pas l'application à d'autres, il n'y a aucun problème.
normalement, vous développeriez par rapport à une API de base de données standard et laisseriez l'utilisateur décider quelle base de données se connecter à l'application. Dans ce cas, il n'y a pas de problème. "Votre code" ne ferait pas de lien vers libmysqlclient, mais il pourrait être combiné avec un module d'accès à la base de données qui fait le lien vers libmysqlclient.
si vous voulez distribuer un installateur qui configure votre application et libmysqlclient ensemble, cela ne compterait probablement pas comme une "simple agrégation", donc cela vous obligerait à distribuer votre application sous licence open source. Cela ne doit pas, cependant, nécessairement être GPL - voir la MySQL Foss License Exception.
si vous voulez distribuer un installateur qui configure votre application et le serveur MySQL lui-même, L'Exception ne s'applique pas, donc vous êtes limité à la GPL seulement.
naturellement IANAL, et il ya certainement encore une certaine incertitude sur ce qui compte comme dérivation, en particulier en ce qui concerne la liaison dynamique. Toutefois, ce qui précède est ma compréhension de la position traditionnelle de MySQL AB sur l'octroi de licences, et je n'ai pas entendu parler de changement après la prise de contrôle de Sun.
malheureusement, la Coupe n'est pas aussi nette: la GPL interdit distribution sans indiquer la source de chaque "produit dérivé". La Distribution est légalement définie comme le fait de transférer la source d'un ordinateur à un ou plusieurs ordinateurs pour un usage officiel.
Malheureusement, qui peut aussi inclure l'utilisation sur les clusters de serveurs, les boîtes QA, les boîtes dev, etc. dans la boutique de dev moderne, juste libérer le code à plusieurs frontend / backend boîtes est techniquement distribution (aux yeux de la loi).
peu importe ce que pense la Free Software Foundation, peu importe ce que pensent quelques juges une fois que quelqu'un/une société est poursuivi pour avoir fait exactement cela.
C'est juste une raison de plus pourquoi les principaux clients de la GPL ces jours-ci sont des sociétés qui souhaitent empêcher les concurrents de bifurquer leur code. Tout le monde devrait envisager des licences beaucoup moins encombrantes comme le MIT ou Creative Commons Licences d'Attribution.
tout d'Abord, je ne suis pas un avocat. Parlez avec l'un d'eux avant de prendre tout conseil ici.
au-delà de cela, si vous ne distribuez pas votre application web, vous n'avez probablement pas besoin de publier vos modifications. Vous pouvez toujours rendre votre application web disponible pour être utilisé par d'autres si vous hébergez l'application web.
si votre distribution inclut et installe MySql dans le même paquet, elle nécessite une licence commerciale.
mais si vous distribuez seulement votre code, avec un simple avis "requires MySql" et un script d'installation (pour créer/peupler les tables), il ne devrait pas y avoir de problème, AFAIK.
IANAL, bien sûr.