Quelles licences open source sont compatibles avec l’iPhone d’Apple et son App Store officiel?

J’écris une application iPhone et j’aimerais utiliser une bibliothèque tierce pour une partie de ses fonctionnalités. J’ai l’intention de le vendre via l’App Store et mon code ne sera pas open source. Quelles licences open source permettent de réaliser des œuvres dérivées et de les publier dans les conditions propres à Apple?

En bref / TL; DR:

La LGPL et les magasins d’applications présentent quelques incompatibilités, ce qui signifie que vous n’avez pas le droit de dissortingbuer du code LGPL sur des AppStores ou des périphériques verrouillés compatibles DRM.

Il est préférable de rechercher d’autres implémentations de la bibliothèque sous d’autres licences plus laxistes, telles que la licence Apache 2, la licence publique Microsoft ou la licence MIT X11.

Plus long:

La LGPL déclare:

Il se peut que cette exigence soit en contradiction avec les ressortingctions de licence d’autres bibliothèques propriétaires qui n’accompagnent normalement pas le système d’exploitation. Une telle contradiction signifie que vous ne pouvez pas utiliser les deux et la bibliothèque ensemble dans un exécutable que vous dissortingbuez.

Les droits de lier statiquement le code LGPL au code propriétaire proviennent de la section 6 de la LGPL. Outre les droits accordés, cette section traite des exigences de votre part envers les destinataires en aval de votre code.

Vous devriez lire cette section en détail.

Conflits entre Pay-for-Development et LGPL

Les magasins d’applications qui obligent les utilisateurs à payer pour entrer dans le programme et obtenir des certificates de clé, des profils d’approvisionnement et des outils à déployer sur le périphérique sont en contradiction directe avec la LGPL.

La LGPL exige que l’utilisateur final puisse récupérer vos fichiers objects plus la bibliothèque open source (plus les outils, voir la section ci-dessous) et produire du code qui fonctionne. Il n’y a pas de place pour que le destinataire en aval doive conclure un accord séparé avec Apple, Microsoft, Amazon ou Google pour pouvoir déployer une version de travail du code sur son propre matériel.

En particulier, cette section est pertinente:

Vous n’êtes pas autorisé à imposer d’autres ressortingctions à l’exercice des droits accordés aux destinataires. Vous n’êtes pas responsable de faire respecter la conformité par des tiers avec cette licence.

Vous n’avez pas besoin de donner aux utilisateurs le droit de republier votre application sur un AppStore, mais vous devez donner aux utilisateurs le droit de déployer votre application avec la version modifiée du code LGPL sur leurs propres appareils. les paiements supplémentaires à déployer sont en conflit avec la LGPL.

Dissortingbution de fichiers d’object

Vous devez vous assurer que les termes de l’exécutable résultant permettent au destinataire d’apporter des modifications au code LGPL et d’en générer de nouveaux bits de travail. En pratique, cela signifie que vous devez dissortingbuer les fichiers objects de votre programme pour qu’un tiers puisse relier votre application à une version modifiée de la bibliothèque, possible de corriger les bogues, de l’améliorer d’une manière ou de fournir ses propres fonctionnalités.

Vous pouvez vous en sortir en publiant les fichiers objects sur votre site Web et en fournissant un projet afin que des tiers puissent relier l’application. Ne pas le faire révoque votre licence à la LGPL.

Droits pour l’ingénierie inverse

Ceci est une autre exigence de la section 6.

Cela pourrait être en conflit direct avec les termes de divers magasins d’applications, mais vous devez vérifier les termes exacts avec le magasin d’applications que vous utilisez (Apple, Amazon, Android ou d’autres tiers).

Avis et publicités

Dans le cadre des exigences pour le code LGPL, l’application livrée à l’utilisateur en aval doit être livrée avec la licence LGPL et pointer vers cette licence sur tous les endroits de l’application qui affichent des avis de droits d’auteur. Certains magasins d’applications affichent cette information sur le site du magasin d’applications, tandis que d’autres peuvent avoir les informations de copyright sur l’exécutable lui-même.

Dissortingbution du code LGPL modifié

C’est très facile à respecter, il vous suffit de dissortingbuer la copie du code LGPL sur votre site Web (il y a des détails supplémentaires à ce sujet sur la licence concernant la durée de conservation du code).

Exigences que vous ne pouvez pas remplir

L’un des principaux problèmes liés à la LGPL et à l’utilisation de bibliothèques statiques dans les applications dissortingbuées via des magasins d’applications est la nécessité de dissortingbuer les outils et les scripts nécessaires à un utilisateur final pour reconstruire le logiciel.

