The demise of native coded apps
< Next Topic | Back to topic list | Previous Topic >
Posted by Simon
Dec 16, 2020 at 02:25 PM
tightbeam wrote:
> There isn’t anything more frustrating than a wonderful app that is restricted just to Mac users or just to Windows users. Cross-platform apps let developers maximize their customer base, so who *wouldn’t* code for everyone? A slight performance degradation seems like a worthwhile tradeoff. Nothing I do is so important that it must be done in a microsecond versus a millisecond.
Having used Windows and Linux, macOS is my personal choice, easy to use and visually appealing. No hunting through myriads of windows for settings, no crappy display and driver hunting and issues. I pay for macOS and don’t enjoy it being hampered by non native coded apps. Microsoft and Adobe apps are atrocious in macOS and only used because I have to for business. I’d drop them in a second. Even the veritable Visual Studio Code is annoying. In macOS you can switch between open documents in one application by using “CMD+`”. This does not work in VSC. As a keyboard user these little annoyances create quite some friction, so I move to a native app. I chose macOS for a reason.
I agree with Mark Pilkington:
> If you would like an answer from a developer who has just released a native Mac app (Coppice), it’s actually pretty simple: I want to write the best app possible. I *could* open myself up to the Windows market, or even Linux, by using something like Electron, but that would lead to a lower quality product. Each platform has opinions as to the look and feel of apps, and their respective native toolkits provide a lot of that for free. You get none of that with a cross-platform toolkit. Some allow you to get pretty close but only with additional work on the part of developers, which is work not spent on features or other bug fixes. Some users can put up with the non-native feel, but do I as a developer want to build an app people merely “put up with”? Not really.
There is an assumption that all operating systems are equal and in my experience they are not. You choose what you want to use (or the choice is made by your boss). I’m ditching more and more “code once” apps and won’t even download new ones, because it frustrates me to bits. I’m rapidly coming to the position that if a developer wants me to buy an app on the Mac, it better be native coded or I’m not interested.
Posted by Andy Brice
Dec 18, 2020 at 10:57 AM
Here is one developer’s reflections on the difficulty of writing cross platform GUI frameworks and the applications that sit on top of them:
https://blog.royalsloth.eu/posts/sad-state-of-cross-platform-gui-frameworks/
Personally, as a developer, I prefer to put up with some compromises imposed by a cross-platform framework, such as Qt, rather than only develop of one OS or (shudder) write the GUI for each OS separately.
“Abstract out all the business logic so you have a small GUI”
The vast majority of code in the applications that I (and many other developers) write is mostly GUI.
“Write it for web then”
No. Desktop apps have significant advantages over web apps.
—
Andy Brice
http://www.hyperplan.com
Posted by Christoph
Dec 18, 2020 at 11:43 AM
Great article. This quote sums it up very well:
> People will say “But there’s WxWidgets, but there’s GTK, but there’s Qt” as if someone is looking for ice cream and everyone is going “But there’s frozen shoe leather, but there’s frozen peas, but there’s an empty refrigerator”
Regarding the statement (meant as a drawback of Electron): “Javascript is simply the worst language that I have ever used.” I would agree that JavaScript is awful, but nowadays you write Electron with modern versions of JavaScript or TypeScript which are much less awful. For instance the “variable hoisting” that the author mentions is not used any more in ES6 (modern variant of JavaScript). So the only real big disadvantage of Electron remains the resource waste (but see also https://dev.to/bitario/in-defense-of-electron). For this reason, I think Electon is only suited for the apps that are your “work horses” like Visual Studio Code, not for smaller apps which should not clog up the system so much.
Andy Brice wrote:
> Here is one developer’s reflections on the difficulty of writing cross
>platform GUI frameworks and the applications that sit on top of them:
>
>https://blog.royalsloth.eu/posts/sad-state-of-cross-platform-gui-frameworks/
Posted by Simon
Dec 18, 2020 at 06:56 PM
The difficulty the developer will face is that users who chose a specific operating system aren’t necessarily concerned that the apps works on every platform. What they want is for it to work properly in the OS they are using and have purchased it for. The compromises developers make to make the app work on every platform kills just the unique features a user chose to use the platform for. May as well buy a Raspberry PI and use that. I’ve realised as a user I don’t want the compromises. This has only come to me over time rather than an intentional thought. When I place all the apps I dislike using and look to replace, they are all non-native apps. And when I do replace them it is with native apps. I’ve gotten that frustrated with Visual Studio Code, that it’s been replaced with BBedit.
I do understand for people who have to work in more than one OS, where needing to use the app is preferable to not having them. But making the app frustrating and unpleasant to use in the process for the rest of users will make users jump ship when something else comes along. Plus, nothing is as motivating as using an app you enjoy using, rather than having to grit your teeth :)
Andy Brice wrote:
Here is one developer’s reflections on the difficulty of writing cross
>platform GUI frameworks and the applications that sit on top of them:
>
>https://blog.royalsloth.eu/posts/sad-state-of-cross-platform-gui-frameworks/
>
>Personally, as a developer, I prefer to put up with some compromises
>imposed by a cross-platform framework, such as Qt, rather than only
>develop of one OS or (shudder) write the GUI for each OS separately.
>
>“Abstract out all the business logic so you have a small GUI”
>The vast majority of code in the applications that I (and many other
>developers) write is mostly GUI.
>
>“Write it for web then”
>No. Desktop apps have significant advantages over web apps.
>
>—
>Andy Brice
>http://www.hyperplan.com
Posted by Lothar Scholz
Dec 19, 2020 at 04:49 PM
As a developer i can tell you that the reason why lots of things are now done with Electron is that Microsoft is aweful, they totally failed to improve anything for desktop development in the last 15 years (2005 when they wanted everyone move to WPF/C#). There is just no acceptable windows toolkit anymore. I had high hopes that now they learned it after failing so hard with UWP and Windows 8/Windows Phone/Windows RT. Now they announced WinUI3 as the new way to develop native code apps on windows with an expected first release date someday in 2021 at the same time when Linux will finally get Gtk4.
We will see how many use it. The main problem with most other toolkits is that they don’t scale well to multicores. Electron is more or less single threaded and can’t use GPU computational acceleration in any way. This means it uses around 1-5% of the power that is available in your new $2000 computer.
Evernote as mentioned had another problem, they have a pretty simple GUI but they didn’t even abstract the common business logic. If they only had to port the platform GUI part then they might have stayed with native code. They move from one into the total opposite direction, again one more sign that CEOs are awful and not smarter then Joe Average but get millions of salaries.
What is more important that Apple puts interesting stuff from the business layer logic into the operating system with it’s AI and natural language features. Microsoft has nothing, it all runs in Azure and needs web services and enforces subscriptions on the developed applications. Linux has nothing, neither in the OS nor in the Cloud.
And finally a word to Android. Android is not a desktop system, it’s a phone system. It’s not designed to run good apps like we have on iOS. Just simple as that. And the choice of Java as main development language is nowadays terrible and someone should replace it fast. But somehow Google is awful too. Almost every software package they get into their hand starts to stink. Google it and you find the interviews with people who expain why this is, they idea to hire the smartest people makes software unmaintainable. It’s an interesting read.
If we had a good note taking cross platform program i could bomb you with lots links to links to backup my arguments. But i still haved found one