5 ms·
I can't say that this is a problem specifically in the web. The landscape is littered with C frameworks, C++ frameworks, Java frameworks, .NET frameworks, and
by just2n 14y ago
I can't say that this is a problem specifically in the web.
The landscape is littered with C frameworks, C++ frameworks, Java frameworks, .NET frameworks, and so on for every other language, that serves to abstract so much from the basics that it becomes so difficult to do basic things the <insert framework here>-way. The problem is that instead of being ancillary and supporting productivity, they are opinionated and try to do EVERYTHING for you, which just makes them really crappy DSLs.
This just happens to occur on the web a lot more because what we have to work with is inconsistent, sometimes poorly implemented, and confusing as hell to new players. So everyone and their dog tries to "solve" developing web applications by making you believe the DOM doesn't exist (jQuery, MooTools, etc). Some think HTML and CSS are too complicated and try to get you to believe those don't exist either (Ext, etc). Then some want you to forget that Javascript ever existed, or to make Javascript less Javascripty (GWT, Prototype/MooTools, etc).
The end result is a lot of opinionated dogma that rarely actually help us get things done (or get in the way more than help). If you pick a big framework, it's usually very good at whatever it was designed to build. But if you want to build something even slightly outside of that set, it becomes a massive cluster-fuck of WTF-inducing horrifying debugging and pain. Only the lightweight libraries that are massive value adds without enforcing a specific dogma on the user have been extremely successful.
The problem is that everyone is too opinionated and makes their software try to do your job for you. It's not really about the ease of use, it's about the ease of integration, extension, and whether they make our jobs easier or nightmarish. Yes, the web foundation is far from perfect, or even great, but most of these frameworks are far, far worse, since they massively and arbitrarily limit what you can do for the sake of some vision of simplicity.
The same problem exists in the native world. There is no consistent presentation layer that rivals the web, and even it isn't fully consistent (all browsers are different, and even the same browser on different platforms can behave differently). But it's a far cry from anything else.
As an aside, since JS isn't assembly, using it as a compile target to build applications foregoes a lot of the other fundamental technologies in a web browser. Sure, you might be able to compile <insert language here> into JS and have an application run in the browser, but that necessarily implies you're doing things like building the DOM manually, and sites like this tend to have significant performance issues. If you want it to work well, the best way currently is by using HTML/CSS/JS and by not letting a gigantic framework pretend that those things don't exist.