lenguaje - ¿Qué licencias de código abierto son compatibles con el iPhone de Apple y su App Store oficial?
swift lenguaje (10)
Estoy escribiendo una aplicación para iPhone, y me gustaría utilizar una biblioteca de terceros para parte de su funcionalidad. Tengo la intención de venderlo a través de la App Store y mi código no será de código abierto. ¿Qué licencias de código abierto permiten realizar trabajos derivados y publicarlos en las propias condiciones de Apple?
Esto no es asesoramiento legal, no soy abogado, pero parece que necesita una biblioteca con licencia BSD o Apache. Ese sería el caso si estuviera desarrollando un programa de escritorio propietario que utilizara una biblioteca de código abierto. No sé si Apple tiene más restricciones para las aplicaciones de iPhone.
No creo que LGPL funcione para aplicaciones de iPhone.
El problema es que el tiempo de ejecución de iPhone no le permite agrupar bibliotecas compartidas (o marcos) con su aplicación. Solo se permiten aplicaciones binarias individuales. La LGPL se basa en la suposición de que usted agrupa una biblioteca compartida con una aplicación. Los enlaces directos aún están prohibidos.
Con respecto a la LGPL, creo que St3fan es incorrecto, pero Louis Gerbarg está en lo cierto: es posible usar bibliotecas LGPL en aplicaciones de código cerrado para iPhone, pero con restricciones.
Si echas un vistazo a http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License , puedes leer "Alternativamente, se permite una biblioteca enlazada estáticamente si se proporciona un código fuente o archivos de objetos enlazables".
Así que como mencionó Louis Gerbarg, si usa una biblioteca LGPL, puede mantener su aplicación como fuente cerrada siempre y cuando ponga a disposición libremente el objeto (por ejemplo, * .o) archivos que son necesarios para que sus clientes lleven su aplicación y vincularlo.
Aquí profundizo en el tema de la compatibilidad con iPhone y LGPL .
Requisitos detallados en su aplicación impuestos por la licencia LGPL de la biblioteca:
d) Haz uno de los siguientes:
0) Transmitir la Fuente correspondiente mínima según los términos de esta Licencia, y el Código de aplicación correspondiente en una forma adecuada y bajo términos que permitan al usuario recombinar o volver a vincular la Aplicación con una versión modificada de la Versión enlazada para producir un trabajo combinado modificado, de la manera especificada en la sección 6 de la GNU GPL para transmitir la fuente correspondiente.
(Yo no soy un abogado.)
La vinculación de archivos de objetos estáticos puede abordar la cuestión de cómo permitir que una aplicación que utiliza código con licencia LGPL esté disponible sin distribuir las partes de su código fuente no LGPL.
Pero parece que LGPL, como una variante de GPL, impone un problema insuperable más grande para el desarrollo de aplicaciones de iPhone en que las herramientas de desarrollo necesarias para crear y distribuir cualquier aplicación de iPhone solo están disponibles bajo términos de Apple que son incompatibles con GPL. es decir. Hay una tarifa de $ 100 / año, y existen numerosos términos y condiciones sobre el uso de esas herramientas que no forman parte de la licencia GPL. Los términos de la licencia para las herramientas de desarrollo de iPhone de Apple parecen ser incompatibles con el espíritu de la GPL y quizás también con su letra.
Si no está liberando su código fuente, no puede usar ninguna licencia copyleft estricta. No puede usar ninguna licencia basada en GPLv3 en ningún caso, ya que la distribución de iPhone entra en conflicto con la cláusula no-Tivoization.
Si está usando LGPLv2, tendrá que proporcionar su programa en formato enlazable, que puede o no ser aceptable (al menos no es el código fuente), y es probable que sea algo con lo que no quiera tratar. , a menos que la biblioteca ofrezca muchos beneficios.
Si hay un titular de los derechos de autor en la biblioteca, siempre puede ver si puede obtener una excepción de licencia.
No tendrá ningún problema con las típicas licencias permisivas BSD / MIT / Boost / whatever. Hay muchas licencias de Código Abierto / Software Libre y, para el resto, tendrá que leerlas y verlas.
Un buen ejemplo es Wunderradio. Usan ffmpeg y otros frameworks con licencia LGPLv2, y proporcionan los archivos .o en su sitio web.
Extrañamente, también proporcionan un código fuente completo para su aplicación.
Apple App Store es incompatible con la idea de copyleft de la FSF, que está presente en todas las versiones de GPL y LGPL, y también en Affero GPL. Apple App Store no permite que los usuarios tomen software libre, lo modifiquen y lo ejecuten libremente en sus propios dispositivos. Requieren que use DRM, pague $ 100 por año, para aceptar sus términos adicionales, etc. Hay una muy buena reseña de esto aquí: http://michelf.com/weblog/2011/gpl-ios-app- almacenar/
Es completamente legal distribuir el software GPL / LGPL para iOS fuera de la tienda de aplicaciones, el problema radica en la tienda de aplicaciones de Apple. Entonces recomiendo cabildear a Apple para cambiar sus restricciones. Mac OS X e iOS incluso se basan fundamentalmente en el software GPL / LGPL (por ejemplo, gcc y muchos más), por lo que Apple disfruta de la libertad, pero niega a sus usuarios la misma libertad.
En cuanto a las licencias con las que es compatible la Tienda de aplicaciones, tendrá que ir con licencias muy permisivas como BSD, MIT, Apache o dominio público.
Las personas que mantienen que los términos de servicio de la App Store son problemáticos, en particular la tarifa anual del programa Apple Dev de $ 100, son incorrectos. Eso $ 100 ni siquiera está cerca de un éxito. Es típico de los desarrolladores que pasen tanto tiempo preocupándose por este tipo de cosas; 0) Los abogados han estado lidiando con las disposiciones contractuales durante miles de años y no vale la pena perder el sueño.
Requisito previo: Proporcione los archivos de objeto y un archivo de proyecto básico desde una ubicación web accesible a través de un enlace en la aplicación.
Opción 1, para vaqueros: Jailbreak es oficialmente legal (y gratis). Solo eso anula cualquier preocupación sobre la compatibilidad entre LGPL y los términos de la App Store. ¿Dónde especifica el LPGL un canal de distribución particular? En ninguna parte. ¿Desea actualizar una biblioteca enlazada estáticamente en una aplicación que descargó a través de la tienda de aplicaciones? ¡Suck up, alpha dev y jailbreak a tu teléfono! El hecho de que Apple sea un matón en el patio de recreo no lo obliga a permanecer en su carrusel. Los desarrolladores emprendedores pueden recibir valiosos derechos de fanfarronear en la próxima reunión. Además, el hecho de que libere su teléfono para actualizar una biblioteca LPGL le da acceso a la sala de barriles en el sótano de Richard Stallman.
Opción 2 para evitar legalmente y de buena fe: la Sección 1 de LGPL v2.1 (y la sección 4 de GPL v3) permite al desarrollador cobrar una tarifa por el acto físico de copiar la biblioteca. Esto proporciona un mecanismo para que el desarrollador reasigne esa tarifa hacia la tarifa de suscripción de $ 99 de Apple Dev.
¿Qué pasa con el límite de 100 dispositivos? Los usuarios finales que deseen actualizar su binario están actualizando una aplicación comercial, por lo que entran en juego los términos de licencia propios del desarrollador de la aplicación. Es trivial agregar un límite de 100 dispositivos a un acuerdo de licencia personalizado. ¿Cuántas personas poseen más de 100 dispositivos iOS? ¡Incluso Jobs no tenía tantos! No es un límite irrazonable. Dado que no hay ningún requisito para que un usuario final pueda lanzar su propia versión modificada de la aplicación comercial original en la naturaleza, no habrá base para las quejas cuando no se carga en el dispositivo del 101º amigo del modificador.
No existe un requisito en la LGPL de que el usuario final tenga que tener una opción cómoda, libre de riesgos o incluso obvia. Simplemente tienen que elegir, y hay 2 perfectamente buenos.
Cuando trato de portar Fuego al iPhone , hice una pregunta similar en la lista de correo de fuego . Hasta ahora, tengo entendido que "LGPL no es compatible con AppStore". Una pregunta anterior también recibe una respuesta como: no.
En Short / TL; DR:
Las tiendas LGPL y de aplicaciones tienen algunas incompatibilidades, lo que significa que no tiene los derechos para distribuir el código LGPL en AppStores habilitados para DRM o dispositivos bloqueados.
Lo mejor es que busque implementaciones alternativas de la biblioteca bajo otras licencias laxer como la Licencia Apache 2, la Licencia pública de Microsoft o la Licencia MIT X11.
Más:
La LGPL dice:
Puede suceder que este requisito contradiga las restricciones de licencia de otras bibliotecas propietarias que normalmente no acompañan al sistema operativo. Tal contradicción significa que no puede usar tanto a ellos como a la Biblioteca en un archivo ejecutable que distribuya.
Los derechos de vinculación estática del código LGPL con el código propietario provienen de la sección 6 de la LGPL. Además de los derechos otorgados, esa sección trata los requisitos de su parte para los destinatarios de su código en sentido descendente.
Deberías leer esta sección en detalle.
Conflictos entre Pay-for-Development y LGPL
Las tiendas de aplicaciones que requieren que los usuarios paguen para ingresar al programa y obtener certificados clave, perfiles de aprovisionamiento y herramientas para implementar en el dispositivo están en contradicción directa con la LGPL.
La LGPL requiere que el usuario final pueda buscar los archivos de objeto más la biblioteca de código abierto (más las herramientas, consulte la sección a continuación) y producir algún código que funcione. No hay lugar para que el destinatario intermedio tenga que firmar un acuerdo por separado con Apple, Microsoft, Amazon o Google para poder implementar una versión funcional del código en su propio hardware.
En particular, esta sección es relevante:
No puede imponer ninguna restricción adicional al ejercicio de los derechos otorgados por los destinatarios en este documento. Usted no es responsable de imponer el cumplimiento por parte de terceros de esta Licencia.
No es necesario otorgar a los usuarios el derecho a volver a publicar su aplicación en una AppStore, pero debe otorgar a los usuarios el derecho de implementar su aplicación con la versión modificada del código LGPL en sus propios dispositivos, de modo que cualquier programa o dispositivo desarrollador que lo requiera los pagos adicionales para implementar entran en conflicto con la LGPL.
Distribución de archivos de objetos
Debe asegurarse de que los términos del ejecutable resultante le permitan al destinatario realizar cambios en el código LGPL y generar un código de bits de trabajo nuevo. Esto en la práctica significa que necesita distribuir los archivos objeto de su programa para que un tercero pueda volver a vincular su aplicación con una versión modificada de la biblioteca, corregir posibles errores, mejorarlo de alguna manera o proporcionar sus propias características.
Puede salirse con la suya publicando los archivos objeto en su sitio web y proporcionando un proyecto para que terceros puedan volver a vincular la aplicación. De lo contrario, se revoca su licencia a la LGPL.
Derechos para ingeniería inversa
Este es otro requisito de la Sección 6.
Esto podría estar en conflicto directo con los términos de varias tiendas de aplicaciones, pero debe verificar los términos exactos con la tienda de aplicaciones que está usando (Apple, Amazon, Android u otros terceros).
Aviso y anuncios
Como parte de los requisitos para el código LGPL, la aplicación que se envía al usuario intermedio debe enviarse con la licencia LGPL y señalar esta licencia en cualquier lugar de la aplicación que muestre avisos de derechos de autor. Algunas tiendas de aplicaciones publican esto en el sitio de la tienda de aplicaciones, mientras que otras pueden tener la información de copyright en el ejecutable.
Distribución del código LGPL modificado
Esto es muy fácil de cumplir, solo necesita distribuir la copia del código LGPL en su sitio web (hay algunos detalles adicionales sobre esto en la licencia sobre el tiempo que necesita para mantener el código disponible).
Requisitos que no puedes cumplir
Uno de los principales problemas con LGPL y el uso de bibliotecas estáticas en aplicaciones que se distribuyen a través de tiendas de aplicaciones es el requisito de que distribuya las herramientas y los scripts necesarios para que un usuario final reconstruya el software.
Para algunos escenarios de sistemas integrados, requeriría que el proveedor del sistema integrado divulgara sus herramientas de desarrollador y API a cualquier usuario final, y esto podría no ser posible. No está claro si algo como el iPhone o los SDK de Windows se pueden redistribuir libremente para cumplir con las obligaciones en este caso, es posible que desee conversar con sus abogados y averiguar qué tan cómodo se siente con la exposición de los requisitos.
Lo que puedes hacer
Si necesita usar algún código LGPL en una tienda de aplicaciones o en un sistema integrado, siempre puede comunicarse con los autores originales del código y pedirles que le otorguen una licencia para el código bajo diferentes términos.
Alternativamente, puede buscar implementaciones alternativas de la biblioteca bajo otras licencias laxer como la Licencia Apache 2, la Licencia Pública Microsoft o la Licencia MIT X11.