The (Mac) App Store

ckage management is an unsolved problem in consumer computing. It's not the only one: there are a ton of unsolved problems in consumer computing. Every call the "family tech support guy" gets is because of an unsolved — or horribly solved — consumer problem. Package management is just an interesting one because Apple is finally taking a crack at it with the Mac App Store.

The Landscape

Package Management is a system that people use to find, buy and install software, get updates to that software, and otherwise manage their programs.

Shamefully, the most popular consumer computer systems have had horrible package management. Users have been putting up with bad solutions for years, and many don't even know there are alternatives. Windows provides some standard ways for developers to distribute software, but it's still largely the same system that was used when you mail-ordered software on floppies and painstakingly installed it yourself. It's just moved to the internet.

Macs have a cleaner way to install software behind the scenes, but it's still something a user has to do and manage on their own. And free unixes have had common repositories accessible over the internet. These hit most of the real needs of a package management system, but they miss on the discovery front, and rarely create a market with payment options.

Package Management Anatomy

Remember, the goal of a consumer computing system is to enable regular people to do things. If a regular user has to call the "family tech support guy" to use something, then it's a failure. There are several things a package management system should do:

  • Be Discoverable. Regular users have to be able to find what they want. The system fails if users have to decide nerdy things, like 32-bit or 64-bit builds, or green/native thread models.
  • Be Trusted. There can't be malware, tons of ripoffs, or anything else that makes using the package manager risky for an average user. If there are gotchas, the user will phone their family support guy out of fear.
  • Handle Dependencies. Software is built in layers, with user-facing apps relying on several sets of services to work properly. When a user installs some application, they should get every dependency that is required without even knowing it. Dependencies are a developer-level concept, not a user concept.
  • Handle Updates. Developers know when there are updates. The most control a user should have is to decline an update, or roll back to previous if an update doesn't perform properly. An update that can't be undone is a potentially serious impact, which is going to make the user fear performing them.
  • Handle Online Distribution. There are a number of attributes of good online distribution platforms, like Amazon. Allow the user to install the software on all of their machines. Allow the user to re-install in case their machine was wiped out or corrupted. Make the download process not depend on any particular developer's hosting environment.
  • Handle Payment. As a developer I loved the Debian package manager. But there was simply no place in the architecture for payment. The iOS App Store has shown the sort of creativity and innovation you can get if there is a payment system. Free software is great, but you will not want to exclude paid software.

The (Mac) App Store

The Mac App Store isn't 100% there yet, but it's seriously competitive. Every package management system is somewhat restrictive — automation requires some amount of restrictive rules.

The Mac App Store is relatively discoverable. There are some editorial sections, a decent search function, and a workable browse function. Each app page has a minimum of material to get an idea about the app — description, changelog, screenshots, reviews. This is more than I ever got from apt-get show.

The Mac App Store goes a long way towards trust. The iOS store may frustrate some developers with its restrictiveness, but it's paid off for users. Never before have users felt so free to buy or download apps without any research past whether or not the functionality of the app is good. They trust that there is no malware. They trust that the payment system isn't a scam. They trust that they can recover (re-download) the software if something goes wrong.

Consumer Mac Apps have handled dependencies relatively gracefully for some time. On other systems, the approach has been to install shared components once and have some system for apps to find them. Aside from Apple-delivered frameworks, most Mac Apps just simply ship copies of their dependencies. This takes far more disk space, and can consume more memory. But Moore's Law makes this a great trade-off, in favour of easier tasks for users. That's exactly what more powerful computers should be doing: making the user's job easier because the computer does more automatically. So while the App Store itself doesn't handle dependencies, developers can use their existing system to make sure apps ship with everything they need.

Updates come through the store, and it's all well-handled by centralized, reliable online distribution. This isn't perfect: there's no user-visible way to roll back if an update breaks something. The user still has to see that there are updates and perform tasks to get them. Google Chrome does this better: the update is downloaded in the background and then just applied in the normal course of events. If it added a "rollback to previous" option it would be almost perfect. The Mac App Store does have the virtue of putting all of the 3rd party software updates in a single spot, though. Wouldn't it be nice to integrate that with the OS updates too? Why does the user need to know more than one way to get updates?

Lastly, payment is very well handled. As my credit card bill shows, it's too well handled. You know you're spending money, but payment is so easy it's not a hurdle. It takes more steps to pay for a coffee at Starbucks than it does to buy apps.

One Step At A Time

The Mac App Store brings some advancement to consumer package management. It's better than any other consumer platform right now. There is still room for improvement, but I'm happy that a popular platform is finally improving beyond the user hostile, fully manual 1990's style.

app store, mac
Posted by Steve on 2011-04-02 15:12:00