It’s kind of funny/sad to see how Apple operates with APIs. None of these concepts are really “new”: they were there, in Carbon, prior to Mac OS 8, in the days when that OS was meant to support really elaborate themes.
The original theme APIs were huge, and 3rd parties were expected to adopt them as needed (e.g. using appropriate theme selectors for fonts and background patterns). For about a year, things looked really cool: you could create a great Platinum-esque UI for any custom control, and it would fit right in.
Then, they threw it ALL away for Mac OS X, ironically right about the time when an appearance-agnostic API would make a lot of sense. They didn’t even bother to update their API implementation to ease migration: really trivial changes that would have been helpful, like “update the damned font/color/pattern value returned for X to resemble Aqua”, were not done. This meant that an app full of seemingly-appearance-agnostic code would look like crap under Aqua, and you had to rip it all out.
And it’s not like Mac OS X didn’t change its look. Heck, for a long time you could find 3rd party app bundles chock full of images that were there just to implement the Apple-Look-and-Feel-of-the-Week, because the SDK didn’t offer any reasonable way to do half of what they came up with.
So yeah, 14 versions later, the Mac wants to be appearance-agnostic again. Sounds great. My advice: always have the option of doing your own UI as a backup.
That's almost 20 years ago, and for very good reasons: moving to a whole new OS, with a new graphics pipeline and UI engine, and one they especially wanted to tout.
If that's the reason you don't trust Apple to support the "dark mode" APIs going forward, then that's bogus.
>So yeah, 14 versions later, the Mac wants to be appearance-agnostic again.
Were "the Mac" is a very different OS (the legacy Mac OS vs NeXT based OS X), by an almost totally different company compared to the one that created the original Mac OS 6, 7, 8, 9 and co. And 14 versions later is 18+ years on.
At which point do you draw the line?
Should we also be concerned for what Sculley era Apple did to some APIs?
Furthermore, an awful lot from those days had recently been touted as “the future”, encouraging developers to invest more heavily than they might have otherwise. It would have been more future-proof to not to adopt the API wholesale and just hack in fonts and metrics everywhere but no one knew it at the time.
Had they simply kept using the API, it would have naturally evolved over 20 years. It wouldn’t look the same today (it would probably be way more powerful than NSAppearance) and developers wouldn’t feel like time was wasted.
They could have even created an immediate NS-wrapper for the older API back then (as they did for certain things), if supporting C long-term wasn’t palatable.
In my experience as a Mac + iOS user and developer for the past 8 years, and for the rest of my life before that on Microsoft platforms, Apple's record has been much better compared to Microsoft re: abandoning APIs or pulling the rug out from under devs.
Take NSDocument for example. It has been around for almost 20 years. All you usually needed to do was inherit from it and adopt its interface and your app would often get new features for free with each release of macOS, like autosaving and version histories.
The foundations for multiple UI appearances have been there since macOS 10.10 Yosemite, 4 years ago. They were hard not to notice.
As a user and developer I'm glad they took the time to work out a sensible implementation that is very easy to adopt now and makes good sense for the future. It definitely seems to be in a better spot than Windows' support for multiple appearances currently, if it has any.
If you see the WWDC sessions on Dark Mode, you might come to appreciate the thought and effort they've put into it:
[0] Introducing Dark Mode: https://developer.apple.com/videos/play/wwdc2018/210/
[1] Advanced Dark Mode: https://developer.apple.com/videos/play/wwdc2018/218/
It has had pretty much what Apple are implementing since Windows 10. Dark mode and a custom highlight colour that gets applied across the OS.
Of course like on MacOS developers have to be using the latest UI framework to take advantage of this which unfortunately on Windows developers are a fair bit slower on the uptake than on MacOS.
Then again, I don't expect to see much uptake on the Mac side either considering I can't remember the last time I installed a new app and it was a native AppKit(?) UI and not just an Electron app.
That’s because apps were supposed to migrate to Cocoa rather than sticking with Carbon.
> 14 versions later, the Mac wants to be appearance-agnostic again
Ten versions. NSAppearance is 10.10+.
Next time you can stop here:
I’m not sure I trust Apple.
I vaguely recall finding a few bugs with Finder as well, where if you switched back and forth it wouldn't update all colors correctly. Of course, it worked fine after restarting the app... But if Apple's own apps have bugs relating to this, it wouldn't surprise me if it's a common problem for other third-party apps.
Another thing people might wanna try out relating to macOS appearance is going to System Preferences -> Accessibility -> Display, and enabling "Increase contrast". It makes some colors look a bit uglier, but I really love how it makes all UI elements stand out. For anyone that doesn't have macOS, or is too lazy to try it out, here's two comparison pictures:
* Default appearance: https://imgur.com/W93o3Md
* Increased contrast: https://imgur.com/oocjMPs
A bit tangential... I'm hoping that at some point you can use a media query on the browser to test for this value. For example, there's already prefers-reduced-motion [0] on WebKit. I've definitely seen a GitHub issue at some point suggesting that a similar media query be added for users that prefer higher contrast interfaces, but I can't find it at the moment. Unfortunately when I last checked it didn't seem like there was much interest; as usual, accessibility features seem to take a backseat with many browser vendors.
[0] https://webkit.org/blog/7551/responsive-design-for-motion/
You can also try increasing the "Display contrast" slider (to around the 3rd notch) while in Mojave Dark Mode, to remove the soft gray from the window chrome and replace it with truer black.
It affects all other colors of course, but it can improve reading/writing for those of us burning the midnight oil.
Here's a link to previews of some popular schemes (from the Internet Archive): https://web.archive.org/web/20060925184709fw_/http://www.kal...
Sadly, modern OS will probably never allow this level of customizability...
[1] https://en.wikipedia.org/wiki/Kaleidoscope_(software) [2] https://en.wikipedia.org/wiki/Copland_(operating_system)