XML as a Practical Domain-Specific Language in Government Software: Lessons from the IRS Tax Withholding Estimator
By
y1n0
A five-star bake. Worth schmearing, sharing, saving.
Summary
The article discusses the author's experience leading the IRS's new open-source Tax Withholding Estimator (TWE) project, using it as a case study to explore XML as a domain-specific language (DSL). The author argues that XML, despite being widely criticized, serves as a 'cheap DSL' - a pragmatic solution for government software projects where resources are limited. The article examines XML's strengths (human-readable, tool support, validation) and weaknesses (verbosity, complexity) in the context of public sector software development, where constraints like budget, legacy systems, and regulatory requirements make XML a practical choice despite its technical shortcomings.
Key quotes
· 5 pulledXML is a cheap DSL. It's not a great DSL, but it's a cheap one.
In government software, you're not building for the future. You're building for the present, with the tools you have, for the people who need it now.
The IRS's new Tax Withholding Estimator is free, open source, and, in a major first for the IRS, open for public contributions.
XML's greatest strength is also its greatest weakness: it's human-readable, but that readability comes at the cost of verbosity.
Public sector software exists in a world of constraints: budget constraints, time constraints, regulatory constraints, and legacy system constraints.
You might also wanna read
Why Average LLM Use Is Likely Destroying Value in Software Development
The author argues that, contrary to prevailing hype, the average use of Large Language Models (LLMs) is likely destroying value rather than
How AI Accelerated Prototyping: From Idea to Tangible in Record Time
The author reflects on how AI has transformed their prototyping workflow. Previously, the biggest bottleneck was the time needed to scaffold
GitLab 19.0 launches with Secrets Manager, agentic workflows, and self-hosted AI models
GitLab 19.0 has been released, positioning itself as an intelligent orchestration platform for DevSecOps. The release includes expanded secr
bit.ly·23h agoCentralizing Error Handling in Rust with Custom AppError Enums
This article discusses the importance of centralizing error handling in Rust applications using a custom AppError enum combined with map_err
Zig Devlog: Build System Rework Separates Maker and Configurer Processes
This devlog entry from the Zig programming language project announces a major rework of the build system, separating the maker process from
Study finds most developers refuse to code without AI, raising quality concerns
A February 2026 study by AI research lab METR reveals that most developers now refuse to work without AI coding tools. While these tools hel
