upvote
Wine has been going for a very long time - since 1993.

When it started Windows was a lot smaller, so getting Windows 3.1 programs working was probably enough.

There's too much history to cover in a quick comment.

Wine has a lots of things that help - the compatibility database https://appdb.winehq.org/ is a good place for people to submit info on apps for instance, there's also a big test suite that runs against Windows + Wine.

Both of these have been around since the 1990s - Darling is at an earlier stage, but once GUI apps run better both of those are good ideas to adopt.

I think Darling probably needs more people working on it.

The whole are of Metal on Vulkan looks interesting https://github.com/darlinghq/darling/issues/390#issuecomment...

reply
Also, Mac is a moving target. Each year, there is a new version that is basically its own little snowflake, with older things deprecated and newer things added.

Windows 11 will still run Windows apps from Windows 3.1, because they have a backwards compatibility effort that Apple eschewed.

Now that makes it more complex to emulate all the features, but the core features used by most programs get emulated, and then just add features for specific programs to get them to work. And games tend to use core features and DirectX or OpenGL, mostly, whereas productivity apps and other things can do lots of weird things that are non-standard.

For Mac OS X, you really need to handle each versioon of Mac OS X. There are some core features that may work across versions, and some features that are available only on certain versions, then some features that are unique.

reply
At a guess: the "killer apps" are things like MS Office and Photoshop, and since they are usually available on both Windows and Mac, there's not such a pressing demand to support similar functionality for Mac apps if the Windows version is easy to obtain.
reply
That's such an obvious answer that I'm honestly embarrassed that it did not occur to me. <facepalm> Thanks for not rubbing it in!
reply
> What allows Wine to run so many Windows apps that there's not an equivalent for MacOS? Is it lack of interest? Is it a technical thing?

It is a technical thing.

The XNU[0] kernel, which underpins macOS and is detailed by the exceptional book "Mac OS X internals"[1], can theoretically run on many x86 and/or ARM machines. However, the issue with running macOS apps via other operating systems is not the OS, but instead are the GUI frameworks expected (i.e., Carbon[2], Quartz[3], etc.). These frameworks are intentionally written for Apple hardware/macOS distros. Which makes sense when viewing macOS as a selling point for selling Mac's.

0 - https://en.wikipedia.org/wiki/XNU

1 - https://openlibrary.org/books/OL17205558M/Mac_OS_X_internals

2 - https://en.wikipedia.org/wiki/Carbon_(API)

3 - https://en.wikipedia.org/wiki/Quartz_(graphics_layer)

reply
There is a project to use the Snow Leopard kernel and open source components and some bits from the prerelease Snow Leopard on PPC to create a working PPC Snow Leopard.

I wonder if something like that might be a short term viable path to get working apps. Something like the non-opensource libraries as a download pack for certain each release of Mac OS X, for at least versions Apple no longer supports, to get working programs, then you could slowly work toward open implementations.

reply
No? Windows also has its own graphics subsystem, compositor, and an even bigger set of user land UI/forms/controls libraries than Mac OS. It really is just a critical velocity / adoption / time thing, there’s nothing strongly technical separating Mac OS API/ABI translation from Windows ala wine.
reply
Microsoft's business model regarding Windows is to sell an operating system capable of running on as many devices as possible.

Apple's business model regarding macOS is to sell as many devices as possible capable of running that operating system.

The former lends itself to intrinsic portability such that an independently derived emulation layer is possible (not easy, just possible), whereas the latter has the freedom of assuming device capabilities/features always present for any given release.

reply
I don't agree that this particular trait of macOS makes an implementation at the layer WINE implements (full API+ABI) any harder or easier. Certainly, vertical integration makes OS porting (ie Asahi) and lower level emulation more difficult, since the hardware and firmware's contract with the OS is entirely proprietary and can be freely changed from revision to revision, but something like WINE operates many layers above this anyway.

