What Mac OS X can learn from Windows: process control
I intended to include a brief section on Windows' flaws in comparison to Mac OS X, but it turned into a long article unto itself. Until I get it published, you'll have to just believe me when I say that Windows is full of poorly implemented ideas and architectural flaws. But what about ideas from Windows that Mac OS X can use? One such idea is the Services control panel.
Since Windows NT was initially launched, it offered a simple way to view defined Services (think "daemons"), and show which were running; whether they were disabled, set to start manually, or automatically start at boot; show dependencies (other services that need to be running in order to start); set the user that service will run as; and provide settings that define what happens if the service fails (i.e. try restarting the service, run a script, or restart the computer). The Services control panel also provides controls to start, restart, stop or pause a service.
Apple's first foray into delivering Unix's daemons in a friendly desktop environment involved SystemStarter and its Startup Items. This brought some of the functionality of Windows' Services, but was clearly lacking in some areas. With Mac OS X 10.4 Tiger, Apple introduced the new launchd, which offers sophisticated process management. Rather than continuing with the old Unix conventions of how to start and maintain processes, Apple built a new mechanism that handles everything from:
- starting processes at launch or upon user login
- starting processes at scheduled times
- starting processes when files change at a watched path location
- starting processes on demand by listening for requests
- specifying launch arguments and logging levels
- specifying launch environment variables and process working directories
- specifying resource limits and priorities
Idea 1: Mac OS X Launch Control
So launchd is pretty cool. But Apple, where's the user interface? The power of launchd and launchctl should be available to users via a utility application that lets users set up launch agents and daemons without diving into an XML editor or using the command line. Here's what I'd like to see delivered in "Launch Control," a new Leopard utility application:
- a listing of running processes and what started them
- their launchd Label and Description, which show what it is and what does
- a listing of inactive launchd items available to configure
- a simple interface to configure new agents and daemons in launchd.
- start, stop, pause and restart controls
- start options based on launchd triggers, AppleScript and Automator actions:
- launchd time and date triggered events
- launchd on demand triggered events
- launchd watch path triggered directories
- virtual watch paths for smart folders, triggered when queries result in matches
- watched mailboxes that receive mail
- iCal scheduled events
- other events triggered by Automator actions and other scripts.
Delivering Launch Control would put Mac OS X in advance of Windows in the realm of process management. With Launch Control in place, the next step is...
Idea 2: Expanded feedback services