by wayoverthecloud on 4/2/24, 10:47 PM with 41 comments
I am well-versed in web tech, C++, Python. I have done my research and here's what I arrived at. I would love it if HN people weighed in.
Mac: Users are used to paying for apps. Swift looks good. But very low market share compared to Windows.
Windows: Too many ways of doing things and too much options(C# WPF, Winforms).
Cross-platform(This would be best for me): Electron/Tauri/Wxwidgets/Qt. Electron is a whole browser. Tauri uses the default web view but that means I'll have to configure for every platforms. And also Tauri is not great with documentation. I am weighing between wxwidgets and QT but QT needs a commercial license which is pretty expensive. Wxwidgets is at least native. But looks almost dead?
I would appreciate any personal opinions. Thanks!
by lagrange77 on 4/2/24, 11:12 PM
You get process spawning / IPC access via node and the view layer is easy to implement and change. Especially for 'custom views', which you'll likely want for a fancy/sleek UI. The main downside of Electron imo, the large binary filesize, won't be that important to your target group i guess.
by pseudocomposer on 4/2/24, 11:26 PM
It also leaves open the possibility of eventually supporting your app on web (with, say, a backend or even WASM doing the FFMPEG stuff). Few desktop UI lots offer this.
by gisborne on 4/3/24, 2:07 AM
But no-one hires Flutter developers at least in the US and Canada. It’s pretty popular in India and China and some other parts, but you’ll struggle if you want to find work doing this, or if you try to hire someone to do it (although the latter wouldn’t be terrible, and you’d be hiring someone who’s choosing a tool for its virtues, not just its market share).
If those considerations bother you, then Electron or something lighter weight like Gluon or Electrino.
The other major alternative is React Native. You should look at that also.
But if this is really just you, Flutter, no contest. Desktop, mobile and even web (although it is not ideal for just a web app, but it would let you offer a web version with minimal extra affort, and it’s improving in this area rapidly).
by stephc_int13 on 4/2/24, 11:20 PM
I would also consider SDL or Raylib if you don't mind having to code your own UI. It is not that difficult in practice, most music software have their own custom built UI and that gives them a lot more personality than generic stuff, IMO.
by this_machine on 4/3/24, 12:47 AM
Are you sure about that? Most of Qt for desktop is licensed under LGPL or similarly permissive licenses that don't require you to open source your project or pay licensing fees.
Some specialized components in Qt are GPL/commercial, but those are for things like automotive use.
I use Qt/QML for desktop applications and never had to buy a license.
Check this out[1] and sort by license to see if you're actually using modules that require a commercial license. Chances are you aren't.
by marklar423 on 4/2/24, 11:39 PM
By this I mean put as much of your core logic and functionality as possible into a shared library, and then make a separate Swift/WinForms/whatever codebase for the UI of each native platform you want to target. Each UI app would call into your shared library.
There is a bit of duplicate work in making separate UIs, but the UX is far superior (IMO) and you have the advantage of not needing workarounds or plugins to access platform-specific features.
by wombat-man on 4/2/24, 11:25 PM
by gigapotential on 4/2/24, 11:42 PM
Because of the programming choices of Rust for application/backend and Typescript for frontend - Tauri was perfect fit for me.
So far Tauri documentation has been sufficient (and good) for me to achieve what I wanted inside the application. However, platform specific packaging required extra effort because the app required installation of system service/daemon in addition to the frontend app binary - so platform specific pre-install and post-install scripts which setup (or remove on uninstall) those daemon services were not natively supported in Tauri packaging.
You can browse the code here to see what it takes to package and sign installer for various desktop platforms: https://github.com/upvpn/upvpn-app
by iroddis on 4/2/24, 11:39 PM
by Gys on 4/3/24, 10:22 AM
I dislike to install browser based apps so I prefer not to build those myself either.
by NegativeLatency on 4/2/24, 11:39 PM
Might want to do some investigation on your web analytics to see what percentage of your uses are on mac if you're looking to have some justification for making a mac native app.
by mamcx on 4/3/24, 12:15 AM
For example, because I work on business apps, I need a solid "DataTable". Na dit needs a lot of features to be useful. And need to be fast, so my 1sec queries run in 1sec, not 10secs.
So, look for what is the hardest problems then which UI toolkit solve them.
by brettkromkamp on 4/3/24, 5:29 AM
by yoav on 4/3/24, 8:40 PM
It’s like tauri, but instead of rust you write typescript.
by turtlebits on 4/2/24, 11:29 PM
by rcarmo on 4/3/24, 8:47 AM
by Triangle9349 on 4/3/24, 1:01 PM
15 Apps Created using the Godot: https://www.youtube.com/watch?v=7jJ-3DJN1yI
by mepian on 4/2/24, 11:12 PM
by esafak on 4/2/24, 11:28 PM
by zulu-inuoe on 4/2/24, 11:52 PM
by lazyeye on 4/3/24, 8:33 AM
by chainingsolid on 4/2/24, 11:49 PM
by LorenDB on 4/3/24, 7:23 PM
If you go to the effort of making your app cross-platform, please go ahead and add official Linux support as well. I don't personally have a need for your app, but I'd love to see more apps for the Linux ecosystem that aren't just "we built a FOSS alternative because $SOFTWARE doesn't support Linux".
by linster on 4/3/24, 12:27 AM
by datavirtue on 4/3/24, 12:23 AM
by seamofster on 4/2/24, 11:52 PM
by neonsunset on 4/3/24, 11:21 AM
by thealistra on 4/3/24, 1:44 AM
Yet again don’t overinvest time in doing it perfectly the first time because you will never ship.