You use all sorts of online services. I know, because you’re using one right now to read this post. You also very likely use third-party applications of some kind to enhance your experience of those services: a browser extension, an alternative to the official mobile app, an AI news bot you follow. To come to life, these applications need some means of interacting with their target service in particular ways.
For those of us accustomed to the open source world, there would appear to be two possibilities: either the service has an external API for that, or nobody has created one yet. (And, in the second case, as developers, we have the option to go ahead and implement it ourselves.)
Sadly, because most big online services with majority market share are commercial and under centralized control, three closely-related alternate possibilities are all too common: you can’t do what you are tying to do, either because the provider has decided not to provide an external API for it, or because the provider has proscribed that particular use in their terms of service, or because the provider monetizes the necessary functionality in a way that renders it prohibitively expensive.
On May 19, my Tweepy-based boat tracker, which I wrote about previously on this blog, ceased posting because of changes to Twitter’s API and monetization thereof. It’s a combination of the first and third issues above: in theory, the bot could still work, but it would require either a paid account or a bunch of work sunk into a technical overhaul. I’d love to simply migrate the boat tracker over to Instagram, which would be a better home for it, say, using instabot, but it’s unclear to me whether it violates the TOS, or would be caught and killed by bot-detection algorithms either way.
I started playing Ingress again in the spring, and I’m reminded of past controversy around players being banned for using IITC, a browser extension that enhanced the game’s official companion web interface, but operated in a gray-area interpretation of Niantic’s TOS. More recently, the Ingress subreddit, like many others, went dark on June 12 in protest of newly-announced API charges from Reddit that threaten to make many useful free third-party apps unaffordable for the developers (and life harder for the moderators).
Obviously, these services need to be profitable, and need some means of preventing abuse that would impact the experience of ordinary users. There is also, at least some of the time, a channel by which one may appeal for special consideration for particular use cases where the one-size-fits-most set of paid API tiers or TOS kibosh useful functionality. In spite of all that, API restrictions and paywalling are universally accompanied by grassroots user revolts and mournful end-of-the-road epitaphs capping off the news feeds of heretofore-popular third-party apps. There must be a reason it never goes smoothly.
This perennial threat to the user’s experience of commercial services is a strong rallying cry for decentralized options like Mastodon. I believe I will be moving the boat tracker there, where its API code will be safe from the whims of corporate boardrooms. But can federated, user-hosted, open-source services compete on performance, stability, unity, and ultimately user base against the advantages conferred by centralization and money? I don’t know, but after experiencing once-fledgling open source DJ software rise through its arc to eventually compete with and outclass its commercial rivals, I’m much more inclined to think so.