Archive for June 8, 2023

Thursday, June 8, 2023

Apollo Shutting Down June 30th

Christian Selig (tweet, Mastodon, Hacker News, MacRumors):

I’ve talked to a lot of people, and come to terms with this over the last weeks as talks with Reddit have deteriorated to an ugly point, and in the interest of transparency with the community, I wanted to talk about how I arrived at this decision[…]


Another common claim by Reddit is that Apollo is inherently inefficient, using on average 345 requests per day per user, while some other apps use 100. I’d like to use some numbers to illustrate why I think this is very unfairly framing it.


Hopefully that illustrates why, even more than the large price associated with the API, the 30 day timeline between when the pricing was announced and developers will be charged is a far, far, far bigger issue and not one I can overcome. Much more time would be needed to overhaul the payment model in my app, transition existing users from existing plans, test the changes, and have users update to the new version.


I was assured this year by Reddit not even that long ago that no changes were planned to be made to the API Apollo uses, and I’ve made decisions about how to monetize my business based on what Reddit has said.

Jason Snell:

Apparently in a conversation with moderators, Reddit CEO Steve Huffman alleged that Selig was attempting to threaten the company into paying him millions of dollars. Unfortunately for Huffman, Selig has receipts—namely recordings of all his dealings with Reddit.

I gotta be honest, this Huffman guy sure looks like a lying creep, and all of Reddit’s public statements about honoring third-party apps seem like an attempt to lie to Redditors so they don’t look like the bad guys.

Quinn Nelson:

I speak with Christian Selig (former Apple intern turned star indie dev) on why and how Apollo’s $20M API maintenance fees are a no-go and how Reddit’s changes will make the site worse for everyone.

Toptomcat (Hacker News):

Reddit announced they were raising the price to make calls to their API from being free to a level that will kill every third party app on Reddit, from Apollo to Reddit is Fun to Narwhal to BaconReader.

Even if you’re not a mobile user and don’t use any of those apps, this is a step toward killing other ways of customizing Reddit, such as Reddit Enhancement Suite or the use of the desktop interface.

This isn’t only a problem on the user level: many subreddit moderators depend on tools only available outside the official app to keep their communities on-topic and spam-free.


On June 12th, many subreddits will be going dark to protest this policy.

Mark Hughes:

When a site tells you they don’t want you using it, except by their captured clients, you should stop using it. All they want is to control you and put ads in your eyeballs, until you explode.

That happened for me years ago with Twitter. It happened before that with MySpace; I know it sounds like a joke now, but if you liked music and web design, MySpace was a fantastic place to meet people. And before that, there was LiveJournal; now owned by Russian criminals. Reddit came out of Digg being fed into a woodchipper just because Kevin Rose wanted a little bit of money. I dunno what keeps a billion people trapped in Facebook, but they’ve never had open clients, those people like being property.


Update (2023-06-09): See also: Hacker News.


This makes me indescribably sad.

Apart from mourning the loss of a fantastic app by an awesome developer, to me it signals the end of a golden era of small indie client only apps. Since the APIs for the likes of reddit, twitter (RIP tweetbot) and others were available for free or a reasonable fee it spawned a whole cottage industry of developers who made a living selling alternate front ends for these services. These apps invented many of the conventions and designs that eventually percolated to the official clients. Sometimes these innovations even became platform wide conventions (pull to refresh anyone?). The writing was on the wall for a while, but now the door is firmly closed on that era - and we will all be poorer for it.

Francisco Tolmasky:

It’s interesting that despite pretty different cultures, Apple, Twitter, and now Reddit seem to share a strange resentment towards their platform’s developers. They seem actually incapable of viewing the relationship as symbiotic or mutually beneficial in any way, demonstrating through words and actions that they consider it a favor to devs that they should get any access at all, not that users benefit from this too. It feels almost personal. Is this a natural phenomenon for platform owners?


The strangest part is that it also hurts their business. It’s not about throwing us a bone IMO, it’s about not understanding how much better their service is thanks to things like 3rd party clients. I don’t even use Apollo, but I understand how it’s indespinsible to the mods that actually keep Reddit usable. Most the apps I use on the iPhone are not made by Apple. Yet they act like the AppStore is a charity that they’re one “whiny developer” away from just closing down entirely.

Steve Troughton-Smith:

With what happened with Tweetbot et al, and now Apollo and the Reddit clients, more than ever my advice to new developers is own your dependencies, wherever possible. It is far too easy to import a dozen Swift packages without thinking. A lot of people are getting very excited about OpenAI APIs like GPT, but build with caution — it is but another major dependency being introduced to many apps that would cause existential problems should it some day go away, or price you out of the market.

nightofgrim (via Hacker News):

The goal of making the code for this repo available is to show that despite statements otherwise by Reddit administrators, Apollo does not scrape anything and users purely authenticated Reddit API requests, and does a great deal of work to ensure the Reddit API rate limits are respected.

deliteplays (via Hacker News):

Programmer Humor will be shutting down indefinitely on June 12th to protest Reddit’s recent API changes which kill 3rd party apps.

BananaBus43 (via Hacker News):

ArchiveTeam has been archiving Reddit posts for a while now, but we are running out of time. So far, we have archived 10.81 billion links, with 150 million to go.

