It’s no secret that the Mac App Store has a lot of unresolved issues. The looming, pushed back revised June 1 deadline for all Mac App Store apps to be sandboxed is adding to that series of issues.
But I want to talk about one that’s about 18 months old, and that’s the Mac App Store and GPL software.
It’s widely believed that GPL code can’t exist on the Mac App Store. I’m not so sure that’s the case. Apple hasn’t said “no GPL code is allowed”, but have rejected some apps. Others have made it through. It appears that if you are using minor bits of GPL code, Apple tacitly gives the nod, but if you’re using all-GPL code, it’s more of a waiting game.
Considering that the Mac App Store now dominates Mac software sales, I want to change that. I will give Apple considerable credit for ensuring Gatekeeper in OS X Mountain Lion zigged where Windows 8 RT zagged. One is legit, the other is antitrust… I’ll leave it for you to figure out which is which.
Now, the GPL states that users cannot affix additional terms on the distribution of software. There are claims that the iOS App Store terms qualify in this regard. Mainly, those arguments center around the iOS App Store being the exclusive distribution point for iOS software. However, on the Mac App Store, this isn’t the case… distribution on the Mac App Store does not prohibit the free distribution of a Mac app on other, equally-accessible venues.
Note: I am not stating the FSF is correct in the above-referenced argument. As with most things the FSF say, I take them with a massive, Costco-sized grain of salt. I do share their sentiment though that iOS should support some form sideloading… the lack of sideloading is the #1 reason why I chose Android over iOS in my pocket.
The other argument in rejecting GPL’ed Mac App Store code, is that you cannot request GPL source code from Apple, as Apple hosts the software. Many strict-constructionist interpreters of the GPL insist that Apple must offer up GPL source code for any third-party app that uses GPL code, in their app. To-date, Apple has not provided any solution, and may have even pulled an app or two because of it.
I do not agree with this argument either, though, I believe there is a solution that bypasses it, and here it is: Include the GPL source code in the Resources folder of your app.
Nothing in the Mac App Store guidelines prohibits including source code in the Resources folder of an app. Similarly, you can tell Finder to open your Resources folder, and display what’s inside. So… in the About box of an app, you could very easily have a Source Code button, which pulls up the folder that contains the source code.
This changes the situation totally, because Apple is now offering the source code for the bits of code that are controlled under GPL. A user gets that code inside the app as it is downloaded.
Of course, the best resolution is to not have anyone submit take-downs and convince Apple that your app is compliant to begin with. However, if you are simply re-porting GPL code for use on the Mac App Store, I think it’s a good idea to offer up from the get-go.
Some extreme use cases do persist, for example with paid applications that contain GPL code. I could pontificate a few more workarounds, but I hope that this solution deters people (and Apple) from rejecting any additional apps that use GPL’ed code.
Hopefully it will also give some pause to those that are contemplating sending Apple a takedown request over the presence of GPL’ed code as well… a false takedown request to Apple could make an enforcer liable by whatever developer can claim interference/harassment with their commerce (similar to phony DMCA takedown requests).
Who is distributing/selling the app?
Am I selling the app through App Store?
Or is App Store selling the app?
If I put my app on some web server where you have to pay before downloading is the Server selling the App or me?
And if this server only has tehnical capabilities to install downloaded app on the device you downloaded it from you should not require from server to be able to install the app in your refrigirator.
So if App Store only allows you to install app on the device you accessed App Store from I don’t see how is that breach of GPL.
In order of questions:
* That depends on where you sell it.
* You are selling the app, and so is Apple. Apple is the “first-party” retailer since the customer interacts with Apple. You are the reseller, you allow Apple to sell the app on your behalf.
* Depends on if you own the access to that server. If you are renting access to that server, you have ownership rights to that server use, so you are the one selling the app.
* I do not understand this last point, sorry.
Nobody is saying that limiting App Store access to specific devices is a GPL violation, in and of itself. In this case, Apple is being accused of violating GPL by adding code to the compiled binary that prevents it from running on other devices, and then not sharing that code. The binary you send to Apple for posting on the App Store, is not identical to the one that they ship to end-users. Apple modifies the binary in-transit.
Now, I would argue that the modifications Apple makes are trivial, and not dynamically linked to the app itself (per GPLv3). The modifications Apple makes (code signing, primarily) are functionally the form of a security certificate, for the purpose of DRM. By providing the source code inside the app, and making it accessible to end-users, Apple resolves the DRM issue by redistributing the underlying code.
The solution that I proposed has largely been accepted by Apple, since this article ran. Few have challenged it, and in those cases (such as VLC), an alternative has been proposed.
Finally, it appears with Xcode 7, Apple will allow unsigned sideloading, so this story is finally coming to a happy end… three years later.