News for hackers. Stuff that matters.
Re:Goodbye, Native Apps by athenot on Saturday October 31, 2020 @08:27PM (#24956381)
> It's totally possible to build a PWA that behaves like a native app but Apple actively tries to destroy them.

It may look the part but it rarely feels like it.

Something like OmniGraffle would not end up feeling the same. Even Microsoft's apps on mac feel better than their web-based counterparts in O365.

Re:Goodbye, Native Apps by wtallis on Saturday October 31, 2020 @09:09PM (#24956531)
Yeah, proponents of cross-platform frameworks love to ignore the second half of "look and feel". It's ridiculous to claim that a web app can behave like a native app when even Qt apps still tend to have obvious tells.
Re:Goodbye, Native Apps by Silhouette on Saturday October 31, 2020 @10:37PM (#24956827)
The important question is, does that matter?

Slick web apps are taking over the software world, whether the likes of Apple want them to or not. Looking like any specific native platform is less important, if it's even relevant at all, in an era when users are working with different web apps each with their own look-and-feel all the time anyway.

Re:Goodbye, Native Apps by wtallis on Saturday October 31, 2020 @10:50PM (#24956872)
Does it matter? Yes, of course. The desire for consistency and usability may not be strong enough to reverse the current trend away from native apps, but that doesn't remove their advantages.

And I find it very telling that even your own comment continues the trend of over-emphasizing look over feel. I'd be happy with apps randomly launching in night mode, if they would just have all the right controls in the right places, and have the performance and memory footprint of native apps.

Re:Goodbye, Native Apps by Silhouette on Saturday October 31, 2020 @11:11PM (#24956955)
The problem with that argument is that you're assuming consistency with native platform standards is the dominant consideration. I contend that, today, it often is not. Many users are spending much of their time using web sites and applications rather than native ones; this trend does not appear to be in dispute here. Moreover, the basics of how web sites (and by extension web apps) work have a longer history of established conventions than any of the major native platforms; the likes of Jakob Nielsen were making the case for consistency and following user expectations more than two decades ago, long before the likes of iOS and Android and whatever we're calling Windows' UI today were glints in their respective creators' eyes.

Also, web technologies can perform just fine the vast majority of the time. Modern JS engines have excellent performance, obviously not rivalling expertly coded C and assembly, but certainly comparable to your average native application for most purposes. Modern browsers also have good support for hardware acceleration and can render UIs that respond quickly enough to user interactions that again for most purposes there is no perceptible delay or jank. Today we're looking towards WebAssembly as a vehicle for potentially more efficient languages and runtimes, though clearly that technology is still in its infancy and its future is far from certain. Now, you can undermine all of that potential if you bloat your web site/app with tens of megabytes of junk scripts that are all competing for resources and blocking stuff and phoning home and whatever, but that's not really the fault of the web technologies, it's just bad developers and/or bad managers creating a bad application.

Re:Goodbye, Native Apps by wtallis on Sunday November 01, 2020 @01:29AM (#24957412)
> Moreover, the basics of how web sites (and by extension web apps) work have a longer history of established conventions than any of the major native platforms;

That "and by extension web apps" bit is completely wrong. The long-standing conventions of how web sites work are mostly irrelevant to fancy web apps, and to the extent that they are relevant, web apps break them left and right. Just look at how many web sites/apps hijack or break scrolling or the back button or the ability to middle-click on a link and get a new tab or the ability to highlight text. Web apps are all about breaking the usability standards for web sites and replacing them with a bastardized version of the usability conventions from various native OS toolkits. But in spite of that, nobody ever really expects drag and drop or rich copy and paste or any other data exchange mechanism to work between web apps.

Re:Goodbye, Native Apps by Silhouette on Sunday November 01, 2020 @06:43AM (#24958823)
Just look at how many web sites/apps hijack or break scrolling

Hardly any? That's been a minor trend in web sites for a while, but changing scroll behaviour for no good reason is widely regarded as an antipattern by UI professionals. I don't recall ever seeing normal scrolling behaviour subverted in anything I'd call a web application.

or the back button

This is a tricky one from a usability perspective, because some users see URLs as shortcuts to particular parts of a web application and expect the back button to behave accordingly as they navigate information in the app, while others think of the whole application as being a single page and expect the back button to just leave everything. But there is a whole set of browser APIs for managing that behaviour, and it's something a well-designed application will at least present in a consistent and logical way.

or the ability to middle-click on a link and get a new tab

This sounds like you're talking more about web sites than applications again, and again it also sounds like you're talking about bad design that web UI professionals would universally disagree with. It's usually caused by newbies who read some style-over-substance tutorial and decided that making links or buttons with elements other than the designated anchor and button ones that exist for that purpose was a good idea. After the first few glaring usability problems, they'll learn better.

or the ability to highlight text.

I don't really understand this one at all. The only times you wouldn't be able to highlight text in a web application would be if the designers have actively prevented it, for example to prevent selecting UI labels along with the content of a text field. This typically works exactly the same way as any native desktop application.

But in spite of that, nobody ever really expects drag and drop or rich copy and paste or any other data exchange mechanism to work between web apps.

I don't know what you mean here, either. Dragging and dropping text between web applications typically works fine. If by "rich copy and paste" you mean other more complicated data types, what happens is obviously highly context specific, but once again, this is the same story on native desktop applications. It's not as if you can copy a selection of spreadsheet cells and paste them into a drawing package with obvious and meaningful results either.

As a final comment, the examples you're talking about here all seem very "meta". As such, they're not particularly interesting to me, because as a UI developer working on a web app you generally get the expected behaviour by default with these kinds of things. Sure, some people can and do break them. They're just bad UI designers. Some people make native applications with shocking pink skins over the normal window dressing, too, but that doesn't mean all native apps are bad.

Re:Goodbye, Native Apps by nzentzis on Sunday November 01, 2020 @12:32AM (#24957238)
I keep hearing the "web technologies are fine, you're just using them wrong" refrain over and over again, but it's ultimately not very convincing. If it's true, then where are all the good web applications? I've certainly never seen any of them. Can you give an example?

If nobody can get Web technologies to deliver a good experience, then I'm not sure it matters that much whether or not it's possible in theory. Delivering a theoretically great user experience won't get you anywhere unless it also translates to practice.

Re:Goodbye, Native Apps by Silhouette on Sunday November 01, 2020 @12:41AM (#24957272)
What do you consider a good application? If you have never seen anything that would qualify on the Web then I have to ask what standards you are seeking and whether any software actually meets them.
Re:Goodbye, Native Apps by nzentzis on Sunday November 01, 2020 @02:03AM (#24957706)
At least for the purposes of comparing to web apps, the criteria would be: responsive/low-latency (responds to input quickly), fast (completes tasks quickly), uses resources proportional to the functionality it provides, and doesn't often hang or spend noticeable amounts of time waiting for a network request before responding to an action.

Applications that meet these criteria include: Thunderbird, KiCAD, VLC, Vim, tmux, Blender, evince, Handbrake, and Pidgin.

Re:Goodbye, Native Apps by Silhouette on Sunday November 01, 2020 @06:59AM (#24958881)
responsive/low-latency (responds to input quickly), fast (completes tasks quickly), uses resources proportional to the functionality it provides, and doesn't often hang or spend noticeable amounts of time waiting for a network request before responding to an action

That seems like a fairly low bar to clear. Aside from the network request issue, I think every web application I've worked on for a decade or more would tick all of those boxes, from intranet tools to browser-based interfaces embedded in device firmware. I'm sure there are many others in the industry who could say the same. A lot of the things I'm thinking of are for internal use, but in terms of public examples, you can just look at most of the successful big-name business SAAS applications, and they tend to be strong on these requirements as well. Ease of use is a huge selling point for attracting customers, and no-one is winning points by being clunky in their web GUI in 2020.

Network speed and reliability is a different issue, and obviously many web applications are particularly vulnerable to problems there because they have such a strong communication element. But then the same is true of native applications that are for communication or a front-end to a client-server system like a central database.

Applications that meet these criteria include: Thunderbird, KiCAD, VLC, Vim, tmux, Blender, evince, Handbrake, and Pidgin.

That's an interesting set of examples. The other point under discussion was about whether web applications cause usability problems by deviating from native platform UI conventions. I can't help noticing that several of the native applications you mentioned there do exactly that.

For example, Blender's UI was infamous for being so unusual that anyone coming from other 3D modelling software found it hard to use, and for looking and behaving nothing like a conventional native application on a platform like Windows. Eventually, that became so much of a problem that they basically rewrote the whole UI layer to work in more conventional ways.

Handbrake has its good points, but its interface looks like a GUI from the early 2000s where the designer just threw as many different types of control onto a form layout as they could manage.

Thunderbird also has its good points, but its UI is incredibly glitchy in some areas (dragging and dropping comes to mind) and it definitely fails to meet your fast and responsive criteria at times.

Re:Goodbye, Native Apps by FpUser on Saturday October 31, 2020 @11:50PM (#24957090)
While there are really good looking examples to me the most of web apps do not look slick at all. They're rather extremely unergonomic
Re:Goodbye, Native Apps by oblib on Sunday November 01, 2020 @01:55AM (#24957500)
I agree with that. I've been struggling with that on a web app I've been working on.

Part of the problem is a new twist on the old problem. I don't have to develop for Mac and Windows and Linux, I have to develop for Desktop PCs, Tablets, and Phones. My options are to create a GUI for each of them or use something like Bootstrap to build one that runs on them all, and that has limits and trade offs, but it's still pretty good.

One of the things I've done with this upgrade is provide a way for the user to store their data in the CouchDB native app running on their desktop PC. It's a "local-first" and "offline-first" web app so once it's installed it doesn't need or use an internet connection and while I have no way of making a comparison it appears to me to run pretty close to native app speeds.

When CouchDB is installed on the user's desktop PC any web app configured to use it can use it. It only requires the user fills out a simple web form to set up a user and database for the app.

Taken together, a modern web browser and CouchDB come pretty close to fully featured client side runtime environment for desktop PC web apps. It wouldn't be too hard to create a web app that looks and feels very much like a native app when running full screen on a Mac and Windows.

A client side runtime for web apps is something I've been thinking we need since I built my first web app and that was before they were even called "web apps". I'm not the guy to make that, but I think we need it. CouchDB and a web browser come pretty close.

Re:Goodbye, Native Apps by Silhouette on Sunday November 01, 2020 @12:30AM (#24957231)
I don't disagree, but I think you could say the same about native apps too. For this discussion, I think the most important thing is what good examples of each type can achieve, since presumably those are the ones that most people will choose to use.
Re:Goodbye, Native Apps by FpUser on Sunday November 01, 2020 @02:20AM (#24957750)
>"I don't disagree, but I think you could say the same about native apps too"

Of course I could. I was just countering the original point that sounded that web apps are slick just because they're web apps. Making good GUI is hard (well I'd skip Hello world here).

Re:Goodbye, Native Apps by Silhouette on Sunday November 01, 2020 @07:07AM (#24958906)
I was just countering the original point that sounded that web apps are slick just because they're web apps.

Sorry, maybe that was written ambiguously, because that wasn't the intended point at all. The point I was trying to make was that the web applications that are slick are taking over the world. Being polished and easy to use is a big advantage, and IMHO there's been a lot more progress on this front in web development recently than in native applications.

In contrast, the mobile platforms are far too much style-over-substance and have glaring usability problems as a result.

Most desktop applications haven't really changed their basic form for decades, they just show up with flat icons and kindergarten levels of bright colours these days. That does mean here is a level of consistency and familiarity, which is valuable. However, it also means most of them aren't benefitting from decades of further experience and research in UI design and from newer UI patterns coming out of that experience that have proved to be effective in other contexts.

Re:Goodbye, Native Apps by giantDinosaur on Saturday October 31, 2020 @08:37PM (#24956422)
OmniGraffle could be fine; hasn't Figma shown us the way?
Re:Goodbye, Native Apps by durandal1 on Saturday October 31, 2020 @09:33PM (#24956608)
Figma falls into the trap of all other claimed high performing web apps, conflating maintaining a 60fps refresh rate with responsiveness. Try dragging any object around (even simple shapes) and you'll see it trail the mouse cursor in Figma. Does not happen in OmniGraffle. The result is a distinct difference in feel.
Re:Goodbye, Native Apps by lucasverra on Sunday November 01, 2020 @01:45AM (#24957654)
Can any person in the planet edit the same document than you in real time, for free, running hardware up to 5 to 10 years old, in < 3 min after receiving a link with Omnigraff ?

Because that is the main feature of figma. Latency of mouse issues is a good trade off from my POV.

Re:Goodbye, Native Apps by giantDinosaur on Sunday November 01, 2020 @01:03AM (#24957520)
Fair point! I might file this under 'latency' which is often ignored for improvement so long as it's tolerable.
Re:Goodbye, Native Apps by kgin on Sunday November 01, 2020 @12:36AM (#24957255)
It easily could feel like it, given a very reasonable amount of support by platform owners.

There is nothing magical about Ui powered by compiled vs interpreted code. It is limitations in the platforms that are the roadblocks.

Re:Goodbye, Native Apps by leadingthenet on Sunday November 01, 2020 @01:02AM (#24957518)
I always hear about these theoretical web apps that are just as good, nay, better, than native apps. Where are they?! Certainly no web app I ever used would qualify...
Re:Goodbye, Native Apps by osrec on Saturday October 31, 2020 @10:10PM (#24956747)
I think that can often be due to a lack implementation skill.

Our users (https://usebx.com) seem to appreciate the native performance and feel of our web app.

Re:Goodbye, Native Apps by jiofih on Saturday October 31, 2020 @09:49PM (#24956677)
You should try Figma. Will open your eyes a bit.
Re:Goodbye, Native Apps by wdb on Sunday November 01, 2020 @06:31AM (#24958772)
Yeah, you can only use it when you got internet
Re:Goodbye, Native Apps by emodendroket on Saturday October 31, 2020 @10:11PM (#24956751)
The fact you can just run it without installing anything makes up for a lot of faults (doubly so when the vendor isn't Microsoft but somebody nobody's ever heard of).
Re:Goodbye, Native Apps by wtallis on Sunday November 01, 2020 @01:43AM (#24957460)
On the flip side, most web apps don't offer their full feature set without requiring you to go through a sign-up process that is at least as onerous as downloading and unzipping a Mac app bundle. Even when a web app outsources authentication to something like Facebook, there are still at least as many clicks.
Re:Goodbye, Native Apps by emodendroket on Sunday November 01, 2020 @01:48AM (#24957471)
It's not about clicks so much as sandboxing.
Re:Goodbye, Native Apps by pseudalopex on Sunday November 01, 2020 @01:14AM (#24957557)
Mac apps are sandboxed.
Re:Goodbye, Native Apps by emodendroket on Sunday November 01, 2020 @09:18AM (#24959616)
I'd nevertheless sooner visit an unknown Web site than install an unknown application.