logoalt Hacker News

GeekyBeartoday at 12:15 AM2 repliesview on HN

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.


Replies

asveikautoday at 12:37 AM

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.

duskwufftoday at 1:41 AM

> 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.