Help build darwinOS
darwinOS is a volunteer project. Every feature, driver, and doc page is written by someone who wanted it to exist. Here's how to pick a lane.
darwinOS is a volunteer project. Every feature, driver, and doc page is written by someone who wanted it to exist. Here's how to pick a lane.
The kernel (XNU), the dynamic linker (dyld), the service manager (launchd), and most of libSystem are written in C and C++. If that's your language, this is where most of the early work lives.
Darwin's userland — the frameworks and daemons above libSystem — is a mix of Objective-C, Swift, and C. If you've shipped Mac or iOS apps, almost everything here will feel familiar.
darwinOS only matters if it runs on real machines. If you have a board — a single-board computer, an older Mac, a server, anything — we want to support it. Hardware contributors tend to touch the kernel, IOKit, and the boot chain together.
Before you start, check the Status page to see whether your target already has a partial port. If it does, pick up where the previous contributor left off. If it doesn't, open a tracking issue and post in the hardware channel so others can help.
Operating systems are built by more than programmers. The work below is real and load-bearing — and most of it is harder to fill than the coding work.
Most of this site is stubs. Good technical writers are the difference between a project people *want* to contribute to and one they bounce off. Pick any under-documented subsystem and help.
Reproduce bug reports. Write test cases. Keep the issue tracker honest. A triager who closes duplicates and files useful new issues is worth several engineers.
The site, the logo, the wallpaper, the installer UX, the release announcements — all of it needs people who think visually. Open a discussion if you want to help here.
darwinOS is governed by the people who show up. There is no BDFL and no sponsoring company. Small changes land via pull request with a single reviewer from the affected subsystem. Larger changes go through a lightweight RFC process — a markdown document in `docs/rfcs/` that names a problem, proposes a solution, and invites pushback before any code lands.
The Code of Conduct applies everywhere: repos, chat, issue tracker, community events. Disagreement is fine; being a jerk is not. Maintainers enforce it with the minimum intervention needed.
Boot darwinOS in a VM and build from source before you pick a lane.
Where your work will have the biggest impact — check what's missing.
Chat channels, meeting times, and working groups.
Source code, issue tracker, and the RFC process.