Zawinski’s Law was coined by James Werner Zawinski to express his comments on the concept of software bloating.
He names the law ‘Law of Software Envelopment’ as it states that “Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.” In laymen language, those programs which cannot so expand are replaced by ones which can.
The law relates the pressure of popularity with the phenomenon of software bloating. Software bloating occurs when you keep adding features to a piece of software, often beyond the point where they’re actually useful.
The law is not entirely about software bloat, it’s also about the complexities and realities of the market. People might say that they want a simple product, but when we look at actual figures of usage, the things that widely get used are the things that allow users to do more, and they eventually replace less-capable tools.
The law brings out Zawinski’s belief that all truly useful programs undergo pressure to evolve into toolkits and application platforms.
The law actually addresses the real need of end users to keep together tools for interrelated tasks, even though for a coder implementation of these tools clearly consists of independent jobs.
Perhaps, Sometimes in order to provide simplicity for the user, we need to embrace complexity for the developer. Other times it is the poison pill that destroys our application utterly.
Today, the law is more relevant than ever. The only difference is that instead of email, it’s all about chat and voice calls these days. Applications are developing and growing like weed. Every program attempts to expand until it embeds WhatsApp-like functionality.
For Example: Snapchat has video call system now, theirs is a live and reel option on instagram, you can post stories on facebook!
Zawinski’s Law is the description of an effect than an engineering advice holds. It does not tell which solutions are good and which are bad.