Mac OS 9 Sherlock Search Plugin Architecture

This article examines the search plugin architecture used by Apple’s Sherlock in Mac OS 9 to query third-party internet search engines. It explains the design of the lightweight .src plugin format, details the structural tags used to formulate requests and parse server responses, and highlights how this system enabled early unified web searching directly from the classic Mac desktop.

The Sherlock Plugin Format (.src)

Sherlock queried third-party search engines using text-based specification files designated by the .src file extension, commonly referred to as "Search Internet Plugins." These files resided within the Internet Search Sites folder located inside the Mac OS 9 System Folder.

Rather than relying on compiled binary code, Apple designed the architecture around a human-readable, markup-driven format. This allowed developers, webmasters, and users to quickly build and update adapters for search engines without compiling code or restarting the operating system.

How the Architecture Functioned

Each .src file was modeled on SGML and HTML-like tags, containing all instructions necessary to send a user's query to a remote server and extract the results. The architecture relied on three primary components:

  1. Search Configuration (<search> tag)
    Defined basic metadata, including the engine name, the destination URL, the query path, and the HTTP request method (GET or POST). It also supported routing requests through proxies and setting network timeouts.

  2. Query Construction (<input> tags)
    Mapped Sherlock's user input fields to the URL query parameters or POST bodies expected by the specific search engine. Static parameters (such as affiliate IDs or format specifications) were defined alongside dynamic variables like user, which held the actual search terms typed into the Sherlock interface.

  3. Response Parsing (<interpret> tag)
    Instructed Sherlock on how to strip layout HTML and isolate the search results from the returned page. Using straightforward boundary markers (such as result-list-start, result-item-start, and result-item-end), Sherlock identified where individual hits began and ended. Specific sub-tags targeted the result's title, destination URL, text abstract, and algorithmic relevance score.

Distribution and Extensibility

The architecture supported bundled icons, storing a search engine's 16x16 pixel icon directly inside the plugin's resource fork. In addition, Apple implemented autoupdate tags (update and updateCheckDays) within the format, allowing Sherlock to check remote servers periodically and download revised .src files if a search provider altered its site structure or query parameters.

By decoupling the application interface from the underlying query syntax, Mac OS 9's Sherlock plugin system established an early foundation for desktop federated search and served as a conceptual forerunner to modern specifications like OpenSearch.