dConstruct this year was a chance to see Bryan and Steph talk, and as usual I found their presentation fascinating and thought-provoking. One of their themes was to call for a "useful unfinished-ness" to products (slides 29-44):

"Issuing your customers with something that is rough, incomplete, and possibly even substandard seems counterintuitive but there is growing evidence that people don't necessarily want the perfect product, they prefer to deal with something ragged around the edges that they can adapt or improve."
- Loose, by Martin Thomas

This got me thinking as to how, in mobile, this useful unfinished-ness might be manifested; sidestepping the native/web debate briefly, how we could build mobile apps that allow themselves to be adapted or improved? I thought it'd be worth listing methods I can think of; can anyone think of more?

  1. Intents (Android only) - OpenIntents has a good list from third-party apps, Google publish a list for their apps;
  2. Downloadable SDKs, e.g. Facebook or OpenFeint;
  3. Custom URL schemes (Android and iOS), there are a couple of databases here and here, in combination with the canOpenURL call (on iOS) and I suspect some variant of isIntentAvailable on Android (tho I'm not 100% sure of the latter);
  4. Opening the source; not ideal as it'd likely mean third parties have to build a new copy of your app and distribute it; but it felt remiss to leave it off the list;
  5. Web services, so the data your app uses can be pulled in from a variety of sources;
  6. Push notifications or other messaging from outside your app (e.g. SMS), which your app can pick up on and react to;

Anyone think of any other sneaky waves of plugging mobile apps together?