Pour certains scénarios de système intégré, le fournisseur du système intégré doit divulguer ses outils de développement et ses API à tous les utilisateurs finaux, ce qui peut s’avérer impossible. Il n’est pas clair si quelque chose comme l’iPhone ou les SDK Windows peuvent être librement redissortingbués pour remplir les obligations dans ce cas, vous pouvez discuter avec vos avocats et savoir à quel point vous êtes à l’aise avec les exigences.

Ce que tu peux faire

Si vous devez absolument utiliser du code LGPL dans un magasin d’applications ou un système intégré, vous pouvez toujours contacter les auteurs originaux du code et leur demander de vous accorder une licence sur le code sous différentes conditions.

Vous pouvez également rechercher des implémentations alternatives de la bibliothèque sous d’autres licences plus laxistes telles que la licence Apache 2, la licence publique Microsoft ou la licence MIT X11.

En ce qui concerne la LGPL, je pense que St3fan est incorrect, mais Louis Gerbarg a raison: il est possible d’utiliser des bibliothèques LGPL dans des applications iPhone à code fermé, mais avec des ressortingctions.

Si vous consultez http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License , vous pouvez lire “Une bibliothèque liée de manière statique est également autorisée si le code source ou des fichiers d’objects pouvant être liés sont fournis.”

Comme Louis Gerbarg l’a mentionné, si vous utilisez une bibliothèque LGPL, vous êtes autorisé à conserver votre application à source fermée tant que vous mettez gratuitement à votre disposition les fichiers object (par exemple, * .o) nécessaires à vos clients pour votre application. lier.

Je vais en profondeur sur le sujet de la compatibilité iPhone et LGPL ici .


Les exigences détaillées de votre application imposées par la licence LGPL de la bibliothèque:

d) Effectuez l’une des opérations suivantes:

0) Transmettre la Source Correspondante Minimale sous les termes de cette Licence et du Code d’Application Correspondant sous une forme convenant à l’utilisateur et selon des conditions lui permettant de recombiner ou de relier l’Application avec une version modifiée de la Version Liée pour produire une travail combiné modifié, de la manière spécifiée dans la section 6 de la licence GNU GPL pour transmettre la source correspondante.

Je ne pense pas que LGPL fonctionnera pour les applications iPhone.

Le problème est que le runtime de l’iPhone ne vous permet pas de regrouper des bibliothèques partagées (ou des frameworks) avec votre application. Seules les applications binarys uniques sont autorisées. La LGPL repose sur l’hypothèse que vous regroupez une bibliothèque partagée avec une application. La liaison directe est toujours interdite.

L’App Store d’Apple est incompatible avec l’idée de copyleft de la FSF, présente dans toutes les versions de la GPL et de la LGPL, ainsi que dans la GPL d’Affero. L’Apple App Store ne permet pas aux utilisateurs de prendre le logiciel libre, de le modifier, puis de l’exécuter librement sur leurs propres appareils. Vous devez utiliser DRM, payer 100 $ par an, accepter leurs conditions supplémentaires, etc. Il y a une assez bonne description de ceci: http://michelf.com/weblog/2011/gpl-ios-app- le magasin/

Il est tout à fait légal de dissortingbuer le logiciel GPL / LGPL pour iOS en dehors de l’App Store. Le problème réside dans l’App Store d’Apple. Je recommande donc de faire pression sur Apple pour modifier ses ressortingctions. Mac OS X et iOS s’appuient même fondamentalement sur les logiciels GPL / LGPL (par exemple, gcc et bien d’autres), alors Apple profite de la liberté tout en privant ses utilisateurs de la même liberté.

En ce qui concerne les licences avec lesquelles l’App Store est compatible, vous devrez utiliser les licences très permissives telles que BSD, MIT, Apache ou domaine public.

Ce n’est pas un conseil juridique, je ne suis pas avocat, mais il semble que vous ayez besoin d’une bibliothèque avec une licence BSD ou Apache. Ce serait le cas si vous développiez un programme de bureau propriétaire utilisant une bibliothèque open source. Je ne sais pas si Apple a d’autres ressortingctions pour les applications iPhone.

(Je ne suis pas avocat)

La liaison de fichiers d’objects statiques peut résoudre la question de savoir comment permettre à une application qui utilise un code sous licence LGPL d’être disponible sans dissortingbuer les parties non-LGPL de son code source.

