@jrm4 @noxypaws @obsolescentsapien @drazraeltod @pluralistic
So pros:
-They take up more space
-more overhead (debatable — what does this mean? They're usually more processor, memory, and battery efficient)
-They're harder to audit (debatable — web applications are typically sent over as highly obfuscated and minified code that's difficult to audit as well and it's a whole problem the FSF has spoken about)
- very frequently they're doing unintended/hidden/unreported data collection on users ( again web applications are just as if not more guilty of this and have structural problems with preventing this as well as I objectively described in my previous reply)
- And they can be limited by device/proprietary in harmful ways. (web applications are also proprietary and often do a lot of stuff on a proprietary server backend that you never see anyway)
Cons:
- probably collect and phone home with even more data
- execute in a runtime (the browser) that has to get increasingly more bloated in order to accommodate modern web apps until it basically reinvents the entire native toolkit of whatever phone the browser is running on in order to give applications full capabilities while having fewer resources dedicated to security and a less secure process and execution structure then the operating system it's essentially trying to reinvent
- built on a technology stack that is from the ground up simply not designed for advanced interactive user interfaces (HTML, the DOM, etc struggle to properly encapsulate user interface elements and reuse them) and while it can be contorted to create them the underlying technology stack used to do that (such as react or angular) is typically extremely fragile and insecure (see the various NPM fiascos) and simply does not have the features to properly emulate native app features such as proper touch surfaces or swiping gestures or background processes or push notifications
- requires you to be online to even get the interface at all so there's no possibility of graceful degradation from functionality offered when you're online to functionality offered when you're offline
- requires you to wait for the interface to load every single time
- inherent performance penalties for running on top of a whole nother application instead of running natively