Embrace. Extend. Extinguish.

Mar 20, 2022

A timeless strategy for technical products. One of the most effective forms of API warfare which Microsoft was (is) most notorious for. From a 1994 internal memo at Microsoft on a strategy for building the "killer app" for the budding internet.

In order to build the necessary respect and win the mindshare of the Internet community, I recommend a recipe not unlike the one we've used with our TCP/IP efforts: embrace, extend, then innovate. Phase 1 (Embrace): all participants need to establish a solid understanding of the infrastructure and the community—determine the needs and the trends of the user base. Only then can we effectively enable Microsoft system products to be great Internet systems. Phase 2 (Extend): establish relationships with the appropriate organizations and corporations with goals similar to ours. Offer well-integrated tools and services compatible with established and popular standards that have been developed in the Internet community. Phase 3 (Innovate): move into a leadership role with new Internet standards as appropriate, enable standard off-the-shelf titles with Internet awareness. Change the rules: Windows become the next-generation Internet tool of the future.
  • Kubernetes embraced the Docker API and community. It then extended the API with an orchestration layer. Finally, it extinguished Docker by (1) becoming the standard for enterprises (over Docker Swarm) and (2) fully removing Docker (now containerd) from the guts of the system.
  • Microsoft finally is fulfilling its dream of EEE to Linux. Windows Subsystem for Linux (WSL) embraced the API – letting you run Linux binaries (and GUIs!) on Windows natively. Next, WSL extended the kernel with GPU driver support.
  • Ethereum embraced the Bitcoin community and architecture – Blockchains, proof-of-work, signed transactions. Then, it extended the API with transaction data and smart contracts. Finally, Ethereum is now transitioning to a proof-of-stake and a more hybrid architecture (with sharding and rollups).
  • There are many potential examples in the JavaScript ecosystem. Some are coming after Node (Deno, StackBlitz): Embrace the API, Extend (faster, more secure, easier to use), and Extinguish (no trace of Node or other JavaScript-written-in-JavaScript tools). Others are coming after lower level targets – languages that compile to JavaScript or WebAssembly.
  • Chrome originally used WebKit (from Safari) but eventually forked the library to Blink. Chrome has embraced web standards (e.g., in CSS and HTML) but has also become so ubiquitous that it has become the standard itself – sometimes Chrome is the ground truth for behavior (rather than the agreed upon spec).
Subscribe for daily posts on startups & engineering.