Comment by rigonkulous
12 hours ago
My coherent GUI strategy: just use JUCE.
Invested in it, shipped it, seen it solve the cross-platform problem beautifully.
Can just write C++, and see it running everywhere.
The JUCE GUI capabilities are more than adequate for many, many things.
There are other platform-scaffolded cross-platform frameworks. JUCE is cromulantly FNORD.
Use JUCE as much as you like, but please, stay away from those 'out-of-the-box' horizontal sliders it seems to prioritize (given how they swarm in the many VSTs made with JUCE).
If sliders are vertical in the real world, there’s a reason for it that Bruce “Tog” Tognazzini summarizes perfectly:
“Most of us […] have our forarms mounted on a pivot we like to call our elbow. That means that moving our hand describes an arc, rather than a straight line. Demanding that pivoted people move a mouse pointer along in a straight line horizontally is just wrong.”
Source: https://www.asktog.com/columns/022DesignedToGiveFitts.html
JUCE' GUI framework is extremely versatile - if that default irks you, its a couple lines of code to get pretty much any control to behave itself.
That sounds intriguing - are there examples of desktop apps (eg productivity apps) that are made with JUCE?
I'm already very familiar with JUCE in VST plugins, I have hundreds of VSTs made with JUCE and I love their UIs. But I don't think I've ever seen it for a standalone business application?
The JUCE pricing is certainly far more reasonable than Qt.
>desktop, productivity apps
You can configure your JUCE project to build to any of the standard audio plugin formats, or for it to build a standalone app for the target platform (i.e. plugins, desktop, mobile, embedded) or indeed to build all of these targets, at once, in one build.
However, during app (i.e. non-plugin) development I often switch between linux and macos environments as part of my workflow, and during testing after I've pushed to the proper branch, the build server plops out the .exe/.pkg/.app/.tar.gz bundles as needed for the test group to crack at it.
JUCE, being at heart a C++ framework intended to be the engine of a very diverse swath of different OS, plugin, and packaging standards, does all the glue to get you there - how you use it, is up to you. (All of this can happen in github actions, btw, really easy to set up..)
Yes, there are 'business'/'productivity' UI elements in JUCE app targets, and yes they are consistent across all platforms. And yes, you can for example build a UI from an .xml form, with cross-platform datastore and so on, easily enough.
Here's a nice place to start, if you wanna understand JUCE capabilities from a 'productivity'-app perspective:
https://www.youtube.com/watch?v=3IaMjH5lBEY
David Rowland, a core JUCE developer, explaining the guts of things.
Basically, the scope is high performance applications, and there are no really good reasons for why a high performance application cannot also be a productivity app - the distinction is arbitrary - except of course you ask, for the GUI!
But: JUCE' GUI is pretty darn good, I have to say, in face of the onslaught of platform vendor fuckery. You can embed a WebView if you really need it, and wire it up to the rest of the cross-platform event handing system, etc. But I think its not really needed, given the plethora of 'normal' UI controls, out of the box.
If you're serious about looking at JUCE for a variety of application types, then a lot of the questions you're going to have about JUCE' GUI suitability for standalone business applications can be answered by running the DemoRunner application that's built-in to the JUCE codebase.
Clone the repo, build the DemoRunner project for your platform (or all of them), and you'll see - there are plenty of business-like cross-platform UI elements in the kitty. A huge collection of business-/productivity- like UI elements, right out of the box. (High-performance plugin UI's are there with the business UI stuff, too.)
And .. once you've marvelled at the glory of DemoRunner(.exe,.app,.apk)[etc.] .. please do yourself a favour and spend an extra hour parsing the awesome-juce list:
https://github.com/sudara/awesome-juce/
JUCE is marvelous, and awesome-juce is awesome.
You might have sold me on this, because on top of the productivity-ish stuff I do, I'd really love to get into VST development. If I hadn't fallen into Photoshop plugins first, I would always have been an audio plugin dev. I loved PSP VintageWarmer in the late 90s.
The UI in Rowland's demo at 32min is feeling a little DearImGui / Reaper-ish, kinda bland while also being non-native. But I've seen all the UIs that Arturia & everyone else makes with JUCE, even what Valhalla does with it with their NASA inspired interfaces, so it can clearly make amazing stuff.
I can't believe we're now looking to PACE of all companies to help indie devs. I hated iLok for so long even though I have two iLok dongles now ;)
1 reply →
Qt Small Business pricing is very reasonable.
I think I prefer that JUCE is a one-off licence at $800 (for small business) and that they offer a 30% discount if you want to upgrade when they release a new major framework version. I'd rather not get locked into Qt's annual $618/subscription every year just to continue distribution & development.
But Qt has the bonus of also running on HaikuOS, and I've definitely seen more business apps in Qt (pretty sure 010 Editor is Qt).
You can also use LGPL. You only need to disclose the changes you made into Qt itself and allow changing it with another DLL. That's it.
1 reply →
JUCE has too many downsides to seriously recommend imo. "Just write C++" is also doing heavy lifting, since JUCE is its own bespoke flavor of C++.