I recently had a friend switch from iPhone to Android, and it was an unpleasant wakeup call to see just how subdivided the world of instant messaging is today. Because we were in the Valley, and the overwhelming number of developers here seem to own iPhones, we’d been able to get away up to that point with a group iMessage chat. There’s no excuse for iMessage’s horrible lock-in, but it tends to work well, produces a conspicuous “double vibrate” on phones (so people know they got a message), and has a pretty good desktop client just as long as you’re also on Mac.
The list of new possibilities is almost without end. SMS is the classic lowest common denominator, but it doesn’t have good group support, is generally horrible, and doesn’t work with anything that’s not a phone. Google Hangouts (Or is it Allo? Previously also GTalk.) and Facebook Messenger are also top possibilities, but depend on people being on each service, and are painful to use on a desktop. Based off its client support alone, Slack is also a contender.
Somewhat incredibly, because it came from a tiny upstart compared to the other networks, WhatsApp may still be the best option. It’s interoperable, has a great desktop client, and its attempts to keep the network secure are laudable.
Twenty years ago in 1997, you had one option: ICQ. It had its share of problems, but everyone was on it, and the protocol was simple enough to cultivate a thriving ecosystem of clients. As we hurdle into the future, deep fractures have had the effect of making things broadly just worse, even if we do now have faster networks and more emoji.
The fact that SMS still exists and that telcos can still gouge for its use is a testament to how broken things are. Apple and Google would do the world a huge favor by getting together and authoring an open standard (preferably one that’s simpler than XMPP) that any phone could dial into. New features would be harder to add, but given that even twenty years later instant messaging is still just text and basic media, it’s easily a worthwhile trade off.
Did I make a mistake? Please consider sending a pull request.