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).