26 ms·
Native desktop apps are great. The reason that people don't write them is because users aren't on "the desktop". "The desktop" is split between OS X and Windo
by jrockway 6y ago
Native desktop apps are great.
The reason that people don't write them is because users aren't on "the desktop". "The desktop" is split between OS X and Windows, and your Windows-app-compiled-for-Mac is going to annoy Mac users and your Mac-app-compiled-for-Windows is going to annoy Windows users. Then you realize that most users of computing devices actually just use their phone for everything, and your desktop app can't run on those. Then you realize that phones are split between Android and iOS, and there is the same problem there -- Android users won't like your iOS UI, and iOS users won't like your Android UI. Then there are tablets.
Meanwhile, your web app may not be as good as native apps, but at least you don't have to write it 6 times.
- fartcannon 6y agoAnd therefore, beware any OS attempts to break cross platform browser compatibility. Also I think you can deploy to all those things with Qt.
- camccar 6y agoAnd pay QT like 5,000 $ a year to keep it closed source. No thank you. Would rather write it 6 times. Or just use electron.
- Narishma 6y agoAFAIK you only have to pay if you modify Qt itself and don't want to release those changes.
- roblabla 6y agoQt is LGPL licensed is it not? LGPL license means you can distribute your app closed source, so long as the user can swap out the Qt implementation. This usually just means dynamic linking against Qt so the user can swap the DLL. The rest of your app can be kept closed source. On iOS and Android the situation might be a bit more complicated, but this discussion[0] seems to say that dynamically linking would also work there. [0]: https://wiki.qt.io/Licensing-talk-about-mobile-platforms https://wiki.qt.io/Licensing-talk-about-mobile-platforms
- api 6y agoQt doesn't require that but even if it did writing it 6 times is vastly more expensive. People would just rather spend 500k on writing it 6 times than 5k on a license because they are somehow offended at the notion of paying for dev software or tooling. It's a major reason UI coding sucks. There is no incentive for anyone to make it not suck, and the work required to build a modern UI library and tooling is far beyond what hobbyist or spare time coders could ever attempt.
- camccar 6y agoYeah it is. The barrier to entry into n graphics programming is huge. Just try drawing a line in vulkin
- detaro 6y agoQt is mostly LGPL. It's really not that hard to comply with that on desktop, and doesn't require you opening your source code.
- camccar 6y agoIt’s hard to satisfy the requirements in various app stores. They also sneak in more restrictive licenses in their graphs
- CamperBob2 6y agoWindows-app-compiled-for-Mac is going to annoy Mac users And they'll let you know it, too. Unfortunately this has been an issue since the first Macs left the assembly line in 1984. If you point out that based on their share of the software market they're lucky they get anything at all, the conversation usually goes south from there.
- tpush 6y agoConcerning the desktop, I honestly don't see Windows users caring much about non-native UIs. Windows apps to this day are a hodgepodge of custom UIs. From driver utilities to everyday programs, there's little an average Windows user would identify as a "Windows UI". And even if, deviations are commonplace and accepted. Linux of course doesn't have any standard toolkit, just two dominant ones. There's no real expectation of "looking native" here, either. Which leaves macOS. And even there, the amount of users really caring about native UIs are a (loud and very present online) minority. So really, on the Desktop, the only ones holding up true cross-platform UIs are a subset of Mac users.
- ahmedfromtunis 6y agoDuring my days of Windows-exclusive computing, I wondered what people meant by native UIs, and why do they care about them. My wondering stopped when I discovered Mac OS and, to a lesser extent, Ubuntu (especially in the Unity days). Windows, with its lack of visual consistency, looked like a hot mess compared to the aforementioned platforms. And now that I think about it, would this made it easier, even by an infinitesimal amount, for malware to fool users, as small deviations in UI would fail to stand out?
- pessimizer 6y ago> And now that I think about it, would this made it easier, even by an infinitesimal amount, for malware to fool users, as small deviations in UI would fail to stand out? I don't think that's how fraud works in actuality; malicious actors will pay more attention to UI consistency than non-malicious actors (who are just trying to write a useful program and not trying to sucker anyone), inverting that signal.
- nitrogen 6y agoI don't know, I've read that e.g. spam will not focus on grammatical accuracy because they want to exclude anyone who pays attention to details. Also most fake Windows UIs from malicious websites I used to see weren't exact matches of the native UI.
- jcelerier 6y ago> Meanwhile, your web app may not be as good as native apps, but at least you don't have to write it 6 times. I must be living in a parallel world because I use a ton of desktop apps that aren't "written 6 times" - and write a few, including a music & other things sequencer (https://ossia.io https://ossia.io). Just amongst the ones running on my desktop right now, Strawberry (Qt), Firefox (their own toolkit), QtCreator (Qt), Telegram Desktop (Qt), Bitwig Studio (Java), Kate (Qt), Ripcord (Qt), all work on all desktop platforms with a single codebase. I also often use Zim (GTK), which is also available on all platforms, occasionnally Krita (Qt) and GIMP (GTK), and somewhat rarely Blender. Not an HTML DOM in sight (except FF :-)).
- guggle 6y agoBitwig has been ported to Android ? Or IOS ?
- jcelerier 6y agoI don't think it makes sense to use it on even small laptops screen to be honest so I don't really see the point. You'd have to redo the UI and whole paradigm entirely anyways for it to be meaningful on small devices. But there is certainly not any obstacle to porting - from my own experience with ossia & Qt, it is fairly easy to make iOS and Android builds, the difficulty is in finding a proper iOS and Android UX. In particular C++ code works on every machine that can drive a screen without too much trouble - if the app is built in C++ you can at least make the code run on the device... just have to make something pretty out of it afterwards.
- guggle 6y agoThe point is that the parent poster mentioned tablets and phones which you don't address in your point. Of course your examples aren't written 6 times, but they support fewer platforms too (only desktop). Off-topic, but regarding Bitwig: of course it makes perfect sense to use it on smaller devices. Not phones, but tablets. It's even officially supported with a specific display profile in your user interface settings (obvious target amongst others: windows surface). This is particularly useful for musicians on stage.
- ebj73 6y agoI think this has changed. People used to be very particular about how their apps looked on different native platforms, like you say. But I don't think it's like that anymore. People are more agnostic now, when it comes to how user interfaces look, because they've seen it all. Especially on the web, where there's really no rules, and where each new site and web app looks different. I believe this also carries over to native apps, and I think there's much more leeway now, for a user interface to look different from the native style, as long as it adheres to any of the general well established abstract principles for how user interface elements ought to behave.
- mokus 6y agoSpeaking for myself only, I haven’t changed my preference, I’ve just given up hoping that any company gives a shit about my preference.
- modzu 6y agou forgot linux. :(
- thrower123 6y agoTargeting Windows alone gets you 90% of the desktop market. 95% if you make it run reasonably in Wine. This argument is often used, but it's an excuse. Anything that you need to run on a desktop can't be used effectively on a touch screen anyway, so phones and tablets don't really count for serious software. (Writing this comment is stretching the bounds of what I can reasonably do on an IPhone).
- smileysteve 6y ago95% of a market that has shrunk nearly 50% over the last decade. In many ways, the consumer and non specialty business are post desktop. Turns out documents, email, and other communication apps cover 90% of use cases. Anything that requires major performance gets rendered in a cloud and delivered by these other apps.
- riquito 6y agoYou live in a bubble, Windows still dominates desktop (obviously, most people can't afford a Mac and the year of Linux on desktop has not come yet) https://gs.statcounter.com/os-market-share/desktop/worldwide https://gs.statcounter.com/os-market-share/desktop/worldwide
- monadgonad 6y agoThey're not refuting that. They agreed that it's "95% of the market." Their point is that the overall desktop has shrunk, regardless of Windows's share of that.
- fomine3 6y agoreally shrunk?
- smileysteve 6y agosource https://www.statista.com/statistics/272595/global-shipments-forecast-for-tablets-laptops-and-desktop-pcs/ https://www.statista.com/statistics/272595/global-shipments-...
- theshetty 6y agoMany desktop apps these days seems to be built on Electron, a JS framework for building desktop-class apps. https://www.electronjs.org/ https://www.electronjs.org/
- KeepFlying 6y agoAnd many of those apps end up with terrible performance. I'm sure it's possible to write a performant electron app, but I don't see it happen often and it's disappointing.
- cosmotic 6y agoWhat is a desktop-class app?
- wruza 6y agoOne that can read and write files and directories among other things. (Not an electron fan, but web pages are still pages, not real apps.)
- bradleyjg 6y agoThe other thing is that I trust the web browser sandbox. If I have to install something I’m a lot more paranoid about who wrote and whether it’s riddled with viruses.
- Kipters 6y agoOr you could use languages that allow you to share code, so you have 6 thin native UI layers on top of a shared cross-platform core with all the business logic and most interactions with the external world. You can do it today with C# and https://www.mvvmcross.com/ https://www.mvvmcross.com/
- edeion 6y agoI'm surprised nobody mentioned Emscripten. Unfortunately I have no experience with it but I get that you could write a native app and also get it to work in browser with this. I also get there could be a performance penalty but hey... There's also a native app! It feels like we could reverse steam and get 1st class native apps again.