be made permanent when stored in /etc/launchd.conf. (A per-user ~/.launchd.conf file appears to have been considered, but is not supported in any existing version of macOS.) launchctl communicates with launchd via a Mach-specific IPC mechanism. Property list A property list (plist) is a type of file that launchd uses for program configuration. 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. A list of often used keys follows below. All keys are optional unless otherwise noted. For a full list, see Apple's manual page for launchd.plist. Socket activation protocol The name of each key under Sockets will be placed into the environment of the job when it is run, and the file descriptor of that socket will be available in that environment variable. This differs from systemd's socket activation in that the name of a socket definition inside of the job configuration is hardcoded into the application. 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). History The software was designed and coded by Dave Zarzycki at Apple. The company planned for all of the following to be superseded in OS X environments – init rc init.d script rc.d script SystemStarter inetd / xinetd crond / atd watchdogd – and most of those things were superseded when launchd was introduced with Mac OS X v10.4 (Tiger). In 2005, R. Tyler Croy ported launchd to FreeBSD as part of Google Summer of Code Project. It could not be run as PID 1 (only a session init), and it was not commonly used on that platform. In 2006, the Ubuntu Linux distribution considered using launchd. The option was rejected because the source code was subject to the Apple Public Source License – described as an "inescapable licence problem". Ubuntu instead developed and switched to its own service management tool, Upstart. 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. Most Linux distributions use systemd or Upstart, or continue with init, and the BSDs also continue with init. 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