MinC Is Not Cygwin

Terminology: Unix, Linux, BSD, POSIX

  • Several comments note widespread confusion: educators often present “Linux” and “Unix/BSD” as unrelated, when they largely share a POSIX interface.
  • People increasingly use “Linux” as a generic word for “Unix‑like shell environment,” which backfires when scripts assume GNU tools or bash and are then run on BSD or macOS.
  • Some argue the concept of POSIX has already “won” (everyone uses printf etc.), but the word POSIX never became popular and probably never will.

What MinC Actually Is

  • The site calls MinC “a tiny kernel,” but code readers conclude it’s a user‑space POSIX/BSD compatibility layer for Windows, not a real kernel.
  • It exposes OpenBSD 6.1 userland and APIs via a DLL that emulates BSD system calls on top of the NT kernel, more akin to Cygwin than to a standalone OS or VM.
  • The author later concedes it’s really “kernel emulation” in user space and that the word “kernel” is misleading; what’s implemented is essentially the syscall interface.

Relationship to Cygwin, MinGW, MSYS2, WSL

  • Multiple comparisons:
    • Cygwin/MSYS: POSIX APIs implemented in a Windows DLL; MinC is described as a BSD‑flavored analogue.
    • MinGW: more focused on building native Win32 apps, not broad POSIX emulation.
    • WSL1: syscall translation layer; WSL2: full VM with better performance but heavier and subject to org policies/virtualization restrictions.
  • Some see MinC’s value where WSL is unavailable, virtualization is banned, or tighter Win32 integration is desired.
  • Others ask “why not just use WSL or a VM and get real Linux,” emphasizing divergence between Linux and OpenBSD specifics (e.g., ifconfig, rc vs systemd).

Teaching Use and Pedagogy

  • MinC is motivated by teaching 16‑year‑olds command‑line skills on school Windows machines “without the hassle of virtualization.”
  • The course reportedly starts with “bare‑bones Unix” and Apache to hook interest, then moves to Linux distributions later.
  • Critics question using OpenBSD userland to “teach Linux,” since Linux’s dominant userland is GNU with systemd, not OpenBSD’s rc ecosystem.

Technical Details and Debates

  • Implementation notes: syscall emulation in a fixed address range for faster startup; manual register saving/restoring to mimic context switches; Windows file handles modeled as different virtual filesystems; fork() implemented via threads, unlike Cygwin’s process‑clone approach.
  • Commenters correct several misconceptions about kernel vs user space, context switching, and Windows internals, and argue the project is technically impressive but oversold by the “kernel” language.

Broader Context: Unix-on-Windows Options

  • Thread touches on long history of Unix‑like layers on Windows (Cygwin, UWIN, MKS, MSYS2), performance pitfalls (filesystem, antivirus filters), and the gradual shift of many users from Cygwin to WSL or native Unix systems.