Getting Started with Darwin

Technology Overview

Mac OS X is a UNIX-based operating system with modern GUI and application support frameworks layered on top. The lowest layer, Darwin, includes the kernel, device drivers and driver support frameworks, a BSD personality layer, and various libraries and command-line utilities.

The Darwin layers of Mac OS X are open source. This serves two main purposes: to provide a resource for other open source development efforts (such as Linux and BSD variants) to make their software available on Mac hardware and to provide source code to aid developers writing device drivers and other low-level technologies for Mac OS X.

In addition to being part of Mac OS X, Darwin is a standalone, BSD-based operating system. (BSD, short for Berkeley Software Distribution, is a family of UNIX variants descended from Berkeley’s version of UNIX.)

Darwin is also occasionally used to refer to the Darwin Streaming Server, also known as the QuickTime Streaming Server (QTSS). For more information on QTSS, see the QuickTime Streaming Documentation.

Start Here

For more information about how Darwin fits into Mac OS X, you should read Mac OS X Technology Overview.

For a better understanding of Darwin as a standalone operating system, you should read a book on system administration, such as UNIX System Administration Handbook by Nemeth and others.

Choose a Learning Path

There are five primary areas of learning related to Darwin: the kernel and device drivers, tools, porting, the Darwin OS components, and system administration.

The Kernel and Device Drivers

The first thing you should do before starting to write a device driver is to find out whether your driver should be in the kernel or not. Many drivers and other services are traditionally provided outside the kernel in Mac OS X. The document Should You Program in the Kernel? explains how to decide whether your driver or service needs to be in the kernel.


To learn about Apple’s tools, including its open source tools, read Getting Started with Tools.


To learn about porting software to Mac OS X, read Getting Started with Porting. If you are planning to port a 64-bit tool to Mac OS X, or if you plan to transition a 32-bit command-line tool to a 64-bit environment, read 64-Bit Transition Guide.

The Darwin OS Components

Look at the Open Source topic page to learn about Apple-created open source technologies.

System Administration

To learn about system administration, look at the ADC topic page for Mac OS X. For additional information about security, including documentation on Mac OS X's support for access control lists (ACLs), see Security Overview.

Next Steps

The Darwin Reference Library includes the following high-level resource pages, which can be bookmarked for easy access.

  • Guides

    Conceptual and how-to information for Darwin technologies.

  • Reference

    Focused, detailed descriptions in reference format for Darwin technologies.

  • Sample Code

    Sample applications demonstrating various Darwin technologies.

  • Technical Notes

    Late-breaking documents on issues related to Darwin.

  • Technical Q&As

    Programming tips, code snippets, and FAQs by Apple’s support engineers.

  • Mailing Lists

    There are numerous mailing lists available to discuss Darwin topics with other developers. To discuss Darwin software development, join darwin-development. Other, more specialized Darwin lists of interest include darwin-documentation (for discussion pertaining to Darwin documentation), darwin-drivers (on Darwin hardware drivers), darwin-kernel (on the Darwin Mach+BSD kernel, darwin-userlevel (on Darwin user-level software), and darwin-x86 (on Darwin on the x86 platform).

    For discussion on the QuickTime Streaming Server, join the mailing list for developers (streaming-server-developers) or users (streaming-server-users). To get announcements of key events and milestones for Apple’s open source projects, join publicsource-announce, and to get announcements of open source software submissions, join publicsource-modifications. For software development discussion about OpenPlay and NetSprockets, join openplay-development.

These additional websites may also be helpful:

© 2004, 2009 Apple Inc. All Rights Reserved. (Last updated: 2009-01-06)

Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.