4 ms·
Here are some concrete issues. These aren't "web is bad" kind of things but more like "sometimes the web is bad at certain tasks and that can't easily be fixed"
by mike_hearn 4y ago
Here are some concrete issues. These aren't "web is bad" kind of things but more like "sometimes the web is bad at certain tasks and that can't easily be fixed".
1. Not layered in any meaningful way. Seen another way: you can't implement a web browser using web tech.
This matters because a typical way to write apps outside the web is to pick an opinionated high level platform that you think will do what you want, but if it turns out at some point to not quite work in one part of your app you can drop down to a lower level. You can use the operating system's text rendering but you don't have to, and if you don't for some reason you won't really lose much performance because you can use the same lower level APIs that the OS's own text rendering library uses. This ability to drop down a level when you hit the limits of an upper level is significantly limits development risk and makes planning easier, because you know you will always be able to do something, it's just a question of effort. On the web, if you hit the limits of the platform, you're just SOL.
2. GUI only paradigm. Useless for CLI apps, servers, etc. There's no deep reason for this beyond history, inertia, business models and so on.
3. No working notion of software components. This has actually got worse with time: web components got rolled back, plugins were removed, HTML includes don't exist. That's something ViolaWWW got right in 1992! The web's leading component technology is React which doesn't even come from browsers and browsers lack obvious features it could use to improve performance. See how Sciter doesn't even need ReactJS core at all because they've got a DOM extension that does DOM diffing and patching in C++, but regular browsers don't!
4. The DOM model is not high performance. It's highly optimized in Chrome for what it does but the DOM is an extremely complex and generic system that nonetheless fails to deliver modern and competitive widgets causing a high level GUI API to be treated as if it's "low level", even though it isn't. It can't really remove anything, so browser code is absolutely full of slow branches, lookups, workarounds and so on. If you take it as given then browsers are fast because Google and Apple invested so much into it, but if you take a step back and say "what's the best way to render documents and GUIs fast" then it's not that great.
5. The web is absolutely not malleable as a platform. It's not at all bazaar like. Take just one obvious pain point where some malleability would be nice - a malleable system would let you use non-JS languages! The web's current attempt at this is WebAssembly, which can't do anything useful unless you call into JS to do it, which imposes a large performance penalty vs native code and which doesn't even really work for anything higher level than C++ or Rust. If the web was malleable someone would have fixed that years ago, but in reality the web can only be changed by Google and only via a convoluted and opaque political process.
Don't get me wrong, the web gets a LOT right! There are dozens if not hundreds of lessons to learn from its success. But the critics do have concrete issues.
- dmitriid 4y ago> web components got rolled back Unfortunately, they haven't. Google especially pushes them at every opportunity, and they are poisoning the web. E.g. Scoped CSS that covers about 80% of what web components are used for cannot progress because now it has to account for weird corner cases in the Shadow DOM. Meanwhile none of the major and very few of the new frameworks view web components as a viable foundation. They still have multiple issues that will maybe someday be solved by throwing more and more Javascript at them (see how incompatibility with forms was "solved")