The Problem with Using LGPL v2.1 Code in an iOS App

If you’re wondering whether you can use an open-source framework that’s licensed with the GNU LGPL v2.1 in your iOS app, I’d recommend against it. Here’s why.

Recently I was looking at including an open source project in an iOS app I’m working on. I found one option that was licensed with the GNU LGPL v2.1, so I did some research on what that would mean for me if I decide to include the library in my app. Here’s a particularly problematic part of the license (from Section 6.a):

[You must] accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable “work that uses the Library”, as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library.

Translation: you have to provide a way for people to download your app so they can link against another version of that third-party framework. And that has to happen outside of the App Store since there’s no way to do it through the App Store. You can certainly do that on your website like Sparrow did, but that means you have to package your app so it supports linking to another version of that framework, and you have to host that package on your site.

For me, it’s not worth the trouble considering there are other third-party libraries that’ll get the job done, and they have friendlier licenses. I’d bet it’s not worth the trouble for you, either.

Summary

When looking for frameworks to use in your iOS apps, make sure to check out the license. Save yourself some trouble and disregard any frameworks that are licensed with the GNU LGPL v2.1. Look for the Apache 2.0 License or MIT license instead.