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:
Search Configuration (
<search>tag)
Defined basic metadata, including the engine name, the destination URL, the query path, and the HTTP request method (GETorPOST). It also supported routing requests through proxies and setting network timeouts.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 likeuser, which held the actual search terms typed into the Sherlock interface.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 asresult-list-start,result-item-start, andresult-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.