Finishing the iPhone

It’s more accurate to consider the iPhone a computer than a phone. Perhaps even more so for the iPad.

Clearly Apple sees this as well, as the evolution of iOS makes clear. From its no apps, iTunes-required beginnings to the 700,000+ apps, no-iTunes-required current state iOS has been steadily marching towards becoming a full-fledged computer. But it isn’t there yet. So what remains? Here’s my list.


If the iPad is to become the computer of the future you’re going to need to be able to install fonts on it. What I’d really love to see is fonts synced via iCloud between my Mac and all my devices. I have to believe that Apple eventually wants at least their own apps, like Pages, to have complete parity between the Mac and iOS versions. No more “Some formatting is not supported. Would you like to create a copy?” messages when opening a Pages document on iOS that was created on the Mac. To get there they will have to let you install and manage your fonts.

System Defaults

The utility of third-party browsers, email clients, and (now especially) mapping apps is dramatically reduced by iOS’s total ignorance of them. If you click a link that opens in a browser, that browser is going to be Safari, even if you have Chrome or Dolphin in your dock. Clicking an email address is going to launch Mail, even if you have Sparrow installed. As the offerings in the App Store grow in sophistication this situation is going to become more and more untenable, especially when competing platforms (*cough* Android *cough*) have no such limitations.

Inter-app Communication

Both Android and Windows 8 have implemented models for inter-app communication that are far superior to iOS. That is to say, they actually have a model. Apple has seemingly laid the groundwork for a solution to this with XPC, but we’ll have to wait and see. This is another one that will become more and more problematic (unless Apple solves it, of course) as the third-party app market matures and the needs of iOS users multiply and diversify.

File Management

This could be the one that Apple doesn’t budge on. I continue to believe that without a central document store, accessible by any and all apps on the device, the long-term potential of iOS is crippled. However Apple may continue to push and tweak their total sandbox approach until either it becomes clear it’s good enough, or competition forces them to shift strategies.

Multi-User Capabilities

Here’s another feature that Apple may never bring to iOS: the ability to have more than one user on a device, each with their own apps and accounts. It certainly seems a little premature given the current storage sizes (two users sharing 16 GB? No thanks.), but as the capacities move into the 100+ GB range this starts to make sense.

Market Maturity

One of the biggest reasons iOS devices aren’t full-fledged computers yet is because the market still says they aren’t. Yes, the lack of the features I’ve listed here (and many others, I’m sure) make it more difficult to bring traditional desktop applications to iOS. But it’s not impossible. For example, as far as I can tell, there isn’t a single app on the app store for managing SVN or Git repositories akin to Cornerstone or Versions on the Mac. Why? Probably because the assumption is that no one wants to manage those things on their phone. That’s what you’ve got a computer for! Well, I’m holding a tiny computer in my hands right now, typing out this blog post. Everyone might not see it that way now, but in five years? Ten years? The direction is clear; our arrival certain. The only question is how fast we get there.



Many software developers have a pet peeve about customers calling their software “useless” (see here and here). It’s absolutely true that it can be infuriating to have all of your work declared “useless” because you didn’t implement some fringe feature. The uncomfortable truth, however, is that sometimes it’s true. The absence of a single feature really can render your software useless.

An alternate rendering of “useless” is “without use”. Or, in the semantics of software, “without a use case”. In software, a use case is a way of mapping out user interaction with software. It is generally a list of steps required to achieve a goal. When we start to understand “useless” in this way it becomes easier to see circumstances that would indict supposedly capable software as useless.

Imagine a microwave that didn’t let you set the time. You could no longer start it and walk away, trusting it to stop on its own. Thinking back to use cases, we can’t claim to meet a use case if a step is missing. The lack of a timer means that a whole class of use cases is eliminated. If one of those is the only use case of the owner, it really is useless to them. And importantly, it doesn’t matter what else the microwave can do.

I was reminded of this lesson with a recent Google Docs near-disaster1. I used Google Docs with a class project as I thought it would be a great answer to the need for collaboration and shared editing of the assignment. I had used Google Docs in the past for similar purposes but normally I would copy and paste into some other program (like Apple’s Pages) to do final formatting and printing. As my group’s document got larger, I decided I would use Google Docs the whole way through, saving myself the time it would take to copy, paste, and reformat. I did all my formatting in Google Docs and had a pretty nice looking document. When it came to getting the document out of Google Docs, however, the formatting would mess up in some significant way. It didn’t matter if I downloaded it as a PDF, Word doc, or other format the resulting document would be incorrectly formatted2.

Google Docs had gotten me 90 percent of the way there. Without that last 10 percent, however, the software was effectively useless for me. It didn’t matter what else it could do. It didn’t matter that I could collaboratively edit, or browse past versions, or view the document on my iPhone. It couldn’t finish the job.

As a result I’ll never use Google Docs except as a “roughing out” tool again (at least not for a few years).

This is part of the reason focus is so important in software. If you try to do too many things, and you do them all 80 or even 90 percent of the way, for many users you have created something that is no more valuable than if you had done nothing. Think about that. Even worse, you can actually create negative value, because you have convinced them to trap their data in your system that now can’t complete the job. It’s better to pick only those things you can do 100 percent and know that, at least in that area, you have created value for your customers.

I say near-disaster because printing directly to a printer did have the correct formatting, or correct enough that I felt okay turning it in. Return

This is all through the “Download As…” function of Google Docs, rather than some non-supported browser print-to-PDF functionality. Return