Mais il semble que LGPL, en tant que variante de la GPL, pose un problème insurmontable plus important pour le développement d’applications iPhone, car les outils de développement nécessaires à la création et à la dissortingbution de toute application iPhone sont uniquement compatibles avec GPL. c’est à dire. Il y a des frais de 100 $ par année et il existe de nombreuses conditions d’utilisation de ces outils qui ne font pas partie de la licence GPL. Les termes de la licence pour les outils de développement iPhone d’Apple semblent être incompatibles avec l’esprit et peut-être aussi la lettre de la GPL.

Si vous ne publiez pas votre code source, vous ne pouvez utiliser aucune licence copyleft ssortingcte. Vous ne pouvez utiliser aucune licence basée sur GPLv3, car la dissortingbution de l’iPhone est en conflit avec la clause no-Tivoization.

Si vous utilisez LGPLv2, vous devrez fournir votre programme au format pouvant être lié, ce qui peut être acceptable ou non (du moins, ce n’est pas du code source), et il est probable que vous ne vouliez pas en parler. , à moins que la bibliothèque offre beaucoup d’avantages.

S’il y a un détenteur de copyright sur la bibliothèque, vous pouvez toujours voir si vous pouvez obtenir une exception de licence.

Vous ne rencontrerez aucun problème avec les licences BSD / MIT / Boost / quelles que soient les licences autorisées. Il existe beaucoup de licences Open Source / Free Software, et pour le rest, vous devrez les lire et les voir.

Lorsque j’essaie de transférer Fuego sur iPhone , j’ai posé une question similaire sur la liste de diffusion fuego . Jusqu’à présent, je pense que “LGPL n’est pas compatible avec AppStore”. Une question précédente reçoit également une réponse comme: non.

Un bon exemple est Wunderradio. Ils utilisent ffmpeg et d’autres frameworks sous licence LGPLv2 et fournissent les fichiers .o sur leur site web.

Etrangement, ils fournissent également le code source complet de leur application.

http://wunderradio.com/code.html

Les gens qui maintiennent que les conditions d’utilisation de l’App Store sont problématiques, en particulier les frais annuels de 100 $ du programme Apple Dev, sont faux. Ce 100 $ n’est même pas proche d’un showstopper. Il est typique pour les développeurs de passer tant de temps à se soucier de ce genre de choses; 0) Les avocats ont manipulé les dispositions contractuelles depuis des milliers d’années et celles-ci ne valent guère la peine d’être perdues.

Prérequirejs: Fournissez les fichiers d’object et un fichier de projet de base à partir d’un emplacement Web accessible via un lien dans l’application.

Option 1, pour les cow-boys: le jailbreaking est officiellement légal (et gratuit). Cela seul annule toute inquiétude quant à la compatibilité entre LGPL et les conditions de l’App Store. Où le LPGL spécifie-t-il un canal de dissortingbution particulier? Nulle part. Vous souhaitez mettre à niveau une bibliothèque liée de manière statique dans une application que vous avez téléchargée via l’App Store? Suck it up, alpha dev et jailbreak votre téléphone! Le fait que Apple soit un tyran dans la cour de récréation ne vous oblige pas à restr sur son manège. Les développeurs entreprenants peuvent ainsi recevoir des droits de vantaux précieux lors de la prochaine rencontre. De plus, le fait que vous ayez jailbreaké votre téléphone pour mettre à niveau une bibliothèque LPGL vous donne access à la salle de fût du sous-sol de Richard Stallman!

Option 2 pour le contourner légalement et de bonne foi: La section 1 de la LGPL v2.1 (et la section 4 de la GPL v3) permet aux développeurs de facturer des frais pour l’acte physique de copier la bibliothèque. Cela fournit un mécanisme permettant au développeur de réaffecter ces frais aux frais d’abonnement Apple Dev $ 99.

Qu’en est-il de la limite de 100 appareils? Les utilisateurs finaux qui souhaitent mettre à niveau leur fichier binary mettent à niveau une application commerciale, de sorte que les termes de la licence du développeur de l’application entrent en ligne de compte. Il est sortingvial d’append une limite de 100 périphériques à un contrat de licence personnalisé. Combien de personnes possèdent plus de 100 appareils iOS? Même Jobs ne possédait pas autant! C’est à peine une limite déraisonnable. Étant donné qu’il n’est pas obligatoire qu’un utilisateur final soit autorisé à publier sa propre version modifiée de l’application commerciale d’origine dans la nature, il n’y aura aucune raison de se plaindre s’il ne parvient pas à se charger sur le périphérique du 101ème ami du modificateur.

La LGPL n’exige pas que l’utilisateur final dispose d’un choix confortable, sans risque ou même évident. Ils doivent juste avoir le choix, et il y en a deux parfaitement bons.