launchd also has replaced init as PID 1 on macOS and as a result it is responsible for starting the system at boot time.
Stored in the LaunchAgents and LaunchDaemons subdirectories of the Library folders, the property list-based files have approximately thirty different keys that can be set.
SystemStarter had a very simple system of dependencies that used the "Uses", "Requires", and "Provides" keys in the plist of a startup item.
Using IPC is much more subtle than the SystemStarter's keys and requires more work from the developer, but it may[citation needed] lead to cleaner and quicker startups.
When launchd scans a folder, or a job is submitted with launchctl, it reads a plist file that describes how the program is to be run.
This protocol is less flexible, although it does not, as systemd does, require the daemon to hardcode a starting file descriptor (as of 2014, it is 3).
In 2005, R. Tyler Croy ported launchd to FreeBSD as part of Google Summer of Code Project.
In August 2006, Apple relicensed launchd under the Apache License, Version 2.0 in an effort to make adoption by other open source developers easier.
In December 2013, R. Tyler Croy announced his intent to resume work on his port of launchd to FreeBSD, and his "openlaunchd" GitHub repo subsequently rose in activity.
In 2014, with OS X 10.10 and iOS 8, Apple moved code for launchd to closed source libxpc.
[10] In August 2015 Jordan Hubbard and Kip Macy announced NextBSD, which is based on FreeBSD-CURRENT kernel while adding in Mach IPC, Libdispatch, notifyd, asld, launchd, and other components derived from Darwin, Apple's open-source code for OS X. Apple Developer: Apple Developer Retired Documents Library: Other links: