Getting Started with Open Source

Technology Overview

Open Source means many things to many people. To some, it is software whose source code is available to the people who use it. To others, it is a philosophy of writing source code that can be reused freely. To still others, it is a group of software licenses that meet certain criteria for openness. In general, though, it refers to software licensed under a broad range of licenses, all sharing one common characteristic: the source code is available for anyone to see, inspect, and modify.

Mac OS X contains many open source tools and technologies, including third-party tools that are built and packaged with the operating system, as well as fundamental parts of the operating system itself. If you haven’t already done so, you should read the ADC topic page for Open Source.

Start Here

Before porting or writing open source software for Mac OS X, read Mac OS X Technology Overview to help you understand how open source software fits into Mac OS X and to familiarize yourself with the Mac OS X environment as a whole.

If you need to familiarize yourself with the UNIX-based underpinnings of Mac OS X, read a book on system administration, such as UNIX System Administration Handbook by Nemeth and others. In addition, you may find Mac OS X Man Pages helpful in understanding the details of Mac OS X command-line tool syntax and UNIX-based C API interfaces.

Choose a Learning Path

If you are an open source developer, you need to understand the Mac OS X programming environment. If you are a high-performance/scientific computing user or developer, you need to understand what high-performance computing technologies are available to you. If you are a system administrator, you need to understand how administering Mac OS X systems differs from administering other UNIX-based systems.

Porting and Developing Applications

Before you port or develop an open source application on Mac OS X, you need to learn about the differences between Mac OS X and other operating systems that you already support. Two good starting points are Porting UNIX/Linux Applications to Mac OS X and Porting to Mac OS X from Windows Win32 API.

If you are planning to port a 64-bit tool to Mac OS X or transition a 32-bit command-line tool to a 64-bit environment, read 64-Bit Transition Guide.

Using and Developing High-Performance and Scientific Computing Technology

If you are a high-performance computing user or developer looking for information about high-performance computing, read Getting Started with Tools, then read the ADC topic page for high-performance computing.

Administering Mac OS X Workstations and Servers

If you are a system administrator interested in open source technologies in Mac OS X, you should learn about the technology areas that interest you.

  • If you’re looking for general information about system administration issues, look at the ADC topic page for Mac OS X Server.

  • If you’re interested in Apple open source technologies, look at the Apple Open Source website and the Mac OS Forge website.

  • If you’re interested in open source database technologies in Mac OS X, go to the web sites for SQLite and MySQL.

  • If you're interested in shared authentication across multiple computers, see the ADC topic page for Directory Services.

  • If you’re interested in Apple’s tools, including its open source tools, read Getting Started with Tools.

  • If you're interested in security, including documentation on support for access control lists (ACLs) in Mac OS X, see Security Overview.

  • If you’re interested in scripting in Mac OS X, look at the ADC topic page for scripting. In addition, you can learn more about shell scripting in Shell Scripting Primer.

Next Steps

The Open Source Reference Library includes the following high-level resource pages, which can be bookmarked for easy access:

  • Guides

    Conceptual and how-to information for open source technologies.

  • Reference

    Sample applications demonstrating various open source technologies.

  • Sample Code

    Sample applications demonstrating various open source technologies.

  • Mailing Lists

    There are numerous mailing lists available to discuss open source topics with other developers. 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.

    In addition to these general lists, many Apple open source technologies have their own mailing lists.

    To discuss Darwin (kernel, driver, and command-line) software development, join darwin-dev. 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-dev) or users (streaming-server-users).

    For software development discussion about OpenPlay and NetSprockets, join openplay-dev.

    For discussion about HeaderDoc, the Man Page Generation Language (MPGL), and other related documentation tools, join headerdoc-dev.

    For discussion of the Web Kit SDK, join the webkitsdk-dev mailing list. For discussion of potential improvements and extensions to the Web Core and JavaScript Core frameworks, joine the webcore-dev mailing list.

    For discussion of web development (including server and client-side scripting, page design, and so on), join the web-dev mailing list.

    For discussion of Apple's open source security technologies, join the apple-cdsa mailing list.

    For other mailing lists that may be of interest, see the Apple mailing list info page.

These additional websites may also be helpful:



© 2009 Apple Inc. All Rights Reserved. (Last updated: 2009-05-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.