5 ms·
We badly need something like this but mature. Cross-platform UI development is a total mess with literally zero solutions ticking all the boxes. If you want to
by pshirshov 2y ago
We badly need something like this but mature.
Cross-platform UI development is a total mess with literally zero solutions ticking all the boxes.
If you want to write an app which will target all the major platforms (3 desktops and two mobiles), want a native look and minimal effort for every platform you target, there is nothing apart from QT. And it's a real pain to deal with unmanaged memory. Also, QT is a mess, you cannot define your interfaces declaratively (with QML) and easily interact with them from C++ code, you won't have any typings. So, you either have to go the ancient way of imperative UI definitions or do everything in QML which is total mess.
If you drop native look requirement, some small things like https://www.egui.rs/ https://www.egui.rs/ might work for you.
If you drop the minimal effort requirement, all the webivew based mess might help you but it won't be easy due to multiple reasons.
- Muromec 2y agoOr just face it -- making a crossplatform app is a work for 30 people and a QA department, not a hobby project.
- JackMorgan 2y agoIn the 1800s we could have faced that ploughing 300 acres would always need 30 horses and 30 strong laborers. Or that 64kB of RAM was plenty enough to make all the software we needed. I would rather always dream big and help invent the future.
- CSSer 2y agoIt’s not that we don’t want to dream. I’m right there with you. The issue with your examples is that they aren’t political but UI design languages are. Imagine if the UN appointed one ambassador to unilaterally represent every Slavic country simply because they all happen to speak similar languages or be located close to one another. The issue lies not with the implementation but the requirements themselves. Each platform has its own design philosophies that either conflict with other platforms or, in some cases, are simply so vague as to be incoherent. Sometimes it even looks like competitive subterfuge.
- Muromec 2y ago>Imagine if the UN appointed one ambassador to unilaterally represent every Slavic country simply because they all happen to speak similar languages or be located close to one another. That would immediately bring the world one step closed to the peace in the Middle East
- foldr 2y ago> That would immediately bring the world one step closed to the peace in the Middle East There was a line from the Onion’s vox pop series that summed the situation up perfectly: “In these times of division and strife, they should turn to the Bible for help.”
- shortrounddev2 2y agoI think tailoring each app to the platform you're targeting will always look better than cutting corners. Especially if you can integrate your app into the native styles of the target platform rather than just embedding custom CSS into every application so the target platforms lose all character entirely
- Muromec 2y agoIt depends on who you ask whether software development is like agriculture or like some other types of work. Building a cathedral still takes about a 100 years like it did half a millenium ago.
- pshirshov 2y agoUnfortunately, yes. More or less. But it shouldn't be like that.
- pjc50 2y ago> will target all the major platforms (3 desktops and two mobiles), want a native look This is always a very serious pain point no matter what solution you pick: the native platforms all have different controls and ideas about what your UI should look like. It's inherently not possible to have a cross platform true native UI - the best you can get is reuse of models and controllers, with a different UI layer on top.
- pshirshov 2y ago> It's inherently not possible to have a cross platform true native UI QT does a relatively good job at that. It is possible. Of course there will be severe limitations, but in any case it would be better than total impossibility of building good looking multiplatform apps single-handedly.
- dathinab 2y agoin my experience for companies this "limitations" get very fast sever enough for them to stop doing it doesn't mean they don't use QT on all platforms but with different impl. for each with very little shared UI code if any (but often shared code behind the UI, e.g. business logic, data validation etc.)
- afavour 2y agoIMO this is an impossible dream and folks need to stop chasing it. Particularly when you’re trying to do desktop and mobile in one, they’re just totally different paradigms. The alternative, which I have found far more preferable: code app logic in Rust, which can be mapped to Swift, Kotlin and JS (via WebAssembly). I’m sure Go, Zig or whatever is capable of similar, I’ve never explored it. Then map that shared code to native UI. SwiftUI and Android Compose are far from perfect but they’re 100x more understandable than what came before and have a lot in common with the React model of UI. It’s more work upfront but in the longer term I think it’s better to be using OS UI frameworks directly rather than adding a dependency between you and the OS.
- Groxx 2y agoYeah. The more time I've spent writing code, the more I'm convinced that a largely agnostic core and a thin UI per target is the only reasonable option. That "thin UI" can leverage a cross-platform toolkit for the long tail of lower value targets, that's completely reasonable because that's what they excel at. But you'll pay (a lot) for it later if it's not aggressively simple and disconnected from your internals, because those tend to have very painful major version migrations. As a bonus: doing it this way generally gets you MUCH simpler and more testable core systems, and MUCH better accessibility.
- tracker1 2y agoAs much as it sucks in a lot of ways, I think Tauri and similar embedded browser control options may be the best option today for cross-platform mostly native application logic. The browser's support of HTML+CSS is just that good. I would like to see tighter integration into at least platform configurations for the primary background, activity and accent colors and typography/fonts. Beyond this approaches, such as Material, etc are common enough that they don't feel too alien in applications. Maybe more so on mac, but still. At this point, if a tool doesn't support Windows, Mac AND Linux, I'm pretty unlikely to touch it. I know Linux is a minority here, but it's disproportionately large for developers on their own hardware at this point. I'm tired of working with things that don't advance what I can use on my own.
- smokel 2y ago> We badly need something like this One might also argue that we badly need just one desktop OS. For some reason this is not reality. Zooming in on the Linux platform, there is not even one native user interface to target for. If you really want this, then your best option is probably a web-based user interface.
- deleted 2y ago[deleted]
- deleted 2y ago[deleted]
- Jean-Papoulos 2y agoFlutter has all platforms (at least when it comes to pure UI) with native appearances. It won't take you very far though, mainly because a desktop app is wildly different in usage to a mobile app. I don't know why people keep insisting on having everything in the same codebase, which not have a page for Desktop and a page for mobile, with the business logic in common only ?
- tracker1 2y agoDon't get me wrong, I like Flutter... but it isn't exactly native UX on any platform. And it's a large part of why my own take is that embedded browser platforms (Tauri, Electron, etc) aren't actually so bad for a UI rendering surface and that you can go a long way with component styling that is at least closer to what the platform is doing (colors, fonts, etc). You can use a Material approach, and enough apps are similar enough to this, even in the various platforms that it can look "close enough" for many or even most things. Though Mac will be more oddly out as their apps tend to be far more consistent than with Windows or Linux.
- dathinab 2y ago> want a native look and minimal effort for every platform you target IMHO this is impossible (through a bit dependent on how you would interpret the previous sentence) the way you would properly structure a app from a UI and especially UX perspective on mobile is often fundamental different then for desktop. Partially due to one group being mainly keyboard+mouse and one being mainly touch, partially due to one being mainly on "small screens" and one being mainly on at least 13" screens (tablets and very small Laptops are in a unlucky in-between spot) to make things worse iOS and Android have diverged quite a bit wrt. "what is intuitive/expected" through you can ease that issue by having just a slightly native look, but that can easily fall into a uncanny valley, and for proper UX you need to at least follow the native input handling, as in keyboard shortcuts, gestures, navigation patterns this is why IMO "Cross-platform UI development is a total mess with literally zero solutions ticking all the boxes." is a mess because solutions end up either in a uncanny valley by being somewhat but not quite native for all platforms or in a good for one but not other platforms corner or you need to add a lot of manual platform specific customization. Worse it's often a mix where for some features some of the points above apply but for other features others... through this doesn't mean you can't share stuff, e.g. sharing app business logic is quite viable, sharing complicated UI/UX logic for unusual custom elements is harder but should also work, but in the end (if you can afford it) using a platform specific UI library for Android, iOS is probably the right way to go. Through for desktop IMHO outside of having to have different Keyboard shortcuts you probably could use a mostly one size fit's all solution with at most slight tweaks.
- looop101 2y agoThere is one solution and it's Lazarus IDE, and I'm yet to see a better/easier solution that delivers what it delivers. - Native and easy UI on the three major platforms along with many more. - Self-contained executable. (Zero dependency) - Completely free and open-source. - No restrictions on commercial products (unlike Qt). Assuming no specific OS calls (or contained within IFDEF checks), you get your project you created on Windows and simply compile it on any Linux distro and you get a self-contained that will work for any other distro by simply publishing the executable. It's a shame that this tool isn't mainstream for what it can deliver. Most complains I see are of those "old is bad, new is good" or "I want mah curly braces", referring to Pascal.
- niutech 2y agoNot only Qt is cross-platform. There are: GTK+, Xamarin, NAppGUI and even React Native.