David Brownman (via Hacker News):

Reddit does have a feature to export your data into a GDPR archive, but it’s pretty barebones - only the plaintext of the comment, the subreddit name, the timestamp, and weirdly, the number of awards. Unfortunately, the highest fidelity data comes from the API, which is exactly what’s going to be changing/worsening soon. So it felt urgent to create an archive of my personal API data.

Steve Huffman:

Effective July 1, 2023, the rate for apps that require higher usage limits is $0.24 per 1K API calls (less than $1.00 per user / month for a typical Reddit third-party app).

Some apps such as Apollo, Reddit is Fun, and Sync have decided this pricing doesn’t work for their businesses and will close before pricing goes into effect.


Effective July 5, 2023, we will limit access to mature content via our Data API as part of an ongoing effort to provide guardrails to how explicit content and communities on Reddit are discovered and viewed.


We want everyone to be able to use Reddit. As a result, non-commercial, accessibility-focused apps and tools will continue to have free access.


We need more efficient moderation tools, especially on mobile. They are coming.


P.S. isn’t going anywhere[…].


How will you determine which apps are “accessibility” apps? For example, many people use alternative, third-party Android apps to gain access to Reddit, since your own app is appalling with screen readers; but these are not strictly “accessibility” apps.

Can you promise that accessibility apps will be exempt indefinitely? Or only until you put a small level of accessibility into your own app?

Why can’t we have commercial accessibility apps? Why do they have to be operated like a charity? If I can afford to buy an accessible Reddit app, why can’t the developer make money for their work—thus also giving me the ability to have higher expectations for that app? And what about if there’s a cost to them for some features, such as push notifications?

John Gruber:

I’ll bet many of you reading this, even Reddit users, couldn’t recall Reddit’s CEO’s name before I named Huffman above. But it’s clear from Selig’s description — and his receipts, as it were — that Huffman is intimately involved in this decision, and is not only responsible, but is actively besmirching Selig with provably false accusations of both extortion and shoddy engineering.

Well, I remember that time Huffman used his super admin access to edit other people’s Reddit posts that were critical of himself.

Let’s see if Huffman has the courage to go through with this planned AMA today to discuss Reddit’s API policy changes. I have one simple question for him: What do you think Reddit co-founder Aaron Swartz would say about this if he were still alive?

And I remember that time they removed the listing of Swartz as a co-founder.

Jeff Johnson:

It’s crucial to understand that all BigCos are massive liars. The Reddit lies are not unusual; what’s unusual is a company getting caught red-handed.

The developer of Dash caught Apple in a lie with a recorded phone call a number of years ago. They all lie. In fact, Phil Schiller himself lied about my former employer back when we had an App Store dispute.


iCloud Drive Now Supports File Versions

Howard Oakley:

In almost all cases, ‘cloning’ a volume also loses all versions in the Document Revisions database, unless the method of duplication creates an absolutely identical copy, with the same inodes and file system.

iCloud is more complicated. There was a time when it didn’t support versions at all, then it started to support them but had some serious bugs making them unreliable. Those have been gradually resolved, and iCloud Drive now effectively keeps its own Document Revisions database, making versions available to all Macs and devices accessing them.


The Rust I Wanted Had No Future

Graydon Hoare (Hacker News):

This is maybe not clear enough, and it might make the question of whether the project “really should have had a BDFL” a little sharper to know this: the Rust We Got is many, many miles away from The Rust I Wanted.


I wanted crates to allow inlining inside but present stable entrypoints to the outside. Swift wound up close to here, it’s a huge technical headache but failure to do so is also a big part of Rust’s terrible compile times and lack of a stable ABI. I resisted this at the time and have objected to the choice ever since. It’s likely necessary in today’s Rust given the next point though.


Another thing that’s great to have a compiler open-code is an integer type that overflows to an owned or refcounted bignum type: shipping enough stuff to let this happen efficiently in libraries is a huge pain (even if you get as far as stable inline assembly it won’t go as fast as doing it in the compiler) and .. Rust just decided not to. I wanted it to, but I lost. Integers overflow and either trap or wrap. Great. Maybe in another decade we can collectively decide this is also an important enough class of errors to catch?


Tail calls. I actually wanted them! I think they’re great. And I got argued into not having them because the project in general got argued into the position of “compete to win with C++ on performance” and so I wound up writing a sad post rejecting them which is one of the saddest things ever written on the subject.


The priorities I had while working on the language are broadly not the revealed priorities of the community that’s developed around the language in the years since, or even that were being-revealed in the years during. I would have traded performance and expressivity away for simplicity -- both end-user cognitive load and implementation simplicity in the compiler -- and by doing so I would have taken the language in a direction broadly opposed to where a lot of people wanted it to go.

Network Path Monitoring

Keith Harrison:

In iOS 11, Apple recommended you stop using the reachability API to check network availability before attempting a connection. Instead you configure a URLSession to wait for connectivity.

The wait for connectivity model works better for creating connections but I still sometimes want to show the user a network status indicator.


Apple released the Network framework in iOS 12, macOS 10.14. It includes a NWPathMonitor that is now the preferred way to monitor changes to network status. The three steps to monitor network changes[…]