Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Which open source licenses are compatible with the Apple's iPhone and its official App Store ? [closed]

I'm writing an iPhone app, and I would like to use a 3rd party library for part of its functionality. I intend on selling it through the App Store and my code will not be open sourced. Which open source licenses allow to make derivate works and publish them under apple's own conditions ?

like image 217
Corey Avatar asked Jan 20 '09 01:01

Corey


People also ask

Does Apple allow open source apps?

Many Apple products and services are built on open source software. Explore some of the projects we lead and contribute to below. In addition to open source projects, Apple also publishes the open source code used in the company's own software such as macOS, iOS, Developer Tools, and X Server products.

What is an open source license on a cell phone?

Open-source software is software that makes the source code freely available, for anyone to see and use. Companies, individuals, universities and a lot of other entities build entire projects and use an open-source license, then they give the code away to anyone who wants to use it.

Is iOS proprietary or open source?

Google's Android is considered an Open Source mobile OS, while Apple's iOS is considered closed source and each has its own benefits and issues.

What is open source license compatibility?

An open source license is what makes a component open source. It is a contract between the creator and the user of a software component, which allows the software to be added to commercial applications as long as the user abides by certain terms and conditions.


1 Answers

In Short/TL;DR:

The LGPL and application stores have a few incompatibilities which means that you do not have the rights to distribute LGPL code on DRM-enabled AppStores or locked devices.

It is best if you look for alternative implementations of the library under other laxer licenses like the Apache 2 License, the Microsoft Public License or the MIT X11 License.

Longer:

The LGPL states:

It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.

The rights for statically linking LGPL code with proprietary code comes from section 6 of the LGPL. In addition to the rights granted that section deals with the requirements on your part towards downstream recipients of your code.

You should read this section in detail.

Conflicts between Pay-for-Development and the LGPL

Application Stores that require users to pay to enter the program and obtain key certificates, provisioning profiles and tools to deploy to the device are in direct contradiction with the LGPL.

The LGPL requires that the end user is able to fetch your object files plus the open source library (plus tools, see the section below) and produce some code that works. There is no room for having the downstream recipient have to enter a separate agreement with Apple, Microsoft, Amazon or Google to be able to deploy a working version of the code on his own hardware.

In particular this section is relevant:

You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.

You do not need to give users the right to republish your application on an AppStore, but you need to give users the right to deploy your app with the modified version of the LGPL code on their own devices, so any developer program or device that requires extra payments to deploy is in conflict with the LGPL.

Distribution of Object Files

You must ensure that the terms of the resulting executable allow the recipient to make changes to the LGPL code and produce a new working bits of code out of it. This in practice means that you need to distribute the object files of your program so that a third party can relink your application with a modified version of the library, possible to fix bugs, improve it in some way, or provide their own features.

You could get away with this by posting the object files in your web site and providing a project so third parties can relink the application. Not doing so revokes your license to the LGPL.

Rights for Reverse Engineering

This is another requirement from Section 6.

This might be in direct conflict with the terms of various application stores, but you need to check the exact terms with the application store you are using (Apple, Amazon, Android or other third parties).

Notice and Advertisements

As part of the requirements for LGPL code, the application that is shipped to the downstream user must ship with the LGPL license and point to this license on any places of the application that display any copyright notices. Some application stores post this on the application store site, while others might have the copyright information on the executable itself.

Distribution of the Modified LGPL code

This is very easy to abide by, you just need to distribute the copy of the LGPL code on your web site (there are some extra details about this on the license about the length of time you need to keep the code available).

Requirements that you can not fulfill

One of the major problems with the LGPL and using static libraries in applications that are distributed through application stores is the requirement that you distribute the tools and scripts that are necessary for an end-user to rebuild the software.

For some embedded system scenarios, you would require the embedded system vendor to disclose his developer tools and APIs to any end users and this might not be possible. It is not clear if something like the iPhone or Windows SDKs can be freely redistributed to fulfill the obligations in this case, you might want to discuss with your lawyers and find out how comfortable you are with the exposure of the requirements.

What you can do

If you absolutely need to use some LGPL code in an appstore or an embedded system, you can always reach out to the original authors of the code and ask them to grant you a license to the code under different terms.

Alternatively, you can look for alternative implementations of the library under other laxer licenses like the Apache 2 License, the Microsoft Public License or the MIT X11 License.

like image 105
miguel.de.icaza Avatar answered Sep 25 '22 20:09

miguel.de.icaza