Hacker News new | ask | show | jobs
by ken 2594 days ago
The very concept of "a window" is pretty different across platforms.

MacOS is the only one with a concept of proxy icons. It has a distinction between the key and main window. There's a responder chain for event handling. Toolbars have a built-in editor. There's QuickLook for easy previewing of sub-files. There are standard popovers, which can be torn off.

On the Windows side, I'm sure they've got their own set of unique features and constraints that the Mac doesn't have. (The Ribbon and keyboard navigation come to mind.) Same with Linux.

Lacking a feature often means you need to design the UI different elsewhere. Without proxy icons, you might need to add a menu item to mimic that functionality, for example. These things domino into each other. There's a reason that good Mac apps and good Windows apps don't tend to look identical.

English and German are fairly similar, as languages go, but you can't just do a word-for-word replacement of English and get a good German paragraph, or vice versa. Not infrequently, you need to re-arrange everything to make it work. The pieces you have to work with are just different.

2D/3D graphics APIs (if that's what you're referring to) aren't like this. For the most part, they're all playing with the same basic pieces. When my Mac traded OpenGL for Metal, I barely noticed, even as a developer writing graphics code. When my Mac switched from Carbon to Cocoa, everybody needed to rewrite almost everything.

1 comments

Completely agree with everything you said but the curiosity that drove my initial question still stands. To be specific do you think Sketch / OmniGraffle are unimplementable on Windows? Why would the creators of those apps after achieving such success on OSX, be unwilling/unable to address the windows market. I am convinced there are good rational reasons for this, I was hoping that someone from one of those companies could comment on this. [It is possible that in their target demographic everyone uses OSX, but is that the case?]
If the app is a native Cocoa application, it’s been written in Obj-C or Swift. Cross-platform apps and frameworks are usually written in C++ with a UI implemented in a common framework like Qt.

To port the application to Windows, you’d lose a lot of the Mac-specific features, or have to do a substantial amount of work implementing platform-specific UIs.