BSD on Windows: Things I wish I knew existed
Efforts to run BSD or Unix-like environments on Windows—from early projects like BSD on Windows (BOW) and coLinux to Microsoft’s own SFU/Interix and today’s WSL—highlight both the appeal and the complexity of bridging these operating systems. Commenters weigh the practicality of such subsystems against modern alternatives like virtual machines and compatibility layers, and debate why POSIX, Linux-specific APIs, and Windows’ stable Win32 interface have led to today’s fragmented portability story. The thread also touches on the strengths and weaknesses of the NT kernel design and how strategic choices by Microsoft and the wider open‑source ecosystem shaped which platforms became dominant.
Historical BSD-on-Windows (BoW) and Unix Subsystems
- BoW is seen as a very cool historical artifact: a BSD environment on Windows 3.1 using a.out binaries, more like EMX/HURD-style services than Cygwin.
- Strengths mentioned: runs on very modest hardware, no disk formatting or driver changes, can use Winsock, and can run things like vi, gcc, hack, Apache 1.3.
- Main limitation: essentially single-user, due to Win16 constraints; people speculate a NT-based evolution might have been far more impactful.
- Some would prefer a modern, full BSD subsystem on Windows rather than a quirky environment like BoW.
Other Unix-on-Windows Solutions
- Participants recall a long line of approaches: Cygwin, MSYS2, Git Bash, coLinux, hacked debugger-based Linux, SFU/Interix, UWIN.
- SFU/Interix is described as both “awful” and “worked fine” depending on use case; some had success compiling real workloads, others found it unreliable and awkward to license.
- There’s nostalgia for a Windows that boots into a character-mode Unix-like userland.
Cross-Platform Binaries and POSIX vs Linux
- Some wish for native cross-compatibility between Windows and Linux executables; others argue current reality (Win32 + WSL + containers) is likely as good as it gets.
- Cosmopolitan/APE and Win32-on-Linux are cited as promising directions, but limitations for complex APIs (graphics, Bluetooth, etc.) are noted.
- Strong criticism of targeting “Linux-only” APIs and glibc-specific behavior; POSIX is seen as underused despite being sufficient for most apps.
- BSD users argue that if developers avoided Linux-specific code, their software would largely “just work” across BSD and other Unix-like systems.
Static Linking, Packaging, and Linux Complexity
- A detailed anecdote describes failed attempts to ship a single statically linked Love2D game binary due to deep dependency stacks (image/audio libraries, Mesa, GPU drivers).
- Static linking on Linux is portrayed as fragile and frustrating; dynamic linking plus bundling (.so files, AppImage, Flatpak) is suggested as more realistic.
- Go with cgo disabled is mentioned as a partial workaround for static CLI binaries, though graphics remains hard.
Microsoft, POSIX, and WSL
- NT’s historical POSIX subsystem is framed as both a checkbox for government contracts and a missed opportunity; if it had been improved instead of abandoned, some think Linux’s later dominance might have been blunted.
- WSL/WSL2 is referred to as a kind of “mea culpa,” reintroducing Unix-like capabilities after earlier subsystems were dropped.
- Debate over Interix: one side calls it “bought and extinguished,” others point out it was officially supported for over a decade, though its usability allegedly declined.
Kernel Design: NT vs Unix
- Some praise the NT kernel’s VMS heritage and design; others call it “not great / not terrible,” criticizing driver complexity, IRQL model, the HAL, and split network stack.
- There’s disagreement on whether benchmarks or everyday experience show NT to be particularly strong or weak; consensus is that Win32 layers largely hide any elegance underneath.
Broader Frustrations: Ecosystems and Longevity
- Complaints about proprietary ecosystems causing hardware obsolescence (e.g., printers losing driver support on new macOS versions).
- Concern that Linux’s dominance in hardware and DRM support paradoxically reduces practical OS choice, as other free OSes must import Linux code to keep up.
- Some argue the industry undervalues backward compatibility and preservation, leading to unnecessary waste.
Off-Topic: Wealth, Creativity, and Expectations
- A tangent explores how wealthy creators sometimes stop doing “cool projects” (like ambitious games or OS experiments) once rich.
- Opinions diverge between criticizing this as a wasted opportunity versus accepting that earlier work was “enough” contribution.