Package Management is Great, but Only when Done Right
The iPhone App Store is, at heart, a package manager–not unlike the package managers that have been used for years in the Linux world. It provides a catalog of software that users can rummage through, finding applications that look shiny and easily installing them through an automated process that requires no user input between when the user hits the install button and when the icon appears on the applications menu. It’s a great system–it makes software browsing fun and easy, and it allows the distributor and developers to even charge money for their work, injecting revenue and ensuring a healthy ecosystem.
Except in this case it clearly isn’t healthy. The App Store has attracted quite a bit of negative press in recent months for its seemingly arbitrary, bizarre, anticompetitive and possibly even politically motivated submission rejections.
These rejections represent a fatal flaw of the system that dooms it to always being a subpar and unethically managed package manager.
Let’s step back.
For years in the Linux world, we’ve relied on package management to handle software installation and removal. We install our OS as a distribution from some sort of organization, which could be an actual company that makes money or just a hacker releasing software in their spare time. The important thing about installing software in Linux is that without some form of automation, it’s a pain–you would have to compile your software yourself after looking up all of its dependencies, a time-consuming process that really doesn’t make sampling software easy or fun.
So, to ease that process, the distributor of the OS runs servers that your machine can download software from, automatically handling dependencies and keeping track of what’s installed where on your system and what software uses what assets. Package management has only improved over the years, as software libraries expanded and user demand grew. Today, it couldn’t be easier to install a program in Ubuntu; all you have to do is fire up the Ubuntu Software Center, browse, click install, and enter your password.
But package management does have its drawbacks. There’s a bit of a security risk–while it’s pretty easy to use cryptography to reasonably guarantee that no one’s breaking into the server and sending you malicious software, you can’t know for certain that the distributor isn’t doing nasty things (and while I’m willing to bet there aren’t many users who audit all the source code of everything they install on their machines, releasing everything as source code still gives you the ability to do so, which there’s a lot to be said for). But by far the biggest one is that you’re completely dependent on the distributor for software availability. If something you want isn’t in there, or if it’s not up to date enough, there’s not much you can do besides try to manually install it, which tends to muck things up.
The App Store’s fatal flaw is refusing to allow independent distribution channels. Allowing them instantaneously removes the biggest issue package managers have by freeing developers to distribute their products their own way, instead of having to go through Apple. If such a thing were allowed, Apple could further create incentives for developers to produce software for them by not taking a cut of the profits (or maybe even taking it anyway through licensing agreements), thus enriching the platform. It’s how Microsoft became successful–by allowing developers tremendous freedom with their development frameworks and leaving the market open to grow according to demand. It would even force Apple to clean up their own act in order to compete with them (though that can hardly be seen as a good reason from their perspective).
But the iPhone is a very heavily locked down platform, which only ever gained the App Store to quell demand that was being satisfied by jailbreaking, before it became one of Apple’s main moneymakers when it proved enormously popular and lucrative. It’s fundamentally changed an industry, and yet it remains a painful symbol of exactly how unfair it is to have a single entity acting as the entire channel through which users can install software. Some users still jailbreak, but others continue to use only what Apple makes available, and that’s not good for anyone–not for Apple’s users, not for developers hoping to make money off of them, and not for Apple’s reputation.
If I were an iPhone user or programmer, I wouldn’t be happy. I’d be demanding that Apple open up the platform immediately to 3rd party distributors, not just developers. That, to me, is a prerequisite for software development. I don’t want to be at the mercy of a company that gets to decide what software I use on a machine that I purchased–especially if I hope to make money off of selling software for it. The Linux world figured it out years ago, and there’s no reason why Apple can’t. Even other mobile OS developers figured it out–Android and Palm both allow it.
Is it just too lucrative for Apple to give up? Maybe. It’s still more than enough to dissuade me from ever wanting to touch their development platform. I can do better. And until Apple cleans up their act, so can you.
from → Essays