By John Gruber
Streaks: The to-do list that helps you form good habits. For iPhone, iPad and Mac.
There’s a lot to catch up on since last I wrote about Beeper. Long story short, they’ve been playing — and no surprise, losing — the cat-and-mouse game with Apple. What I had been seeing during the week before Christmas is that Beeper Mini half-worked: messages from Beeper Mini on Android would go through to Messages on an Apple device, but from any Apple device, you could get one message through to an Android device running Beeper, but only one. After that, messages sent from an iMessage user on an Apple device to a user running Beeper Mini would silently fail. I’m guessing that behind the scenes, after that initial message from an actual Apple device to a Beeper client would go through, Apple would determine that the Beeper device was illegitimate and blacklist the device ID.
Regardless of details, half-working interop for a messaging service might as well be not working at all.
So Beeper effectively threw in the towel. Or maybe better put, half threw in the towel on their half-working app:
Each time that Beeper Mini goes “down” or is made to be unreliable due to interference by Apple, Beeper’s credibility takes a hit. It’s unsustainable. As much as we want to fight for what we believe is a fantastic product that really should exist, the truth is that we can’t win a cat-and-mouse game with the largest company on earth.
With our latest software release, we believe we’ve created something that Apple can tolerate existing. We do not have any current plans to respond if this solution is knocked offline.
Their current “solution” requires Beeper Mini users to either (a) own — or, I swear, rent — an old iPhone (6, 6S, 7, 8, or X), jailbreak that phone, install Beeper’s software on the old jailbroken iPhone, and then leave that old jailbroken phone powered on and connected to Wi-Fi continuously; (b) have Beeper Cloud — their desktop app — installed and running on a Mac; or (c) run a command-line tool to, on a weekly basis, regenerate a new iMessage registration code. Only with a jailbroken iPhone can you register your Android device’s phone number as an iMessage ID; if you’re using or borrowing a Mac to generate a registration key, Beeper Mini will only work using an Apple ID account, with an email address as your ID. Beeper’s own explanation for this rigmarole:
Here’s the backstory. When you sign in to iMessage on Beeper, we need to send identification information called “registration data” from a real Mac computer. We have, up until now, used our own fleet of Mac servers to provide this. Unfortunately, this has proven to be an easy target for Apple because thousands of Beeper users were using the same registration data.
Beeper Cloud (Mac version) and old iPhones can now generate unique registration data just for you. This 1:1 mapping of registration data to individual user, in our testing, makes the connection very reliable. If you use Beeper Mini, you can use your Mac registration data with it as well, and Beeper Mini will start to work again. Beeper needs to periodically regenerate this data even after you’ve connected, roughly once per week or month, so the Mac needs to be switched on regularly.
These hoops will relegate Beeper Mini to relative obscurity, even if Apple takes no further action to counter it.
Any take on this entire saga that treats Apple’s stance or actions as controversial, in the least, (see below for more on that), is deeply misguided. I think the fundamental misunderstanding is over just what iMessage is. It’s being talked about as though iMessage is merely a format or protocol, and that Beeper reverse-engineering the protocol is akin to, say, reverse engineering a document file format. iMessage is much more than a protocol — it’s a service. It requires servers (both for delivering messages and for the exchange of encryption keys), bandwidth, content moderation for spammers, and more. Apple’s iMessage infrastructure handles billions of messages per day — trillions per year — with unlimited full-resolution image and video attachments. iMessage has also proven to be extremely fast and reliable. Beeper itself glosses over this, in one of their updates yesterday:
Q: “But you guys are making money off Apple’s servers!”
A: We stopped charging for Beeper Mini on Dec 11, and Beeper Cloud has always been free to use. Additionally, Beeper Mini users chat with paying Apple customers on the other side of the conversation! If Apple proposed some way for us to reimburse them for the (minuscule) infrastructure costs of enabling paying iPhone customers to text Android users, we’d be happy to comply with that.
Apple has never revealed the costs of running iMessage, but I suspect there are very few companies in the world who would consider the cost “minuscule”, and Beeper is not one of those companies. (Also, Beeper Mini users can just as easily use iMessage to message other Beeper Mini users — there’s nothing in Beeper Mini that requires someone in each chat to be using an actual Apple device.)
Here’s the analogy I’ve been thinking best applies. American Express operates Centurion Lounges at a few dozen airports around the world, exclusively for the use of their Platinum Card holders. Other premium credit cards offer similar access to other lounges. If you have an American Express Platinum Card, you just show up, show them your card and boarding pass, and you’re in. You get free Wi-Fi; free food (pretty good); free beverages (including a full-service bar); and comfortable seats, tables, and desks. They even have showers for travelers on extended trips. They’re great — and a cut above even most airlines’ own lounges for their premium frequent travelers. Centurion Lounge access is presented as a free benefit, but, of course, there’s no more such a thing as a free premium lounge as there is a free lunch: the cost of the lounges is baked into the annual fees Platinum Card holders pay.
iMessage is like a Centurion Lounge. It’s a free premium messaging service, exclusively for the use of people who own iPhones, iPads, and Macs. SMS, in this analogy, is like waiting for your plane out in the public airport terminal: not as nice, the Wi-Fi is worse, there’s no free food or drinks, but it’s available to everyone.
iMessage users in a group chat who are annoyed by Android-owning group members relegating the conversation to SMS are like a group of friends travelling together — some of whom have Amex Platinum Cards, some of whom don’t — who need to wait in the public terminal if the group wants to wait for their flight together.1
Like any analogy, it’s not perfect. Centurion Lounges allow cardholders to pay $50 to bring guests. iMessage has no “guest access” — you either have an Apple device, and with it, access to iMessage, or you don’t get to use iMessage. But I think the analogy basically works. Centurion Lounges are a perk for Amex Platinum Card holders; iMessage is a perk for Apple device owners. (Now that Apple runs its own credit card, it’s not outlandish to think that they might eventually offer Apple Card holders access to premium airport lounges.)
If Beeper were granting its users free access to Centurion Lounges, I’m not sure how anyone could defend it, because everyone can see how a premium airport lounge costs a lot of money to run: leasing the space, hiring staff, and all the free food and beverages. But that’s exactly what Beeper is doing with iMessage: granting free access to a premium perk intended solely for Apple’s device owners while they’re using those Apple devices.
One might argue that if you own a Mac, you should be able to use Beeper Mini on your Android phone, because the Mac qualifies for iMessage. With Beeper’s latest update, you can even use your own Mac to generate the iMessage registration code Beeper now requires. But Centurion Lounges don’t allow cardholders entry if they don’t present their actual card. (Don’t leave home without it.) Amex sets the terms for access to its Centurion Lounges; Apple sets the terms for access to iMessage. And Apple’s terms are clear: iMessage’s only authorized client software is Apple Messages running on an Apple device.
Beeper Mini presenting itself as Messages on a Mac to gain access to iMessage is as dishonest as presenting a forged Amex Platinum Card to gain access to a Centurion Lounge. Centurion Lounges aren’t free and neither is iMessage. And in the same way you’d expect Amex to crack down on a service that granted non-cardholders access to their lounges, Apple has cracked down on Beeper.
If you prefer another analogy, imagine if Apple (finally) released an electric car and offered free charging for its own vehicles at a network of charging stations — and Beeper found a way to allow any electric vehicle to charge, for free, at those stations. Few would object to Apple closing the loopholes being exploited by Beeper. Electricity isn’t free. Neither is running a large-scale instant messaging platform.
Two weeks ago, when the Beeper saga was running hot, Senator Elizabeth Warren tweeted:
Green bubble texts are less secure. So why would Apple block a new app allowing Android users to chat with iPhone users on iMessage? Big Tech executives are protecting profits by squashing competitors.
Chatting between different platforms should be easy and secure.
It’s her, not me, who capitalizes “Big Tech” as though it’s an organized cabal of law-breaking public-harming bogeymen, a la Big Tobacco. Warren’s argument here is that iMessage is superior to SMS (true), and that Apple should not use the superiority of its own bespoke messaging platform as a selling point for its own devices. As though it’s somehow wrong that Tim Cook, the CEO of the company that sells iPhones, suggested to a questioner complaining about SMS limitations at a conference last year, “Buy your mom an iPhone.”
Keeping an exclusive feature exclusive is not “squashing competitors”. And chatting between different platforms is easy, secure, and free, using apps like WhatsApp and Signal.
A week later came a letter to the Department of Justice, signed by senators Amy Klobuchar (D, Minnesota) and Mike Lee (R, Utah), and representatives Jerry Nadler (D, New York) and Ken Buck (R, Colorado), reported by CBS News’s Jo Ling Kent (also on Twitter/X). From their letter:
We write regarding Apple’s potential anticompetitive treatment of the Beeper Mini messaging application. We have long-championed increased competition, innovation, and consumer choice in the digital marketplace. To protect free and open markets, it is critical for the Antitrust Division to be vigilant in enforcing our antitrust laws. That is why together we have led efforts in Congress to ensure the agency has the authorities, tools, and resources necessary to police abuses of market power.
Translation: Apple is very big and powerful so we just assume this is bad.
Earlier this month, Beeper introduced Beeper Mini, an interoperable messaging service that allows users of the Android mobile operating system to communicate with users of Apple’s iMessage service.
Wrong. There is only one service at hand, iMessage, and that service is and always has been a proprietary platform created and run by Apple, exclusively for owners of Apple devices such as iPhones, iPads, and Macs. Beeper Mini is an unauthorized client for iMessage, not a service unto itself.
Previously, Android users were unable to securely communicate with iMessage users and were relegated to using decades-old, unencrypted SMS technology.
Again, it’s as though modern end-to-end encrypted platforms such as WhatsApp and Signal — which are available free of charge on Android, iOS, MacOS, and Windows — don’t even exist, or that Apple was blocking them from the App Store. WhatsApp has over 2.7 billion active users, so it’s not exactly obscure, and these apps are among the most popular on the entire App Store.
Within days of its launch, Beeper Mini users began to experience service disruptions. Apple admitted it took action to disable Beeper Mini, citing security and privacy concerns for iMessage users.
This is embarrassingly confused, and treats Beeper Mini as a peer to iMessage. But that’s not an apt description. There is only one iMessage — that’s the protocol and platform Apple runs. Beeper Mini users aren’t separate from “iMessage users”; Beeper Mini users became iMessage users. Apple didn’t take down Beeper’s rival network; they blocked access to iMessage from Beeper’s unauthorized client software. This should not be controversial in the least.
Apple executives have previously admitted the company leverages iMessage to lock users into Apple’s ecosystem of devices and services. Beeper Mini threatened to reduce this leverage creating more competitive mobile applications market, which in turn a more competitive mobile device market.
The attention to copy editing in that sentence is indicative of the amount of thought put into the letter as a whole.
Earlier this year the Department of Commerce released a report titled Competition in the Mobile Application Ecosystem, describing Apple as a “gatekeeper” with a “monopoly position” in its mobile app ecosystem. The Department of Commerce observed that “antitrust enforcement is essential for ensuring competition in the mobile app ecosystem.” These findings are consistent with those of numerous other antitrust enforcers and international competition authorities.
This paragraph would make sense in a world where Apple, say, didn’t allow WhatsApp, Signal, Line, Telegram, and Messenger in the App Store. But the market for messaging apps is incredibly competitive, and Apple’s App Store hosts all of them. These four lawmakers claim to be concerned about anticompetitive behavior, but what’s actually going on is actual competition.
Being really good at competing is not anticompetitive.
Let’s stretch this analogy further: RCS is like a major renovation and upgrade to the public airport terminal waiting areas. Still not as nice as the Centurion Lounge, but better than the grubby status quo. And you can sort of see how the company that runs an exclusive lounge might not consider it a high priority to help improve the public waiting areas. ↩︎