Zawinski's Law was Never About Email

Social connection is one of the main drivers of software feature expansion

by on

Jamie Zawinski (jwz) is a programmer who made significant contributions to Netscape Navigator, Netscape Mail, Mozilla and Emacs. He famously coined Zawinski’s Law, which states:

Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.

Most readings online are lenient when parsing this law, while they agree that it still captures something true about software development today. The consensus reads this as characterizing the tendency applications have towards software feature bloat. Utility programs like compilers, drivers, windowing managers are excluded. We also can agree that it is no longer specifically email which is the attracting feature for software projects.

However, to say this law is just about software feature bloat is to miss a core piece of the puzzle. It was no accident that “reading mail” was jwz’s identified feature to subsume all applications. I propose that the underlying mechanism that he identified is still at work today, even if it has shed its POP3/SMTP skin.

That motive force is the human desire for social connection. The human experience fundamentally yearns for connection, and a lot of the productive (as well as unproductive!) time we spend on a computer can gain value when shared with other people.

And so, as your application grows in features, the more relevant and compelling it becomes to enable seamless sharing your experiences with others. I think this drive towards social connection is the core of Zawinski’s Law. This also becomes a powerful lens through which to view evolving software ecosystems and see what’s missing.

Restated, it says:

All applications grow until they connect their users to each other, or are replaced by ones that do.

Appendix: Some Examples of this Law in Action

With ten minutes of brainstorming I was able to come up with this list of software tools that have grown the ability to mediate communication between users. I’m sure you can think of many more.

  • The Sharing/Commenting/Notification ability in Google Docs/Office 365/Dropbox Paper and similar
  • Staying on Google, Google Maps provides shared maps, which are useful for planning trips or highlighting favourite spots around town
  • Google Calendar makes heavy use of email for appointments and reminders
  • All of the different ways to contact and message people in LinkedIn
  • Venmo, a payments app, has a feed and a way to see who your friends are paying and why
  • Duolingo, a language learning app, has a leaderboard and allows you to encourage friends who are on a streak or just coming back after a break
  • Software creation is an inherently social activity, and so it’s no surprise that forges such as GitHub and GitLab have to provide many social features as table stakes