Microsoft tried to kill the printer driver. Healthcare said no.
Microsoft tried to kill the printer driver. 90% of US healthcare said no. In late 2025,...

Microsoft tried to kill the printer driver. 90% of US healthcare said no.
In late 2025, Microsoft put a line on the Windows Roadmap that should have read as routine. Starting January 2026, Windows Update would stop shipping legacy V3 and V4 printer drivers. Modern Print Platform only. Goodbye to a decade of brittle vendor blobs.
In February 2026 they quietly took it back. The line vanished from the roadmap. The official statement told users no action applies. Existing printers will keep working. The deprecation, for now, sits on hold.
Microsoft holds more market power than almost any company in history. They tried to retire a category of driver that Microsoft itself deprecated back in September 2023. They could not actually pull it off. The reason sits in every hospital in the United States, and it makes a noise like a 1990s modem.
TL;DR
| Thing | Status |
|---|---|
| V3 and V4 printer drivers | Deprecated since September 2023, still alive |
| January 2026 deprecation push | Announced, then retracted in February 2026 |
| US healthcare communication that still runs on fax | About 70 percent |
| Once you count EHR linked faxing | Closer to 90 percent |
| ATM transactions still running on COBOL | About 95 percent |
| Online banking transactions touching COBOL | More than 40 percent |
| Time horizon on this stuff actually dying | Decades, not quarters |
1. The headline that almost happened
The original Microsoft plan looked clean. V3 and V4 driver models carried known security and stability problems. Modern Print Platform, the IPP based replacement, outperforms them in almost every measurable way. Microsoft already deprecated the old drivers two and a half years ago. The January 2026 update would have completed the cleanup.
That plan sits in the archive now. Tom's Hardware and Windows Central covered the original announcement. The retraction came after Microsoft "received feedback." The polite version of "received feedback" reads as follows: some quite large customers told Microsoft, in writing, that breaking the printer pipeline would break the hospital pipeline, and that the hospital pipeline runs on fax.
2. The fax number you cannot believe
Here is the statistic that broke my brain when I first read it. Roughly 70 percent of healthcare communication in the United States still moves over fax. When you include EHR linked faxing, where an electronic health record system pretends to be a fax machine in order to talk to the rest of the industry, the number climbs to about 90 percent.
Ninety percent. Of the most regulated, most digitized, most money-flooded industry in the developed world. Running on a protocol that predates the personal computer.
The 2026 healthcare comms diagram
┌──────────────┐ FAX ┌──────────────┐
│ Hospital A │ ─────────────────▶ │ Clinic B │
│ (modern │ │ (modern │
│ EHR) │ │ EHR) │
└──────────────┘ └──────────────┘
│ │
▼ ▼
Pretends to be Pretends to be
a fax machine a fax machine
│ │
▼ ▼
╔═════════════════════════════════════════════════════╗
║ 90% of the actual traffic goes over fax anyway ║
╚═════════════════════════════════════════════════════╝
That diagram explains what Microsoft hit when they tried to ship the driver change. The driver path covers more than home offices. The driver path runs through compliance pipelines that no single engineering team owns. Break the driver layer in January, and somebody's referral cannot reach somebody else's prior authorization in February. That outcome does not fit a "we will respond to feedback" narrative. That outcome makes a 60 Minutes segment.
3. The other infrastructure that refuses to die
Fax counts as the most visible example. Not the only one. The pattern shows up everywhere stable infrastructure built up decades of edge cases. IBM has said for years, in slightly louder volumes each year, that COBOL still runs about 95 percent of ATM transactions and more than 40 percent of online banking. The COBOL workforce is aging out. The replacements never arrived. The systems keep running.
Same pattern with:
| System | Year designed | Still doing real work in 2026 |
|---|---|---|
| Fax | 1843 (concept), 1960s mainstream | Yes, in healthcare and government |
| COBOL | 1959 | Yes, in banks and insurance |
| FORTRAN | 1957 | Yes, in scientific computing |
| SQL | 1974 | Yes, almost everywhere |
| Email (SMTP) | 1982 | Yes, the protocol you read every day |
| HTTP | 1991 | Yes, you are reading this over it |
We tell each other we live in a world of rapid change. The world actually sits on one of the most stable substrates the species has ever built. The application layer churns. The substrate hardly moves at all.
4. The lesson for software you ship today
You will not build fax machines. You will, almost certainly, write code that outlives your current job, your current company, and possibly your current career. That outcome sits at the heart of the COBOL story that nobody puts on a slide. The COBOL devs in 1985 did not know their code would still run in 2026. They just shipped.
The code you wrote last week might still serve as a production database adapter in 2040. The defaults you picked stand a chance of becoming invariants for some future maintainer who has never met you. Five practical rules that pay back over the decade-scale arc of code:
Rule 1: Comment the boundary, not the line
Your future maintainer can read your code. They cannot read your decision tree. Write down why a particular flag exists, why a particular workaround sits where it does, why a particular value lives as a constant. Skip the obvious. Document the negotiations.
# bad
TIMEOUT = 47
# good
# Set to 47 seconds because the partner auth gateway has a hard 50s limit
# and we observed 1-2s of jitter from our load balancer in the May 2023
# postmortem. Do not raise without coordinating with the integrations team.
TIMEOUT = 47
The bad comment captures what the code already says. The good comment captures the negotiation that produced the number, which is the part that erases first.
Rule 2: Pick formats that read in plain text
JSON, CSV, plain SQL, basic English logs. The dependency on a binary format with proprietary tooling bites archaeologists hardest. If somebody can cat the file in 2046 and start guessing what it does, you have done them a favor that pays back forever.
The fax format is plain enough that a forensic analyst can read it with the right hardware. COBOL source is plain enough that a junior dev with a manual can read it. The systems that died fastest in the 1990s and 2000s were the ones that depended on a binary tool that the vendor stopped supporting. Choose against that future.
Rule 3: Write the migration script you wish someone had written for you
Every meaningful schema change should ship with the SQL or code that undoes it, or that walks the data from the old shape to the new one. Future you, or future someone, will thank you.
-- Forward migration
ALTER TABLE users ADD COLUMN preferred_locale VARCHAR(10) DEFAULT 'en-US';
UPDATE users SET preferred_locale = 'en-GB'
WHERE country_code IN ('GB', 'IE', 'AU', 'NZ');
-- Down migration (commit this in the same file)
ALTER TABLE users DROP COLUMN preferred_locale;
Tools like Alembic, Flyway, Liquibase, and Sequelize migrations enforce this discipline. If your team is doing migrations as ad-hoc DBAs running scripts in pgAdmin, you are storing technical debt that compounds at the rate of every release.
Rule 4: Version your wire formats from day one
The number one source of unkillable legacy infrastructure is a public protocol that grew without a version field. The 1843 fax protocol gained version negotiation only when CCITT standardized it. The internet has 30 years of bolt-on versioning because TCP/IP shipped without it. Avoid being the contributor of the next one.
// good API response, version everywhere
{
"version": "2026-05-01",
"data": { "..." }
}
Use date-based versioning, header-based versioning, or URL-based versioning. Pick one. Use it consistently. When you need to make a breaking change in five years, the version field is the only thing that lets you do it without breaking every client at once.
Rule 5: Write a CHANGELOG that survives the company
CHANGELOG.md, in the root of every repo you own. One entry per release. Date, version, and a sentence per change. Not generated. Written by a human. The future maintainer reads this before they read your code.
## [2026-05-12] - 2.4.1
- Fixed billing rounding bug where orders with >100 line items
rounded the tax down by 1 cent. See incident 2026-05-09.
- Raised the partner gateway timeout from 30s to 47s. Coordinated with
the integrations team. Do not raise further.
The CHANGELOG is the only document that gets read in 2040. Make it count.
5. A short tour of the substrate you depend on right now
If you think your stack is modern, the following table is for you. The right column is the year the underlying protocol or format reached its current dominant form. Every one of these things runs in the path of the request that loaded this article.
| Layer | Protocol or format | Year |
|---|---|---|
| Network | TCP/IP | 1981 |
| Domain name | DNS | 1983 |
| Email transport | SMTP | 1982 |
| Email reading | IMAP | 1986 |
| Web transport | HTTP/1.1 | 1997 |
| Time format | Unix epoch | 1970 |
| Text encoding | UTF-8 | 1993 |
| Image format | JPEG | 1992 |
| Image format | PNG | 1996 |
| Video format | H.264 | 2003 |
| Database query language | SQL | 1974 |
| Source control | Git | 2005 |
| Container format | Tar | 1979 |
| Shell | POSIX shell | 1989 |
The newest thing on that list is H.264, and it is 23 years old. Everything else has been there longer than most of the people reading this article have been alive. The "modern stack" is a thin veneer of frameworks over a substrate that predates the personal computer in most cases.
This is not bad news. It is the most stable substrate any creative discipline has ever had to work on. Painters change pigments every century. Architects change materials every generation. Software engineers work on a foundation that has been mostly stable for 40 years. That foundation is what makes everything we build possible.
6. The honest take
A tempting story sits here that goes "legacy is bad and we should kill it." That story misses the picture. The legacy systems stayed around because they work. A hundred million transactions a day stress-tested them, in front of regulators who would happily fine the carrier that broke them. The new systems will, eventually, earn the same proof. They have not yet.
The reasonable position lands at humility. We do not count as the first generation to write important software. We will not count as the last. The substrate predates us. The substrate will probably outlast us.
In a strange way, that picture reassures rather than worries. Microsoft cannot delete the printer driver. The fax machine still rings in your hospital. The work matters.
The bottom line
A driver deprecation that should have been routine got walked back because the substrate it sits on is older, weirder, and more important than the people deprecating it remembered. Healthcare runs on fax. Banking runs on COBOL. Your job, whatever you ship next, is going to land in someone's legacy/ directory eventually. Write it like the next person matters.
Question for the comments: what is the oldest piece of infrastructure your job still depends on, and how surprised would your CTO be to learn it is in the critical path?
GDS K S · thegdsks.com · follow on X @thegdsks
The most modern thing in your stack is the part that is about to be legacy.