3 ms·
> Because for a team of competent folks, I really don't see any massive barrier to creating a cross-platform, desktop-only GUI framework Here's one: cross-plat
by warning26 4y ago
> Because for a team of competent folks, I really don't see any massive barrier to creating a cross-platform, desktop-only GUI framework
Here's one: cross-platform GUI apps will, without exception, feel subtly wrong on every platform. Each platform has its own "way" of doing things.
- Macha 4y agoRight, but the alternative is rarely a native app for each platform, it's Electron in most cases. I imagine you could make something that at least gives you as much opportunity to fit in as electron, with accessibility support, and some new ideas, be it from a development paradigm, inbuilt widget sets, or something else.
- ryandrake 4y agoI mean, the better (for users, maybe not for developers) alternative is to buck up and build a native client for each platform. Share as much code as you can portably, but you'll have a small platform-specific shim around the edges to call into the shared business logic and implement the platform-specific window management and bling.
- karencarits 4y agoYes, this is very reasonable for some kinds of software. For other kinds of software, the users may consist of a small team - say the teachers at a school or a specific research group or a family - where some are using Mac and others are using Windows Sometimes, developing a simple tools should be simple (without all the overhead of shared business logic, etc.), but in my experience, there is too many obstacles to make simple GUI tools that just works. It's a shame, I believe that many teams would have increased their efficiency if there were easier ways for individuals to make simple tools adapted to their specific needs. Now, they are typically stuck with Excel...
- krapp 4y ago>but you'll have a small platform-specific shim around the edges to call into the shared business logic and implement the platform-specific window management and bling No you won't. We've had cross-platform libraries like SDL to do that for ages.
- krapp 4y agoElectron isn't that revolutionary - it's basically just shipping applications in containers. It just happens that the container is a web browser, but it could just as well be the JVM or any language runtime with a GUI layer. The "interesting" part, if anything, is using a document-based paradigm to build a GUI-driven application, with separation of concerns between code, layout and semantics. But none of that has to be done with webcode.
- dragonwriter 4y ago> Electron isn't that revolutionary - it's basically just shipping applications in containers. It just happens that the container is a web browser Except that the backend part of the app doesn't run in the browser, it runs in Node. So it's not shipping applications in containers, even if one views a web browser as a container.
- krapp 4y ago>Here's one: cross-platform GUI apps will, without exception, feel subtly wrong on every platform. Each platform has its own "way" of doing things. You're stating as an objective fact what is you own aesthetic opinion. Yes, different platforms are different, and the same app behaves differently on different platforms. But most people don't switch platforms or use the same app on different platforms routinely, and it wasn't an issue prior to Electron, when the most likely manifestation of this would be the use of the same browser on different platforms.
- einherjae 4y agoYou’re reading it the wrong way around I think. Think in terms of cross platform applications that try to fit in on their host application, except they aren’t using the native widgets, similar to what Qt did historically. Then you have something that looks as if it should behave like a certain widgets you’re used to, except they behave in subtly different ways. That’s where that idea comes from. Now if you go all 90s WinAmp and create all your own widgets, then that mostly goes out the window, until you enter a text box…
- karencarits 4y agoBut is subtly feeling wrong a massive barrier? And feeling wrong for who - I would guess that it is mostly people who would have done fine without a GUI that would notice, for the others (or us all?), most GUI apps would feel slightly off anyway
- Animats 4y agoThere's an attempt to make this work for Rust desktop applications. There's the winit crate, which does cross-platform windowing and event loops. There's egui, for menus and subwindows. There's rfd, for file dialogs, which are special for security reasons. And there's wgpu, for cross-platform 3D. I'm using all of these in my ui-mock,[1] which is a GUI for a game without the game. It has 3D graphics with 2D GUI elements on top. I'm using this to shake down all the cross-platform problems for my metaverse client. My own code, which is 100% safe Rust, has no platform dependent code. Results are pretty good. There's minor dirty laundry in those libraries, which has been reported to the various maintainers. Stuff like this: - You can get a file dialog hidden behind the main window, which, in a full screen program, is a real problem. Mostly a Linux problem; works fine on Windows. - Full screen on Windows mode under Wine 7 crashes Wine. Known Wine bug. - Warnings from WGPU, but it works around all of them with some minor performance loss. - Cross-platform packaging, to make a Windows installer without Windows, isn't implemented yet. So, not big stuff. A lot of stuff works that you might not expect to work, such as profiling with tracy. Wgpu is taking care of Vulkan vs Apple's Metal. (Apple just had to Think Different, to the annoyance of everybody doing 3D.) Opening a web page in the default browser is cross-platform. You can cross-compile - I build the Windows version on Linux, without using any Microsoft tools. With some more work, I could make this work on WASM and Android as well, but that requires some special casing, mostly because WASM doesn't have proper threads. So cross-platform desktop development is working pretty well. Most of the problems I'm running into would not appear in a more typical application. [1] https://github.com/John-Nagle/ui-mock https://github.com/John-Nagle/ui-mock
- yw3410 4y agoWorth noting for c (and hence your niche language of choice via ffi) there is also glfw for windowing and webgpu-native which is from the same folk as wgpu. EDIT: and also libuv which is the cross platform event loop for node.
- Animats 4y agoIncidentally, if there's anyone into Windows installers and Rust, see [1][2] There's a Rust bundler for making installers cross-platform. Mac is done, Linux is partly done, and Windows needs someone familiar with the arcane world of Windows install files. [1] https://github.com/neovide/neovide/issues/1374 https://github.com/neovide/neovide/issues/1374 [2] https://github.com/burtonageo/cargo-bundle/issues/116 https://github.com/burtonageo/cargo-bundle/issues/116
- bmitc 4y ago> Here's one: cross-platform GUI apps will, without exception, feel subtly wrong on every platform. Each platform has its own "way" of doing things. Is that really true though? No one cares about this for webapps, so why do they care about it on desktop apps? In my opinion, this is one thing that web apps have taught people, in that there isn't much sense anymore about having OS-specific "look and feel", if that is even a thing, and I think the OS-makers agree because even Windows and macOS are chock full of inconsistencies. And in general, I hate moving across apps, like Visual Studio and Outlook for example, that adopt the OS-isms of their host OS, because it means you gotta learn the same app twice. About the only real difference are the way menu bars, toolbars, and docking are handled, and probably file pickers. Outside of that, I don't see why an app that looks the same across three different OSs is bad.
- indymike 4y ago> Is that really true though? No one cares about this for webapps, so why do they care about it on desktop apps? Web apps are easier to learn and functionality is more discoverable often at the price of having less functionality. Desktop apps are consistent, and have more functionality, but unlocking that functionality takes a lot of effort on the user's part.