--- Title: Twitter Blue is a late-stage symptom Status: published Date: 2021-06-04 Category: cyber Tags: antitrust, platforms, big tech, user-agent, api, twitter ad: here's why it's bad that Twitter decided to put accessibility features behind a paywall, and it isn't (just) the obvious --- [Twitter Blue!](https://help.twitter.com/en/using-twitter/twitter-blue) $5/mo for Premium Twitter. It's the latest thing that simply everyone. ![News articles about twitter blue](./twitterblue_news.png) I have an issue with it, but over a very fundamental point, and one Twitter shares with a lot of other platforms. So here's *why* it's bad that Twitter decided to put accessibility features behind a paywall, and it isn't the obvious. ## Client/Server architecture in 5 seconds All web services, Twitter included, aren't just one big magic thing. You can model how web apps work as two broad categories: the client and the server. The client handles all your input and output: posts you make, posts you see, things you can do. The server handles most of the real logic: what information gets sent to the client, how posts are stored, who is allowed to log in as what accounts, etc. For Twitter, that looks something like **Client** - Format and display tweets - Format and display embedded ads - Tweet composer - Drafts (Twitter saves drafts on your phone, not your account) **Server** - Timeline logic - Storing who you follow - Storing their tweets - Sending you the tweets you request - Sending you the streams you request So an average Twitter session looks something like this: **Client:** I'm @username, let me know if I get a notification. **Client:** I'm @username, send me the timeline **Server:** Okay, here is a list of tweets. I put it together based on who you follow, which tweets I think should appear and in what order, and sprinkled some ads in there. **Client:** I'm getting close to the end of that list, send me some more starting after Tweet X **Server:** Okay, here is more of that list. **Server:** Hey, you got a notification! **Client:** I scrolled back to the top, give me some fresh tweets now. **Server:** Okay, here's that. **Server:** Hey, you got a notification! This conversation is done through the API, or Application Programming Interface. Basically, just a schema Twitter uses to communicate between servers and clients. The server is doing a lot here! But it's not doing everything, obviously. So, what actually *are* clients? Well, there are a few: - `twitter.com` on desktop - `twitter.com` on mobile - The Twitter iPhone app - The Twitter iPad app - Tweetdeck on desktop - Tweetbot Twitter even tells you which client made any given tweet: ![Client descriptor on a tweet](./twitterblue_client.png) You might have noticed "Tweetbot" in that list of clients. What's that? It's a third-party Twitter client for iPhone. There aren't many of those, because... well, I'll get to that later. But Tweetbot does point out the dirty little secret that ## Twitter doesn't have to make the clients Because the client is essentially user-interface, and can try to do anything a user can try to do, Twitter can't automatically trust it. You can't hack your iPhone to tweet as someone else, all that's securely controlled by the server. All the client/server interactions use an API to do the basic operations of fetching and posting content. That way the user interfaces can be tailored to your device and your display without reworking all the internal Twitter logic. This is a good thing! So... why is Tweetbot so bad? No, it really kind of is. Unlike with the official Twitter apps, Tweetbot doesn't sync your notifications or direct messages. If you start up Tweetbot, it'll think everything is unread, even though that information is synced if you use Twitter apps. Plus images take a second longer to load, and if you scroll down far enough you'll run out of tweets. What's happening here? Twitter isn't letting Tweetbot do its job, that's what. ## Twitter wants to make the clients See, in early internet days, people got extremely excited about interoperability. Everything was going to be interconnected and that's how the internet was going to generate value: by enabling new kinds of interactions. This was the utopian Web 2.0 era of APIs and the era of [RSS feed](https://en.wikipedia.org/wiki/RSS), a dead-simple format that allowed any site to publish a feed of posts that was comparable with any reader. You'd take your favourite feed reader and subscribe to all your favourite blogs (no matter where they were hosted) and you'd be kept up-to-date on everything, all the time. This is still how podcasts work, by the way! The internet was all about data, and data could be handled anywhere. Servers would handle data, and clients would handle the user interaction. Platforms were platforms! Spaces, real areas people could build on themselves. It was a golden age for making things that were good. The problem is this isn't immediately profitable. If any client can handle your data, you don't have control over *how* it's displayed. If any app can use Twitter, they might re-order the tweets! They might change how the media is displayed! They might remove ads! (Browsers, by the way, are a big ol' kind of user-controlled client, which is why you can remove adds on there.) We can't optimize engagement on that. And, of course, if you have *competition* in your clients, those clients will compete for users by trying to be good clients. There's a natural drive to create those features, and if the apps work and users are free to use them, Twitter would have to make sure its own app was what people actually wanted. They had to be good. So the APIs had to go. Of course, the APIs are how Twitter communicates with its *own* apps too, so they didn't go completely. They got split into *public* and *private* APIs. The private API is how Twitter communicates with its own apps, and it's as full-featured as the API used to be. You can track notifications, bookmarks, and do it all without worrying about limits. The public API... the public API has been crippled. You can only pull so much data at a time, and there are whole suites of features you have *no* access to. If you want to use it *commercially*, you can pay Twitter for their [API-as-a-product](https://developer.twitter.com/en/products/twitter-api), which is the only way you can still build something as functional as Tweetbot -- by paying Twitter for the privilege. They didn't do this right away, of course. No, they whittled down the list of competing clients, first. They [bought Tweetdeck outright](https://www.cnet.com/home/smart-home/twitter-acquires-popular-client-tweetdeck/) -- a rare consensual move -- but most were quietly shuttered by Twitter leveraging its TOS against them, [breaking them with changes](https://play.google.com/store/apps/details?id=com.tecc0.twitter_dm&hl=en_US&gl=US), or [just bought by larger companies](https://www.theverge.com/2015/12/16/10272128/topsy-shut-down-apple-twitter-analytics) who wanted to cooperate with the no-API business model. ## This is bad Fundamentally, a part of Twitter's business model is now maintaining tight control over the user experience so it can control ads and optimize engagement. This is, of course, overtly antagonistic behaviour towards users. You can no longer choose how images are displayed, or even if they are at all. You're shown whatever ads Twitter wants to show you, including for topics that may personally offend you. This model is also an obvious accessibility nightmare. Everything you need to manage accessibility is bundled in the client, and therefore now locked down tight. Twitter Blue is the culmination of late-stage powergrubby. Now that Twitter has total control over Twitter clients, it's rolled out its latest product: an improved Twitter client, for a monthly fee. For $5 a month, you can now pay for features third-party Twitter apps used to be able to offer, but now can't. Features like - Arranging saved tweets into folders - Get improved visual accessibility options in the form of reader mode - Adding a time delay between pushing the tweet button and publishing the tweet This is why tech companies have started treating “offering a feature our core service lacks” as an act of aggression. Internet business is ALL about control. That’s the whole game. Offer people more control than the competition, then take it away once your platform has become dominant and users are committed. ## Don't police the client I keep harping on Twitter here, but they're not at all alone in any of this. All the big "web platforms" have gone the same way: Facebook, YouTube, Flickr, Instagram, Pinterest, Google *everything*... you name it, it's made itself worse. The core problem here, of course, is trying to police the client layer instead of the server. I would be fine if Twitter added a subscription service that added real features. What's offensive is charging people to change something they should have had control over already. Having control centralized in the wrong place isn't just bad for twitter users, it's bad for everything. It's a fundamental distortion in the fabric of the internet, which is becoming nearly synonymous with the fabric of society. Clients are crippled, sure, but basic tasks like accessibility features and historical archival are crippled now because companies are obsessed with accumulating any conceivable power in themselves, without thought for whether or not that makes sense. Let users be users, and if you're looking to make a bigger profit, don't just shackle down everything you can reach. Come up with a real service that generates real value. ## Related reading - [Cory Doctorow, "Why it’s easier to move country than switch social media"](https://www.wired.co.uk/article/social-media-competitive-compatibility){: .related-reading} - ["Twitter API updates: more authentication, fewer tweets, more rules, certification, and … talk to the hand"](https://venturebeat.com/mobile/twitter-api-updates-more-authentication-fewer-tweets-more-rules-certification-and-talk-to-the-hand/){: .related-reading} - [Tom Scott, "This Video has %s Views", video](https://www.youtube.com/watch?v=BxV14h0kFs0){: .related-reading} - [Failory, "What Was Google Reader"](https://www.failory.com/google/reader){: .related-reading} - [Yahoo! Pipes on Wikipedia](https://en.wikipedia.org/wiki/Yahoo!_Pipes){: .related-reading} - [Twitter, "About Twitter Blue"](https://help.twitter.com/en/using-twitter/twitter-blue){: .related-reading} - [RSS Bridge on github](https://github.com/RSS-Bridge/rss-bridge){: .related-reading} - [Create a Problem, Sell a Solution meme](https://i.redd.it/xbb89wlsen371.jpg){: .related-reading} - [Mihir Patkar, "5 Free Apps to Improve Twitter Without Subscribing to Twitter Blue"](https://www.makeuseof.com/free-apps-to-improve-twitter-without-subscribing-to-twitter-blue/){: .related-reading} - [2023: Twitter kills third-party clients in the worst way possible](https://daringfireball.net/linked/2023/01/14/information-twitter-slack-confirmation){:related-reading} ![mcclure111: Think about how Twitter got so many ideas from community inventions (like the @) and third-party Twitter apps (https://t.co/BnpIaUY3yc). And then they changed their developer terms to eliminate all the third party Twitter apps, Favstar etc. - Think about https://t.co/elxa6vZWVk](https://twitter.com/mcclure111/status/1201544312984625152)