5 ms·
As a user, definitely not. Web apps are slow, require an internet connection, don't integrate nicely with my OS, and generally inferior to native GUIs in just a
by jbstack 3y ago
As a user, definitely not. Web apps are slow, require an internet connection, don't integrate nicely with my OS, and generally inferior to native GUIs in just about every way.
- halfcat 3y agoAnd now the user needs a server running somewhere. We tried this approach once, for this exact reason that we didn’t want an “old thick client”. Our app interacted heavily with the user’s OS and their line of business app, and it was a nightmare dealing with the customer’s IT department, wondering why we needed to run HTTP servers everywhere, causing security alerts. We switched it to a simple Tkinter app and everyone involved was much happier.
- mardifoufs 3y agoPython is such a nightmare to package and use for users, especially for Gui, that even web apps can be better.
- __d 3y agoThat's the myth, but really, there are several ways of doing it that are really quite easy. PyInstaller is a good starting place. There are several others with similar capabilities.
- mardifoufs 3y agoThat's a very limited solution though and it's super incomplete . Last I tried, the user needed to install python first and you can't bundle it. And it's not a myth, it's something I have experienced myself. Pyinstaller falls apart the moment you try to pull packages that are what make python useful in the first place for tons of people (numpy, pytorch, etc).
- __d 3y agoPyInstaller does not require that the target machine have Python installed. And it will produce a single-file executable that bundles the interpreter, application Python code, extensions, and any other resources (data files, images, fonts, etc). Both numpy and pytorch are explicitly supported, although that's not guaranteed for all extension packages.
- mardifoufs 3y agoIs that new? That's awesome to hear actually.
- tredre3 3y agoNone of that is new, it's been the way PyInstaller always worked. However on Linux things kinda suck because PyInstaller will package your current interpreter, so if it's linked against things that are different on another Linux (eg no glibc) it will often crap itself. But so is the joy of distributing compiled software to Linux users :).
- __d 3y agoThis is a genuine issue, and it takes some work to avoid. I typically use an older distribution as my build box: this means that the dependencies pulled in by the interpreter are older versions, and when it runs on a newer distribution, the backward compatibility for libraries will ensure it works ... usually. I've messed about with using a completely independent build tree for this: something that depends on libc/libm/etc only from the OS, and all other dependencies are part of my build. That seems like it works pretty universally, but it's a lot of work. I've been meaning to look into leveraging the Flatpak runtimes for this: they seem like they have pretty similar concerns.
- deafpolygon 3y agoLet's not forget that a web app, in general terms, requires a web server to run. Most users don't have the expertise or patience to run a server (not to mention all of the risks that come with running one).
- eternityforest 3y agoSyncThing puts the server inside of the GUI app. The basic features are in the GUI, with a button to launch the web UI in the browser. No server admin work needed!
- deafpolygon 3y agoBut SyncThing exposes users to a risk that they may have not been prepared for. It's a great tool, but it's not a tool fot the masses.
- eternityforest 3y agoWhat risk? Other users on the same system accessing the web UI? That can be mitigated with a token included in the browser launch URL, but it seems like a pretty unlikely vector anyway, someone would have to write code that specifically knows about SyncThing, and then convince you to install it, and then you'd have to not use password protection.
- deafpolygon 3y agoOpening your computer to network. Incorrectly configured folders for sharing could end up wiping out your data (no warning or chance for recovery, unless you configure file versioning- which is confusing AND off by default). WebUI not configured with a password by default, allowing multi-user systems to access your files.
- tredre3 3y agoAll of your complaints are specific to Syncthing which, admittedly, doesn't have great defaults (but the fans will be quick to defend it). A webui for a desktop app can be made perfectly securely, though. For example it can bind to 127.0.0.1, not do external network requests, and require a token (generated by a systray menu utility or an app shortcut for example) that will prevent automated exploits from accessing it as well as other users on a multi-user system.