2 min read
Every program attempts to expand until it can read mail.
Takeaways
- Feature creep is unavoidable. Over time, software tends to accumulate more features, leading to software bloat.
- A lean, minimal application that gains popularity will continually add features until it becomes as complex as its competitors.
- Programs expand because users (and product managers) keep asking for ‘just one more feature’. There is constant pressure to incorporate popular capabilities to keep users from leaving for other tools.
- Each new feature increases complexity, which makes the product confusing for users. Developers should protect the tool’s focus and resist platform sprawl.
Overview
Zawinski’s Law is a humorous observation about software evolution stating that applications continually gain features until they do everything, even things completely outside their original scope. It highlights feature creep, the gradual expansion of scope in software development.
As an application attracts more users, it faces growing expectations to add more capabilities. A basic note-taking app might later incorporate chat or sharing.
Zawinski’s point was about “platformization”: once users live in an app for a significant part of their day, there is pressure for that app to become a platform that can do everything. Unchecked expansion can sabotage a product’s original value. Adding features is easy, but adding only the right features and saying “no” to the rest is essential.
Zawinski’s Law
Examples
Netscape Navigator grew from a slim browser into Netscape Communicator, an expansive suite with browser, email, news, and web editing. It became sluggish and over-complicated, paving the way for Firefox, which deliberately stripped down to just a fast browser. Firefox itself later became heavier with plugins and themes.
Slack set out to “kill email” but integrated voice calls, video meetings, file sharing, bots, and app plugins. It now wants to be a one-stop workplace hub, far beyond simple messaging.
GitHub started hosting code, then expanded to issue tracking, wikis, project boards, discussions, CI pipelines, and package registries.
Origins
Jamie Zawinski (known as jwz) formulated this law around 1995 during his time at Netscape. He was a key programmer on Netscape Navigator and later added the integrated Netscape Mail reader.
He described the browser’s evolution as “our contribution to the proof of the Law of Software Envelopment.” Netscape started as a web browser but by version 2.0-3.0 had expanded to include an email client and news reader.
“Reading mail” was the chosen example because in the mid-90s, you often had to exit your current application and launch a mail program separately.
Further Reading
Want to go deeper?
All 63+ laws are covered with more depth, examples, and practical guidance in the Laws of Software Engineering book.
Last updated: July 20, 2026

Comments
Nothing yet. Say the first thing.
Sign in to join the conversation.