Adversarial interoperability is what happens when someone makes a new product or service that works with a dominant product or service, against the wishes of the dominant business.
Though there are examples of adversarial interoperability going back to early phonograms and even before, the computer industry has always especially relied on adversarial interoperability to keep markets competitive and innovative. This used to be especially true for personal computers.
From 1969 to 1982, IBM was locked in battle with the US Department of Justice over whether it had a monopoly over mainframe computers; but even before the DOJ dropped the suit in 1982, the computing market had moved on, with mainframes dwindling in importance and personal computers rising to take their place.
The PC revolution owes much to Intel’s 8080 chip, a cheap processor that originally found a market in embedded controllers but eventually became the basis for early personal computers, often built by hobbyists. As Intel progressed to 16-bit chips like the 8086 and 8088, IBM entered the PC market with its first personal computer, which quickly became the de facto standard for PC hardware. There are many reasons that IBM came to dominate the fragmented PC market: they had the name recognition (“No one ever got fired for buying IBM,” as the saying went) and the manufacturing experience to produce reliable products.
IBM’s success prompted multiple manufacturers to the market, creating a whole ecosystem of Intel-based personal computers that competed with IBM.
In theory, all of these computers could run MS-DOS, the Microsoft operating system adapted from 86-DOS, which it acquired from Seattle Computer Products, but, in practice, getting MS-DOS to run on a given computer required quite a bit of tweaking, thanks to differences in controllers and other components.
When a computer company created a new system and wanted to make sure it could run MS-DOS, Microsoft would refer the manufacturer to Phoenix Software (now Phoenix Technologies), Microsoft’s preferred integration partner, where a young software-hardware wizard named Tom Jennings (creator of the pioneering networked BBS software FidoNet) would work with Microsoft’s MS-DOS source code to create a custom build of MS-DOS that would run on the new system.
While this worked, it meant that major software packages like Visicalc and Lotus 1-2-3 would have to release different “PC-compatible” versions, one for each manufacturer’s system. All of this was cumbersome, error-prone, and expensive, and it meant, for example, that retailers would have to stock multiple, slightly different versions of each major software program (this was in the days when software was sold from physical retail locations, on floppy disks packaged in plastic bags or shrink-wrapped boxes).
The PC marked a departure for IBM from its usual business practice of pursuing advantage by manufacturing entire systems, down to the subcomponents. Instead, IBM decided to go with an “open” design that incorporated the same commodity parts that the existing PC vendors were using, including MS-DOS and Intel’s 8086 chip. To accompany this open hardware, IBM published exhaustive technical documentation that covered every pin on every chip, every way that programmers could interact with IBM’s firmware (analogous to today’s “APIs”), as well as all the non-standard specifications for its proprietary ROM chip, which included things like the addresses where IBM had stored the fonts it bundled with the system.
As IBM’s PC became the standard, rival hardware manufacturers realized that they would have to create systems that were compatible with IBM’s systems. The software vendors were tired of supporting a lot of idiosyncratic hardware configurations, and IT managers didn’t want to have to juggle multiple versions of the software they relied on. Unless non-IBM PCs could run software optimized for IBM’s systems, the market for those systems would dwindle and wither.
Phoenix had an answer. They asked Jennings to create a detailed specification that included the full suite of functions on IBM’s ROMs, including the non-standard features that IBM had documented but didn’t guarantee in future versions of the ROM. Then Phoenix hired a “clean-room team” of programmers who had never written Intel code and had never interacted with an IBM PC (they were programmers who specialized in developing software for the Texas Instruments 9900 chip). These programmers turned Jennings’s spec into the software for a new, IBM-PC-compatible ROM that Phoenix created and began to sell to IBM’s rivals.
These rivals could now configure systems with the same commodity components that IBM used, and, thanks to Phoenix’s ROMs, could also support the same version of MS-DOS and the same application programs that ran on the IBM PC.
So it was that IBM, a company that had demonstrated its expertise in cornering and dominating computing markets, was not able to monopolize the PC. Instead, dozens of manufacturers competed with it, extending the basic IBM architecture in novel and innovative ways, competing to find ways to drive down prices, and, eventually, giving us the modern computing landscape.
Phoenix’s adversarial interoperability meant that IBM couldn’t exclude competitors from the market, even though it had more capital, name recognition and distribution than any rival. Instead, IBM was constantly challenged and disciplined by rivals who nipped at its heels, or even pulled ahead of it.
Today, computing is dominated by a handful of players, and in many classes of devices, only one vendor is able to make compatible systems. If you want to run iPhone apps, you need to buy a device from Apple, a company that is larger and more powerful than IBM was at its peak.
Why have we not seen an adversarial interoperability incursion into these dominant players’ markets? Why are there no iPhone-compatible devices that replicate Apple’s APIs and run their code?
In the years since the PC wars, adversarial interoperability has been continuously eroded.
- In 1986, Congress passed the Computer Fraud and Abuse Act, a sweeping “anti-hacking” law that Facebook and other companies have abused to obtain massive damages based on nothing more than terms-of-service violations.
- In 1998, Congress adopted the Digital Millennium Copyright Act, whose Section 1201 threatens those who bypass “access controls” for copyrighted works (including software) with both criminal and civil sanctions; this has become a go-to legal regime for threatening anyone who expands the functionality of locked devices, from cable boxes to mobile phones.
- Software patents were almost unheard of in the 1980s; in recent years, the US Patent and Trademark Office’s laissez-faire attitude to granting software patents has created a patent thicket around the most trivial of technological innovations.
Add to these other doctrines like “tortious interference with contract” (which lets incumbents threaten competitors whose customers use new products to get out of onerous restrictions and terms of service), and it’s hard to see how a company like Phoenix could make a compatible ROM today.
Such an effort would have to contend with clickthrough agreements; encrypted software that couldn’t be decompiled without risking DMCA 1201 liability; bushels of low-quality (but expensive to litigate) software patents, and other threats that would scare off investors and partners.
And things are getting worse, not better: Oracle has convinced an appeals court to ban API reimplementations, which would have stopped Phoenix’s ROM project dead in its tracks.
Concentration in the tech-sector is the result of many factors, including out-of-control mergers, but as we contemplate ways to decentralize our tech world, let’s not forget adversarial interoperability. Historically, adversarial interoperability has been one of the most reliable tools for fighting monopoly, and there’s no reason it couldn’t play that role again, if only we’d enact the legal reforms needed to clear the way for tomorrow’s Phoenix Computers and Tom Jenningses.
Images below: IBM PC Technical Reference, courtesy of Tom Jennings, licensed CC0.