← Back to Index
October 28, 2026•Startup Tech

The Protocol Wars: Why Microsoft's New 'Type Server Protocol' Sparked an Open Source Revolt

The Language Server Schism

In 2016, Microsoft introduced the Language Server Protocol (LSP), quietly pulling off one of the greatest developer tooling triumphs in software history. By creating a standardized JSON-RPC interface between code editors and programming language analyzers, LSP freed developers from the matrix of $M \times N$ plugins. An editor like Neovim, Zed, or VS Code only needed to implement one LSP client to support completions, diagnostics, and refactorings across Go, Rust, Python, and TypeScript.

Ten years later, on October 26, 2026, Microsoft announced an unexpected sequel: the Type Server Protocol (TSP)&source=gmail&ust=1793237569836000&sa=E.

Rather than receiving universal praise, TSP ignited an immediate open-source firestorm across Hacker News and developer communities. While Microsoft frames TSP as a modular breakthrough that separates heavy type analysis from interactive language servers, open-source maintainers have accused Microsoft of weaponizing protocols to defend its proprietary Pylance extension from being rendered obsolete by modern Rust-based tooling.

The Architectural Anatomy of TSP

To understand why TSP exists, one must look at how Python tooling is architected inside VS Code:

  1. Pyright: Microsoft’s open-source, TypeScript-based static type checker. It parses Python ASTs, resolves type annotations, and detects type errors.
  2. Pylance: Microsoft’s closed-source, proprietary VS Code extension. Pylance wraps Pyright’s engine and adds premium developer features—such as semantic syntax highlighting, auto-import heuristics, docstring formatting, and AI Copilot integrations.

For years, Microsoft maintained a strict walled garden: if you wanted Pylance’s refined user experience, you had to run Pyright. But in 2025 and 2026, the Python type-checking landscape fractured:

  • basedpyright: A popular community fork created by DetachHead that fixed long-standing Pyright bugs, added baseline support, and unlocked strict type safety features Microsoft refused to merge.
  • ty by Astral: A ground-up Python type checker written in Rust by the creators of Ruff and uv, delivering 10x to 50x faster type checking than Node-based Pyright.
  • pyrefly: Meta’s high-performance Python type checker built for massive monorepos.

These fast alternatives put Microsoft in an existential bind. If developers switched their editor language server from Pylance to basedpyright or Astral's ty, they abandoned Pylance entirely.

Enter the Type Server Protocol:

// Example TSP request payload: querying computed type at position
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "typeServer/computedType",
  "params": {
    "textDocument": { "uri": "file:///workspace/server.py" },
    "position": { "line": 42, "character": 15 },
    "timeoutMs": 500
  }
}

TSP is an independent JSON-RPC protocol running side-by-side with LSP. Instead of bundling a specific type checker inside Pylance, Pylance acts as a TSP client. It can query an external "Type Server" (like ty, basedpyright, or Pyright) exclusively for structured type information (declared types, computed types, and symbol definitions), while keeping the presentation, completions, and proprietary editor logic inside closed-source Pylance.

The Open Source Backlash: Why Basedpyright Said No

The controversy erupted when DetachHead, the primary maintainer of basedpyright, published an unequivocal denunciation of the protocol&source=gmail&ust=1793237569836000&sa=E:

"The 'type server protocol' is a desperate attempt from microsoft to prevent pylance from becoming obsolete by outsourcing its type checking to other language servers like basedpyright, ty or pyrefly -- while continuing to keep certain language server features exclusive to pylance. This protocol benefits nobody except microsoft. It adds needless complexity to any language server that chooses to support it. Basedpyright does not support it and strongly advises other language servers to avoid supporting it as well."

The community's technical objections center on three critical concerns:

1. Protocol Duplication and Resource Bloat

Language Server Protocol already has standardized interfaces for diagnostics, hover information, symbol hierarchies, and semantic tokens. Critics argue that instead of extending LSP via the standard workspace/symbol or protocol capabilities, Microsoft created a redundant second protocol. In practice, running both an LSP server and a TSP daemon forces developer machines to run multiple Node or Rust runtimes simultaneously, multiplying RAM consumption in editors.

2. Namespace Hijacking

Despite being named the generic "Type Server Protocol", the specification is deeply tied to Python’s idiosyncratic type semantics. The schema lacks universal type binders (like universal quantification found in TypeScript, Rust, or OCaml), leading developers on Hacker News to mock the generic branding as another example of Microsoft claiming generic standards for single-ecosystem tooling.

3. Asymmetric Commercial Value

If a community-driven type checker implements TSP, Microsoft gets to keep users locked inside its proprietary Pylance extension in VS Code while freeloading off third-party performance optimizations. Conversely, if alternative editors like Neovim, Emacs, or Zed want to use Pylance’s proprietary features, Microsoft’s license strictly forbids it.

Astral's Pragmatic Bet: Why 'ty' Supports TSP

Despite the backlash, the protocol scored a massive win: Charlie Marsh and the team at Astral announced that their upcoming Rust type checker, ty, will support TSP out of the box.

Astral’s motivation is ruthlessly practical. Over 70% of professional Python developers write code inside VS Code, and millions rely on Pylance by default. If ty refused to support TSP, VS Code users would be forced to uninstall Pylance and reconfigure a bare LSP client—a friction point that slows mainstream adoption. By implementing TSP, Astral ensures that a developer can simply toggle python.analysis.typeServer: \"ty\" inside VS Code settings, instantly supercharging Pylance with Rust performance without sacrificing their established keybindings or theme styling.

What This Means for Engineering Teams in 2026

The battle over Type Server Protocol highlights a profound structural tension in modern software development: the friction between open language standards and proprietary editor moats.

For engineering leads and developers, the takeaways are actionable:

  1. The Language Server Protocol Is Not Finished: As static type systems grow more complex and languages demand sub-millisecond AI agent feedback loops, monolithic LSPs are being forced to decouple type calculation from document rendering.
  2. Beware Dual-Daemon Memory Leaks: If your team experiments with TSP-enabled servers alongside traditional LSPs in VS Code, monitor process memory closely. Running separate type servers and language servers can easily consume 4 GB to 8 GB of RAM on large Python projects.
  3. Open-Source Alternatives Are Maturing: With Astral's ty, basedpyright, and standalone language servers like pyrefly, developers no longer need closed-source extensions to get first-class IDE intelligence.

Whether TSP becomes an industry standard or remains a defensive moat for Pylance, one thing is certain: developer tooling is moving too fast for any single vendor to control the entire stack.

Build something exceptional.

Custom web design and development, no templates.

Start a Project
Microsoft Type Server Protocol: The TSP Controversy — ZIAFTRA