Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It's a neat project. Write cross platform desktop apps in C. Presumably it would not have been very usable in practice in the late 1980s, because of all the OTHER system interfaces that still weren't portable, even if the windowing system was available in a portable way.

I can remember the subsequent period in which Java desktop apps were relatively common. They had cross platform UI by default. But the problem was:

1) cross platform GUIs are ugly by default, compared to fully native desktop apps, because they don't entirely replicate the affordances or the style of the platform;

2) in the Java case, it seemed heavyweight to install and sluggish compared to native apps;

Point 2 would not have applied to stdwin, as it would have produced small compiled binaries I suppose, but Point 1 would have.

So in the end, obviously web apps (and partly, Flash) took over the niche that "cross platform desktop apps" had once tried to fill, and then it was something of a dead zone until Electron, as far as I remember.

 help



> cross platform GUIs are ugly by default, compared to fully native desktop apps, because they don't entirely replicate the affordances or the style of the platform;

I think this is an implementation detail. It's up to the software stack whether it leaves off before drawing the UI elements on screen, or goes ahead and takes on that responsibility too. The wxWidgets toolkit uses the runtime platform's UI, so it does not draw the widgets themselves. Java Swing took on the task of drawing the UI elements on the screen in its own style.


When OS X was new, Apple was still under the assumption that Java on the desktop was important, and they built an in-house Java with full Aqua support. It was still _terrible_! All the Aqua-specific affordances like animation or shadows were janky or absent. Sizing and positioning always felt weird because the application was written assuming Windows-shaped controls.

Basically, cross-platform GUI only looks good on the platform that it was originally designed for. Unless the other platforms make zero interesting choices, they will always look worse.


> cross-platform GUI only looks good on the platform that it was originally designed for

Formulated more rigorously, cross-platform GUIs and outsider, non-Mac-first GUIs ported to Mac OS look (and feel) bad on Mac. The opposite is virtually never true though; there aren't really high standards for beauty or consistency on the other platforms. Windows, for example, in this decade is a mishmash of different toolkits (even from Microsoft). Desktop GNU/Linux people comprise a faction consisting of people that either doesn't care about GUI beauty or have standards that are about on par with Windows folks—and are generally so grateful just have an app that ships* their platform, that they won't reject outright any Mac-first app (and that would be true even if it painted itself as a pixel-for-pixel match of the Mac OS version).

* and runs; I still run into "cross-platform" apps that are Electron builds packaged as AppImages that still terminate at launch, even if you try to run them on something as unremarkable as Ubuntu


> The opposite is virtually never true though; there aren't really high standards for beauty or consistency on the other platforms

The beauty is in the eye of the beholder. I don't find Apple UI beautiful and consistency is missing in some places at least on iOS.


I don't think that's actually true. OS X really wants more whitespace between controls than other OSes do. If you just naively port an OS X dialog to Windows or Linux, it'll seem too spread-out.

And what are your thoughts on Frito chili pie?

> Java Swing took on the task of drawing the UI elements on the screen in its own style.

Sun/Oracle also cheaped out by not having designers. If you see Flutter, they are able to recreate all of the platform specific widgets purely by having design engineers eyeball the implementations until they replicate the exact color and timing of every animation. Oracle/Sun was cheap and lazy.


Point 2 nowadays feels like high performance when compared to Electron crap.

Honestly, "native UI" gets so much worse with every passing year that I don't even want native UI. I want old windows UI.

I saw a screenshot of GTK 1 and the first thing I thought is that I'd rather make something using GTK 1 than GTK 3. Unfortunately I asked an AI chatbot about it and they advised against it because of "security" :(


That's the false assumption that unmaintained is insecure. Any old DOS game in Dosbox would be insecure by that logic.

So if I run Dune2 in dosbox, is that a security issue? Of course not, but if you were to load a bitmap from the network and feed it to GTK1 for displaying, there could well be an overlooked issue lurking around. But you need to look at the greater picture, not just "old==insecure"


You might like FLTK if you don't care about matching native UI, and appreciate 90's design sensibilities. Unlike GTK 1.x it is still maintained.

Does the chat bot brush your teeth for you too?

1) cross platform GUIs are ugly by default, compared to fully native desktop apps, because they don't entirely replicate the affordances or the style of the platform;

These two things don't connect. Not being identical doesn't mean ugly or only one GUI would be considered not ugly.


The other popular option for cross-platform UI apps was Tcl/Tk:

https://en.wikipedia.org/wiki/Tk_(software)

...which even leaked into other language ecosystems like Python:

https://docs.python.org/3/library/tkinter.html


Which had the ugliness problem then, although it is a lot better now.

Not all people love Material design. The fact, that the Label became the main UI widget, is an unfortunate accident.

AFAIK Tk simply wrapped native widgets though? E.g. when the result was ugly, then that was because the platform's native UI framework was ugly.

It did not. It had/has its own widget set.

It didn't look ugly by early 90s standards (basically Motif look&feel) but didn't evolve.

It also always felt like a foreign body inside Python because Tcl was always still there along with it.


> cross platform GUIs are ugly by default,

... was said reading it in a browser on who knows what OS/DWM.

I mean that 90% (if not more) of all UI interactions happen now in a browser or in multi-platform applications (e.g. messengers, SublimeText, VSCode, etc).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: