blog: Don Marti


note on adversarial interoperability

16 November 2019

(update 11 Dec 2019: copy edit, add links.)

Read the whole thing: alt.interoperability.adversarial by Cory Doctorow.

The story of the alt. hierarchy is an important lesson about the nearly forgotten art of "adversarial interoperability," in which new services can be plugged into existing ones, without permission or cooperation from the operators of the dominant service.

Today, we're told that Facebook will dominate forever because everyone you want to talk to is already there. But that was true of the backbone cabal's alt.-free version of Usenet, which controlled approximately one hundred percent of the socializing on the nascent Internet. Luckily, the alt. hierarchy was created before Facebook distorted the Computer Fraud and Abuse Act to try to criminalize terms of service violations.

Usenet was a good example of a decentralized service that could support both free speech and commercial publishing. Usenet supported adversarial interoperability (a25y?) about as well as you can. Any individual could pick their own client software. Any site could choose which newsgroups to offer, and which other sites to share them with. Users could filter messages with killfiles, and even run their own "cancelbots" to share filtering decisions out on the network.

Usenet is also a good example of the best "white hat" case against adversarial interoperability, because Usenet isn't really much of a thing any more. Usenet spammers buried the legit users, even though many tried to fight back, as creatively as they could. Would better spam filters on the client side have helped? What if the scoring algorithms used to rank stories on Slashdot-style boards had made it into Usenet newsreaders? If Usenet had held its own, things might have gone very differently. But we lost Usenet—not because of policies and lawyers, but because spammers killed Usenet while the market incentives for developers encouraged work on web boards, which were mostly ad-supported.

I still like adversarial interoperability and agree with Cory that we need more of it. The best recent example I can think of is ProPublica's Facebook Ad Collector extension, which was later blocked by Facebook. Why was Facebook management so willing to take the bad publicity that came with hiding which users see which ads? The easy answer, of course, is that Facebook is eevill, funded by Russian interests to undermine US public health and promote right-wing causes. But when a big company does something, there's always a "because they're just evil lol" reason and a legit-sounding reason. You have to pick whether they're the real reason and the cover story, or the conspiracy theory and the real reason.

If you want the legit-sounding reason to avoid adversarial interoperabilty, here it is. The two easiest kinds of adversarial interoperability, by far, are:

  • Ad blocking: Removing advertising from a medium.

  • Spamming: Adding advertising that does not pay to support the medium in which it appears.

Twitter is a good example here. Twitter limited third-party apps and dropped RSS support, to keep third parties from offering either convenient ad blockers or ad-supported clients. (Or both: before they made the change, you could make a Twitter client that stripped out Twitter's ads and put yours in.) Twitter also bought and stifled TweetDeck, the popular third-party client.

  • The easier you make it for people to read your service with their own choice of client, the more ads they will block.

  • The easier you make it for people to post to your service with their own choice of client, the more spam they will send.

In Facebook's case, the HTML they send to your browser is a convoluted mass of HTML elements with randomized classes and ids, to make things harder for ad blockers—and either as collataral damage or on purpose depending on who you believe, for ProPublica. (In native apps, ad blocking is even harder.)

Facebook has to pull horrible, ever-changing, HTML stunts to get their ads through to the user, because those ads don't pay their way, and the people receiving them have no reason to keep them. Advertising is only sustainable when it's an exchange of economic signal for attention. In order to carry the signal needed to earn attention, an ad has to be:

  • credible

  • from an identifiable and significant sender

  • related to a market in which the reader is a participant

Only the last one might apply to social ads. On Facebook, I have no incentive to let an ad through, because I have no reason to trust it. That also applies to "programmatic" ads on the web.hey kids! scientific literature! In any ad-supported medium where blocking is the best choice for a member of the audience, then adversarial interoperability is not an option, because the obvious low-hanging fruit of adversarial interoperability is ad blocking.

It seems like we would need ads to start paying their way, and for ad blocking online to be less of a rational bargain for the reader, for adversarial interoperability to catch on.

The Early History of Usenet on Prof. Steven M. Bellovin's blog.

CCPA Means It’s An Opt-Out World Now

How Nestle is trying to trim ad tech middlemen

Consumers in control.

Microsoft will honor California’s new privacy rights throughout the United States

“Programmatic doesn’t survive in its current form”: Ad tech’s quest for an open and alternative ID

Ad tech vendor Sharethrough to shut European operations, blames GDPR