Release Candidate One with Chris Clark

A Services Menu for iPhone

Say you download a document from your company’s intranet to proofread. You look up a few words as you go, and you make some edits before sending it to your boss. If you’re anything like me, the task involves Safari, Pages, Dictionary, Finder, and iChat; with every application relying on the ability to take a file or a snippet of text from your current work context and send it elsewhere. On iPhone OS, where every app lives in a sandbox and dedicates itself to a single task, this kind of work isn’t a walk in the park. Copy and paste make things possible if you take the time to switch between apps, but the experience sucks, so developers add convenience features, web service integration, and custom URL schemes. Apple provides some great APIs for integrating with the system utilities, but they’re slow moving. There’s no standard MFTweetComposeViewController, and there probably never will be.

That’s a shame. Every app with a text field should be able to email, tweet, blog, print, transmute, translate, and read aloud the current selection. Every app with an image view should be able to rotate, crop, set as wallpaper, save to Dropbox, post to Flickr, and upload to an SFTP server. Of course no single developer should add all these features to their application—we have a word for software like that—so a more elegant solution is called for.

How Services for iPhone might work, created using the marvellous Briefs prototyping tool.

If you’re a serious Mac nerd you already know where this article is headed, because it’s right there in the title: A Services Menu for iPhone. If you’re not familiar, the Mac’s Services menu is something it inherited from NeXTSTEP, and it’s not unlike the Unix command line’s pipe. A Service takes the current selection and sends it to another application to be worked on, which may or may not pass the result back to the original caller. Services are under-utilized on the Mac because we’re so accustomed to copy and paste, drag and drop, and the routine of saving a file to the desktop with one application so you can open it with another. But iPhone OS, lacking two out of three of these options, could foster a Services explosion.

Mail, for instance, would advertise a Service that says “if you have a file or even a snippet of text, I can send it” and every other app on the platform would get Mail integration for free. Flickr’s app would advertise a Service that says “if you have an image, I can upload it” and then every app—including Apple’s own Photos app—would be able to upload photos to Flickr. Or Facebook. Or Tumblr. Or Posterous. Or an SFTP server. The possibilities are endless, and the beauty of Services is that they’re context sensitive: a Flickr Service would only be visible when you’re handling an image. This keeps the Services menu uncluttered.

Today developers must pick and choose which external features to support, and present a gargantuan list to sate their users’ desires. It’s inefficient and it’s redundant. A system of Services would show only the integration features the user wants, because it can only advertise Services from the apps the user has installed.

On the Mac, Services are a niche. On iPhone OS they’d be nothing short of a revolution.