|
> So that I better understand your position, would you feel differently if Beeper Mini was just a GitHub repo hosting the code to an unofficial 3rd party iMessage client? Why or why not? I mean, I think using that code would be a risky proposition at best that might earn you as a user the ire of Apple, and I wouldn't personally do it, but ultimately, showing people how to do a thing, or even providing the executable I don't think itself is a crime. That said, I would also not be remotely surprised if Apple figured out how to block it's access to it's API's too. And, if there is money involved or if the breach is egregious enough in some other way, I don't think it would be altogether unexpected for the authors to find themselves in some legal hot water too, and/or for Github to receive a takedown notice. > HN as a community is made up of quite a few people who care about interoperability, the right to use our computers as we see fit, the joy of building solutions to solve problems that other people won’t solve, etc. Which I respect on the whole, but the key difference here is you are not just using your computer/smartphone, you are using Apple's computers too. That's where I find the disconnect. Each time Beeper Mini connects to those servers it is using compute resources, however infinitesimal, to perform it's functionality: functionality that is not supported, that fundamentally, Apple is now paying for. And you can justify that any way you want, but at the end of the day, that's stealing. And Apple is perfectly within their rights, IMO, to block it and if they feel they have a case, to pursue it legally afterwards. > Don’t get me wrong. I didn’t expect Apple not to fight this, but I think we need to walk back the hyperbole a bit and consider how utterly normal it is for developers to try to build their own clients when the official options either suck or are too restrictive. And if you're talking about open protocols or API's, you have my support 100%! I've done some of that kind of work. But you can't just use API's that are publicly available but otherwise closed to you just because you want to. That's textbook misuse. |
I think that boiling this down to something like "stealing" oversimplifies something that can't be reduced to a singular notion as such. I think there's a case to be made that it's not approved use of the various API endpoints, but there's more nuance than just theft of CPU cycles or services. For sake of argument, I'm deeply embedded in the Apple ecosystem. I have a half dozen devices that are all capable of communicating via iMessage. If I want to bring an Android device into my personal ecosystem, it doesn't seem clear ethically or morally that there is some theft occurring. I realize there are other scenarios where someone has no Apple devices, never intends to, and would be in a weaker position, having never "bought in".
How do you feel about web scrapers mining the open web and profiting from the results? Or browser automation tech that logs into websites as if there's a user at the keyboard for the purpose of building automated interactions with services that do not provide public APIs, e.g. Quicken banking connections? I'm bringing this up primarily because there is a whole ecosystem of products that exist based on brute force workarounds to a lack of public APIs. The existence of this kind of tech would equate to similar kinds of "misuse" if only judged based on whether or not the service provider intended for this use case and whether or not the client was using some publicly blessed integration channel.
> But you can't just use API's that are publicly available but otherwise closed to you just because you want to. That's textbook misuse.
I think it's reasonable to say that in some scenarios, such use could be classified as misuse. But I don't agree with a blanket statement that "using undocumented APIs is misuse".
When the subject is creating a client for the purpose of interoperability, and when the client implementation is using the underlying APIs/services for their intended use case (i.e. to provide feature parity with the 1st party client e.g. calling the API that sends a message does so for the purpose fulfilling the feature-equivalent send message functionality in the 3rd party client), it seems like this is all a lot greyer than "textbook misuse". Textbook misuse would be building an iMessage spammer bot.