The third-system effect describes a simple system rising like a phoenix out of the ashes of a system that collapsed under its own complexity.
A notorious ‘second-system effect’ often afflicts the successors of small experimental prototypes. The urge to add everything that was left out the first time around all too frequently leads to huge and overcomplicated design. Less well known, because less common, is the ‘third-system effect’: sometimes, after the second system has collapsed of its own weight, there is a chance to go back to simplicity and get it right.
From The Art of Unix Programming by Eric S. Raymond. Available online here.
Raymond says that Unix was such a third system. What are other examples of the third-system effect?
Maybe Firefox after the collapse of Netscape?
Java?
JSON, after all that ridiculous SOAP business.
JSON’s a great example. It might even be a fourth-generation simplification, starting with RPC, then DCOM/Corba, then SOAP. Or maybe you could group DCOM and Corba as part of RPC. REST might also quality as a third-generation successor to SOAP.
XML was a simplification of SGML, but I don’t know how complex or how successful SGML was.
– Apple (and Steve Jobs himself)
– Robert Downey Jr et al.
– Not a really good example, but: windowz -> vista -> 7
Firefox is a good example. Netscape began rather simply then grew progressively more bloated over time and under successive rewrites. Netscape collapsed in the midst of one such rewrite and then dumped the mangled code base on the world as an open source project. The Mozilla browser began as a mirror of Netscape’s excessive bloat, limiting its popularity. Then the rebel phoenix (later Firefox) project forked the Mozilla project and created a cut-down, lean and trim version of the browser and eventually met with huge popularity and became the main focus of development effort within the Mozilla foundation.
On Windows, you could argue that Windows NT was the third system:
RSX-11 -> VAX/VMS -> Windows NT
The Windows NT kernel, compared with VMS, is a nice clean thing. The Win32 layers on top were imposed by backwards compatibility and aren’t really “Windows NT” per se.
Seventh Edition Unix -> 1980s Unix -> Plan 9.
Nobody said it had to be successful.
I think there might be an oscillation, with the amplitude gradually decreasing. Brooks, when describing the second system effect, might have not seen change over enough time to see third, fourth, etc. systems.
For example, after Unix/C, we had Plan 9/Alef, then Inferno/Limbo and now there is Go (without an associated operating system).
Rob Pike on Go “… you can get more in the long run by taking things away”. In a way, this is a description of the third system effect. Then features get added to Go, until there are too many, and then something else emerges.