There's a reasonable argument that the Win32 API was designed to be more stable than the Mac OS one and this makes WINE's task easier, but this sword is double-edged: while slow change is useful, backwards compatibility expands the Win32 API surface area, since each API also needs to continue to support every way it was ever wrongly used. With the continued proliferation of Windows UI frameworks and OS subsystems, it becomes difficult to argue that Windows is any easier than Mac OS would be to implement at an API layer.

I do think there is an argument to be made that Win32 was more straightforward and felt more tractable when WINE _started_, and therefore the project was able to scale with the problem space, while OS X started from a "larger" place and was therefore more daunting, but this again is a timing and traction argument more so than a purely technical one.

reply
>> Apple's business model regarding macOS is to sell as many devices as possible capable of running that operating system.

> I don't agree that this particular trait of macOS makes an implementation at the layer WINE implements (full API+ABI) any harder or easier.

Here is my corroboration. Apple publishes XNU to the world in this repository:

  https://github.com/apple-oss-distributions/xnu
There is no such publication of the GUI frameworks required by macOS programs.

> I do think there is an argument to be made that Win32 was more straightforward ...

I did not make that argument. Instead, the position I hold regarding Windows is:

  ... an independently derived emulation layer is
  possible (not easy, just possible) ...
When an organizational goal is to sell devices, instead of operating system licenses, there is no need to engineer portability within the OS as the target hardware is well-known. This is a luxury MS-Windows never had, as its goal has been to run on as many disparate devices as plausible. Thus the "intrinsic portability" I referenced.

In fact, you have made my point for me:

> ... while slow change is useful, backwards compatibility expands the Win32 API surface area, since each API also needs to continue to support every way it was ever wrongly used.

reply
While the productivity apps are mentioned in the other comments of this reply, games are another reason. There are far more games on Windows to port and handle than macOS games. And in that case, you got a financial desire in the form of Valve and its Steam store. macOS games tend to be ports from Windows and are usually less featureful.
reply
GNUstep ran early MacOS apps on Linux after Apple bought Next and adopted their APIs.

https://en.wikipedia.org/wiki/GNUstep

I don't think the project kept up with changes to the APIs over the decades compared to how well the Wine project kept up with changes in Windows.

reply
Win32 has a little less churn than AppKit used to. If you support the API surface of winxp from 25 years ago you can run a lot of stuff. Most teams inside Windows at MSFT also try to leave older APIs alone and introduce stuff in an additive fashion. Apple, by contrast, historically has app compatibility as a non-goal.

I said "used to" because anecdotally, I had a personal project I haven't released anywhere target AppKit, I haven't been maintaining it because life is busy, I recently rebuilt it for the first time in a long time and I was shocked that everything worked. ~8 years ago, you would need to do some porting to a new major release once per year. I skipped that maintenance for many releases and didn't need to change a single line. This tells me that desktop apps are not at all an area of major focus for them lately. Maybe swiftui is getting all the attention. They are doing something more resembling Microsoft, leaving the old shit alone.

reply
> GNUstep ran early MacOS apps on Linux after Apple bought Next and adopted their APIs.

No, it did not. There was no point at which GNUstep provided binary compatibility with Mac OS applications - while the two ecosystems shared some common history, it was much too far back to provide any form of compatibility. Additionally, Mac OS X used a different executable format than Linux or other UNIX-like operating systems, and GNUstep never attempted to provide that sort of low-level compatibility.

(For perspective: the GNUstep project started in the early 1990s. Mac OS X was first released to users in 2001.)

It may have been possible for some developers to port applications between Mac OS X and GNUstep while sharing some code, but that's a long way from running an unmodified application.

reply
> What allows Wine to run so many Windows apps that there's not an equivalent for MacOS?

Backwards compatibility. Apple changes their API every year or so, usually for no good reason.

reply
deleted
reply
deleted
reply
> What allows Wine to run so many Windows apps that there's not an equivalent for MacOS?

A lot of work done over 3 decades. Wine also started when Win32 was something comprehensible by one person, so they could build it up slowly.

reply