← Back to context

Comment by efficax

1 day ago

What does "native" mean to these people. Native UI means using the widgets provided by the operating system. This is not that.

Changing times. Nowadays a lot of software UIs are developed by people with a web UI background. Those people won’t learn the OS-native UIs because that would mean they’d give up on their existing knowledge. Because of that native means “not running in an embedded web browser” to many nowadays.

I have the same annoyance. It's continually maddening to see "native" plastered everywhere only for it to be some non-native junk. I miss when native meant something like Qt.

  • Qt is an interesting case, because it doesn't use the native platform's widget code*, but does a good job of looking and behaving as though it does. That's usually close enough for me.

    Various other toolkits have tried this approach, but unfortunately, I'm not aware of any others that succeed. Common deficiencies include keyboard navigation and text rendering.

    *(Except on Qt-based desktops like KDE Plasma, of course.)

I've been thinking a lot about the term "native" as I come from mobile. When writing a core in Rust (which I like to do), and then layering on the operating system's UI SDK components per platform (which I also like to do), what is native and what isn't, especially when you throw in React Native to the discussion?

I like your definition quite a bit, but I need another word for, "code that doesn't need a runtime to execute."

I ended up using "experience layer" to describe the SDK components.

Native often means "not a wrapper around a webview".

If you define it as "using the widgets provided by the operating system", then "native" is by definition incompatible with "cross-platform." And what does that mean on Linux, where the operating system doesn't provide widgets? Are gtk and Qt not native?

  • Adding to this...

    When discussing GUI toolkits, "native" should be understood to mean "native to the host's graphical environment".

    "Native to the OS" might or might not be equivalent, depending on the OS and what one considers "OS" to mean. (Does it mean a kernel? A desktop distro? Something else?) Because of this ambiguity, it's not a very practical way to approach the discussion. Different people attach different meanings to that phrase.

    Some frameworks are native to Qt. Others are native to Gtk. Practically none are native to Linux. ;)

    I don't think "cross-platform" is incompatible with "native". It has been achieved more than once using toolkit wrappers, usually selected at build time.