| > This is pretty funny distinction to make Is it? Wikipedia says: "A web application (or web app) is application software that is created with web technologies and runs via a web browser." > It's hardly a surprise you find web apps inferior if you define them so. Then I guess we agree :-). > A browser adds cross-platform ease for devs and a sandbox for security at a slight performance cost. Mobile apps also run in a sandbox. But a sandbox does not magically remove all security concerns. My point about security was regarding end-to-end encryption. If you don't trust the server, then the model where you dynamically execute whatever the server sends you every time you use the app is fundamentally a problem. I assume it is the reason why you cannot run Signal in the browser even though they distribute an ElectronJS desktop app (I believe it's ElectronJS?). > A store adds gatekeeping (for better or worse) and a 30% tax. Sure, but that's not all of it. A store adds a third-party intermediary: - If Signal wants you specifically to run a modified version of their client that will leak your key to the Signal owners, they have to get Google to serve you a different version of their app, and hope that you don't compare it with someone else (which you can trivially do with an app). In other words they have to collude, and if you really care you may well realise it. - If Google wants you specifically to run a modified version of Signal that will leak your key to Google, they have to make the Signal Foundation sign their modified build, otherwise your phone will refuse to install the update. They also have to hope that you don't compare it with someone else. In other words they have to collude, and if you care you may well realise it. - If ProtonMail wants you specifically to run a modified version of their web client that will leak your key to Proton, they can just serve a different version of the client this one time only, just for you. They don't have to collude with anyone else, AND there is absolutely no reasonable way for you to realise it. It's not "UX choices", it's the difference between "reasonable end-to-end encryption" and "having to trust the server". |
To all your points about a 3rd party intermediary, fair! Such an intermediary can be valuable. But whether we go through an intermediary is orthogonal to whether our app is running in a browser. Native apps can be installed without intermediaries (if your OS isn't evil) and there's no reason you couldn't build an intermediary for web apps.
As for your ProtonMail example... you got pwned. They just handed you some new code to run and you ran it. You could have ran the old code instead. You could have gotten a message saying "would you like to update?". You could compare the hash of content you received with others, tipping you off if you're being targeted.
To that, I imagine you say "but there's no reasonable way to do that stuff!"
And you'd be right. None of that is practical. Why is that? Is it some inherent difference between native code and code running in a sandbox? I think not.