Any advices for a new kid coming to Apple development?

Hi!

I've been doing Linux-related development for the past couple of years and recently bought myself my first ever Mac (amd64 one, for now). So hooray for me I guess. :) I've been searching things like general overview of the system architecture, how's networking is different from, let's say, Linux, and stuff like that, but it seems like there is no comprehensive explanations of how OS is structured, what APIs are for what and stuff like that.

So I have 2 questions:

  1. Is there any good 'getting started' paper/devdoc/something else that could give me a bit head start with macOS (doesn't matter the language, to be honest - C/++/Python/Rust would be fine)?
  2. Coming from background where I was using Rust (not the game - the programming language) heavily - anyone done any significant work with GUI apps for macOS using Rust? There are some crates like cacao that I've tested for a bit, but I'm more interested in anything that was actually put into production code.

Appreciate any advices! Thanks!

I can't really answer your specific questions, but I would remark that macOS has multiple layers coming from different eras, somewhat like an archeological dig. Some of the newest APIs can only be used with Apple's new favorite language, Swift. Dig a little deeper and you find lots of APIs designed for use with Objective-C (though they can be used with Swift too.) Below that, there are POSIX APIs coming from the FreeBSD heritage of Mac OS X. And there are still a few working APIs that date back to the pre-Mac OS X days. As a result, there are often multiple ways of accomplishing a given task, such as networking.

I haven’t seen what you’re looking for; a developer-focused how-all-the-pieces-fit-together document. I’d like to find a copy of that same (and non-existent?) doc, too. Learning the various app flow control schemes and other such mundane details would be easier.

Linux is itself is a large and complex undertaking, so it’s unclear to me what parts you might or might not be familiar with. Linux GUI work (X, Wayland, Mir, Mutter, etc) is different from macOS GUI work, for instance. Much as with Linux and Windows, Apple too has had different UI frameworks over the years, with Cocoa/UIKit/AppKit, Catalyst, and SwiftUI being probably the most common choices in recent years. the POSIX and C APIs are around, too. (Not that I’d particularly recommend the traditional POSIX and C networking APIs on any platform.)

Apple prefers developers use Swift and Swift frameworks for new work, and SwiftUI and Catalyst for nee GUI apps, and that and the related frameworks are all very different from the POSIX and C APIs. There are Apple and third-party intro docs and books and tutorials and examples available for Swift. (And older docs and books and tutorials and examples for ObjC.)

I haven’t seen much Rust, Zig, or Crystal work, though those and other fine choices are undoubtedly around and in use.

Apple app development involves the Xcode IDE, or Swift and the Playgrounds IDE, or the command line. Or one of various available third-party IDEs.

Outside of picking an initial app target for learning more about that, I don’t have any good suggestions. Swift and SwiftUI and GUI apps, or command-line apps and that using C or Rust or Swift or whatever, lots of choices to start with and learn about…

There is the third-party OS X Internals book—three volumes—that is AFAIK the only resource describing how the various pieces of macOS/iOS/iPadOS all fit together, though that is obviously more focused toward the internals.

Any advices for a new kid coming to Apple development?
 
 
Q