I have an original theory, and it goes like this.<p>Generalizing, tech progress swings repeatedly and unpredictably between three optimands or poles: Developer-first, User-first, and Machine-first.<p>Developer-first tech is like Flash -- it's powerful because the developer experience is powerful. The quality and profusion of great products drives the adoption and other network effects. Yet these programs tend to be heavier (non-optimal for machines) and, for lack of a better term, frou-frou-ier; the ease of applying themes and styles promotes 'mystery UI', where the dev reinvents (or more commonly, balderizes) the visual language of the user interface. Flash apps always had ornate, ridiculous scroll bars and buttons and so forth, mostly because the DX made customization so easy, and this imposed a sort of psychological tax on the users, often to the point of compromising the user experience.<p>By contrast, user-first tech emphasizes the experience of the end user or consumer. For example, HTML5/CSS3 is harder to author than Flash, but, as an open standard, offered the end-user choice of platform and graceful degradation on mobile.<p>That said, user-first tech can often have terrible developer experience (DX), and that is very true of HTML5/CSS3. It's basically coders-only, for certain lightweight values of the word 'code'.<p>Finally, there is machine-first tech -- apps that prioritize the machine's experience. This family of tools generally pursues performance at the expense of both the developer and the user. Generally one can think of Moore's Law as describing an asymptotic decline in the importance of what I'll haltingly call 'MX', because as machines get more powerful, it's less important to cater to them.<p>So you can think of the birth of the web as a move away from optimizing for MX towards optimizing some balance of DX or UX, but which of those two other poles picks up the bounty of Moore's Law is up to fashion, social trends, etc.<p>Finally, it's common for premature market anticipation of MX-shedding to drive clumsy, non-performant solutions that privileged DX or UX (or both) to such a degree that the machines simply don't like to run it much anymore. In other words, people overshoot in their attempts to optimize DX, UX, or both, and in doing so compromise the machine's experience of that code. When this happens, the market tends to lurch back towards MX. I perceive the move to (say) Rust from higher-level languages (Python, etc) as an example of trading off DX and even UX for MX. Arguably, Wayland does this as well, shedding both UX and DX considerations to improve machine-oriented properties such as security.<p>Going deeper, one could think of MX as being 'hardware-owner-first', as machines are not the sort of things that can have genuine experiences of their own -- however, animism is a useful form of lossy compression here.