C-Macs – a pure C macOS application
Licensing and “Open Source” Status
- Repository lacks a formal license; by default this means “all rights reserved” in many jurisdictions.
- Several commenters warn this is riskier than using even a restrictive license, since terms can change later.
- The informal “use at your own risk, no Objective‑C allowed” text is viewed as (a) not legally solid, and (b) incompatible with standard open‑source definitions.
- Some classify it as “source-available” rather than open source; others like the attitude but still recommend adopting an established license.
What the Project Actually Does
- It’s a macOS GUI app written in C that drives Cocoa via the Objective‑C runtime (e.g.,
objc_msgSend) without any.m/Objective‑C source files. - This mirrors what the ObjC compiler/runtime does under the hood: dynamic message sending, runtime class creation, method registration.
- Commenters liken it to manually building C++/ObjC object systems from C using vtables and runtime metadata.
Significance and Practicality
- Some see it as an educational “digging with a spoon” exercise: demystifying Cocoa/ObjC, showing that “impossible” things (pure‑C GUI) can be done.
- Others argue it’s not practical for production: more complex, less safe than ObjC/Swift, not faster than just writing ObjC, and mainly useful for language bridges or learning.
- It still compiles and runs on modern Apple silicon, which impresses some readers.
Apple APIs, Languages, and Alternatives
- Discussion notes that below Cocoa there are C‑level APIs (Core Foundation, Core Graphics) and historically Carbon, so C GUIs are possible, if painful or deprecated.
- Several point out existing cross‑platform or wrapper approaches (SDL, Qt, X11/XQuartz, various *Cocoa bindings for other languages).
- Some lament that newer APIs like Metal are ObjC‑centric rather than having clean C interfaces, making cross‑language interop harder; this is seen as Apple being opinionated about ObjC/Swift.
Broader System and Performance Commentary
- There’s debate about macOS as a “polished Unix”: some describe the BSD underpinnings and low‑level tooling as dusty, inconsistent, and hard to use directly.
- One commenter questions the reported ~1.5 MB memory use for such a trivial window, while others note accounting details (e.g., window backing stores) can differ by OS.