WWDC 2016 Wishlist #4: Universal Messaging Extension and APIs
Let me start off by saying this: it's 2016, we live in a time of software and service consolidations and unprecedented contextual awareness, and yet if I want to keep up with a friend or family member, I'm still having to do it in a dozen places: text messages, Slack, Twitter, e-mail (multiple accounts), Facebook, Instagram, LinkedIn, Snapchat, Messenger, WhatsApp, Blog posts, Skype, and more cropping up all the time (remember Peach six months ago?).
As part of the annoyance, I sometimes vaguely remember something someone wrote on one of those platforms, and I have to search through all of them separately to try and find it. So it seems strange when so much of our activity revolves around social communications and people we want to hear from, that it’s still not easy to do a good job at that.
The Universal Messaging Holy Grail
The trend in addressing this problem seems to be towards mega-messaging platforms that pull together many different forms of communication (voice, chat, video, photos, etc.) and try to become the single destination for all these communications. Facebook is doing it with Messenger, Google has been trying to do it for years with Hangouts, and now with Allo, and even Apple does this to some extent with Messages and FaceTime. Slack is finding success by doing this exact sort of one-messaging-platform-to-rule-them-all approach for teams.
But it’s pretty unlikely that any one of these services will successfully dominate as a single destination for all messaging. For one thing, each service has a certain type of atmosphere, different features that appeal to different audiences, and in some cases, a different context for use (work vs. personal, family vs. friends vs. people you only know casually, encrypted and private vs. unencrypted and public, etc.) There are also tradeoffs inherent to any approach, for example strong encryption is great for privacy, but makes it hard to integrate message contents with other services.
I’m also not sure that having a single monolithic platform is in the best interest of users. The fierce competition around ease of use, fun features, and better ways to express ourselves helps keep messaging and social applications fresh and evolving.
Apple Is Uniquely Positioned
Interestingly, with the unique approach to security and extensibility Apple has taken in iOS, the pieces are actually in place to enable a different kind of universal messaging solution: rather than being a single multi-featured platform, Apple can build a great aggregator of all other messaging platforms.
Here’s how I think it could work: last year Apple brought the Spotlight APIs to iOS, which allow any app to expose its content as indexed, searchable information by the operating system. So now, when a user searches for some text on their iPhone or iPad, the OS can display matching results from any apps that have exposed content with that text to the system.
This same concept can be easily applied to messages in any format (email, text, chat, tweets etc.): an app that handles some form of messages could ask the OS to index messages sent to or received by a specific user on their platform. More on how this could work shortly…
The other component is of, course the presentation of those messages. A lot of social services have unique ways of displaying content with stickers, emotions, live video feeds, animated gifs, etc. It would be pretty futile (and not very fun) to try and standardize all that into one format everyone should use. Instead, Apple could leverage another technology they have already introduced in iOS (and OS X), namely, extensions.
Extensions allow apps to present external views of their content in contexts where the app isn’t even running. The most notable example is the “Today Widgets” on iPhone and iPad, which are displayed in the notification center and show summaries of recent information from various apps, in a style completely defined by and relevant to the apps that provide them. Other examples include the first batch of Apple Watch apps, which were special views of a iPhone app that would run separately on the watch, and action extensions like the 1Password window that can be launched from the browser or other apps to find and select a saved password.
In the context of universal messaging, extensions could be used by each type of participating app to show their message content with all the special bells and whistles outside of the app itself, but in the style of the app. So with any app able to expose messages for the system to index by the contact or person who is wrote or received it, and then able to provide a way to render those messages in the style of the app with all the special content and visual features, we now have all the pieces needed to created a single place where all the messages with a specific person you know can be pulled together chronologically into a single timeline by iOS, from every possible messaging platform and shown in full detail.
Where Would It Go?
So assuming that iOS does create some sort of aggregated timeline view for messages coming from many different apps, where would it go?
My thought is that it would go into the Contacts app as a new and useful feature that could be part of totally reworking Contacts as a more social and central part of the iOS experience.
Here’s the complete picture of how it could go:
Apps that want to participate system would create a universal messaging extension, and would also expose to the system all messages contained in the app, which would be indexed based on user. So If I have a friend “Mary Smith”, who is "@quitecontrary" on Twitter, all tweets she writes that are received in the Twitter app get submitted to the OS as message content indexed by her user id "@quitecontrary". If she also has a Facebook account named “Mary W. Smith”, the Facebook app would index all her posts and messages to me under that user ID.
The indexing system would allow apps to specify if a message is direct (a text message, Messenger message, Twitter DM, etc. which are sent specifically to me), or indirect (a tweet on their timeline, a Facebook post, a Tumblr post, etc.)
Any app that uses a universal messaging extension also provides a little icon and the name of a field that will be used in the Contacts app to represent a person’s account with that service. So Twitter would provide their icon and a field called “Twitter Handle” and Slack would provide an icon and a field named “Slack Team / Name”
In the Contacts app, I can now fill in the appropriate user identifier for any participating services. So for example, when I edit my friend Mary’s contact card, I can now add the fields “Twitter Handle” and “Facebook Name”, and populate them with her Twitter handle (“@quitecontrary”) and Facebook account (“Mary W. Smith”). This tells the operating system which message content indexed by Twitter, for example, gets associated with Mary.
Now, when I open Mary’s contact card in the Contacts app, I have two new pages in addition to her contact info: first, a direct messages page which is a chronological timeline of all messages I sent or received to or from Mary using any and all services that I have apps installed for on my iPhone. Second, an indirect messages page, which is a chronological timeline of everything Mary has tweeted, blogged, posted, etc. in general.
Each entry in the timeline is a special view rendered by an extension provided by the app that handled that message. If I wanted to reply to the message or see it in the context of that one platform, I would just tap on the timeline entry, which would open up the app for that particular message and jump right to it. From there, I could read more, or reply in whatever way that specific service provides for.
Lastly, there would be a new top level tab in the Contacts app called “Activity”. This would also have a page for “direct” and a page for “indirect” and would be a running timeline of all messages to and from all contacts in chronological order.
How Cool Would This Be?
Wouldn’t this be really great as a user? To pull up a contact, and immediately see everything discussed with them on all platforms in a single timeline right there? Or to see everything they have been posting across various social sites in one place? It would also work great with Siri: just say something like “What has Mary Smith been saying lately?” and Siri either jumps into Mary’s contact card, or shows the timeline right there in the response.
Or, if I just want to see who I need to get back to in general, I can just look at my Contacts app's overall “Activity” tab to see all recent messages though all channels from all my contacts.
But beyond this being really great for users, it would also be great for two other groups:
- Social networks both established and new. I mentioned Peach earlier. That social network was really popular and talked about for about 2 weeks at the beginning of the year, and then I haven’t heard anything since. It must be hard to stay in people’s minds when there are already bigger networks out there, and if people forget to open the app regularly, they can miss interesting content that might have deepened their engagement with the new network.
With a universal messaging integration, a new social network like Peach could have much more equal footing with Twitter, Snapchat, etc. because any recent posts from anyone I know on Peach would show up in their card, and in my overall activity feed, without me needing to remember to go open Peach specifically and check for it. And if I wanted to reply, tapping on the message in the timeline would jump straight into the app, giving Peach more of an opportunity to engage me as a user. So this type of extension would be a big boost to all social networks big and small, and their developers.
- Apple itself. Implementing this kind of universal messaging system would almost overnight give Apple the first truly “single destination” experience for all messaging. Without needing to develop any of the underlying platforms or features, Apple could nonetheless have an experience that had ALL the features and benefits of all the underlying platforms, and would stay updated by those various platforms rather than by Apple themselves. And it would make iOS a much more social-centric experience, much “stickier” to its own users, and a really great integrated experience that it would be very very hard to leave behind for Android, Windows, etc.
For all these reasons, I really hope to see a universal messaging extension and API from Apple for iOS and OS X this year. The technology and architecture that would power such a feature has already been integrated in to iOS. It aligns well with the vision for iOS technically, and remains under complete user control. Because the system works by apps exposing their indexed content to iOS, there is no need to share any contact information INTO any of the apps, and each app and messaging service could be end-to-end encrypted (or not) and still participate and work seamlessly in this type of system. So, there being no good reasons I can see not to do something like this, and many good reasons to do it, let’s hope it appears this WWDC or soon afterwards!!