The Web platform is an abject failure of layering. It's truly the biggest ball of mud that software has yet birthed. If it had only reasonable modularity its implementation would be large integer factors <i>less</i> code and it would not be necessary to wait on three browser engines to ship obscure (declarative!) features for CSS, like dropshadows, which could easily be programmed on top of a better designed, simpler core.<p>And don't even get me started on "accessibility". The web's barely-acceptable kludges for accessibility could easily be accommodated in a layered, more programmable system.<p>The web platform is rife with abstraction inversion, employs declarativity where programmability is necessary, and vice versa. It puts magic in pretty much all the wrong spots. And its event-based programming model that puts all JS on the "main" (actually UI) "thread", forcing a painful and awkward asynchronous programming model that we are gaslighting into believing is good for us, is frankly just dumb. But the web has always thought designers and developers are dumb, so it's fair play to just hate it right back.