I’ve started to develop a philosophy of extensions this past week as I’ve been playing around with them, and I thought I’d drop some of my ideas here to test them against an audience. Feel free to disagree, criticize, etc whether here or by email or twitter and let me know which items you think hold water and which do not.
Action extensions more or less enable you to inject full applications into Safari, Photos, Maps, and any application that pops up an activity sheet. Although you can go big, it’s my considered opinion that here simplicity wins. A streamlined extension matches the focused semantics of built-in features like copy, assign to contact, add to home screen, add to favorites. I’m thinking action extensions should have a verb associated with them, a single “do this” action rather than “Hey, let me load an entire app to work with this data”.
On a similar note, simplicity should rule any Today extensions. Today items open space in the notification center to provide updates along with any other items listed for the day. For these, I’m thinking avoid clutter and respect the user’s space. There’s got to be a reason those items are showing up, so they have to deliver information in a succinct and clean presentation.
Another point (and this is somewhat more controversial) is own your service. One of the first things I built was a bit.ly URL shortener extension and I was thinking, well, what if a few dozen other people write one? It’s a simple API after all. What about dropbox access, or google drive? How are the users going to choose and why would they pick a third party to offer that API?
My knee-jerk reaction is to defer extension creation for specific APIs to the service that provides them rather than trying to inject your personal version into the space just because there’s an API. If there’s no natural connection between my app and an API I subscribe to, why is my app going to provide that API as an extension in place of an official one?
I would be really excited to see apps like textexpander and 1password jump into the extension space because they own that feature and it’s something that offers value across many apps. I’m looking forward to writing extensions to analyze and process elements from other apps. So it seems another fundamental rule is going to be offer original value in your extensions.
There’s a related thought here, which goes: Just because you figured out how to build an extension doesn’t mean you should include one in your app. Weigh the merits of what you’re offering against the overhead of offering it. Remember how cluttered the settings used to get when people were first using settings bundles, and how that cleared up once devs discovered that no one was heading over there in the first place?
When you add extensions, there gets to be a really long list really quickly of available items. Responsible developers should be holding back on offering extensions unless there’s a compelling reason for presenting one. I foresee a lot of what I am mentally calling “fart extensions” (sorry) added “just because they could”. Avoiding them is my “Anti George Mallory Principle” because apps are not mountains, even though they sometimes feel as tremendous.
What are your thoughts?