1984年3月,我从苹果公司休假后,与Thunderware公司合作开发了低成本高分辨率Macintosh扫描仪Thunderscan。项目于同年6月启动,10月初基本完工。为争取媒体评测,Thunderware负责人Tom Petrie安排我向《Byte》杂志展示产品。评测期间,记者John Markoff演示了一款名为Memory Shift的DOS实用程序,可在内存中驻留多个应用并快速切换。这一演示激发了我的灵感:既然PC能实现,Macintosh也应可行。

当时,配备512K内存的Macintosh刚上市不久。尽管存在低内存冲突等技术挑战,但Memory Shift的实际运行让我看到了实现的可行性。在Tom的提醒下,我承诺先完成Thunderscan的Alpha版本,随后再着手研究应用切换器。在接下来的两周里,我确立了为每个应用分配独立“堆区”(heap zones)的设计方案,以隔离应用并优化内存使用,尽管这会增加内存碎片。

微软的橄榄枝与博弈

开发间隙,微软Macintosh应用团队经理Jeff Harbers致电邀请我前往西雅图。微软正面临战略焦虑:随着512K Mac的普及,其应用在有限内存下的优势被削弱,而Lotus推出的集成套件Jazz更支持快速切换。微软希望我受雇开发一款应用切换器,以维持其小内存占用应用的竞争优势。

在微软总部,我与系统程序员Neil Konzen探讨了技术路线。他主张单堆方案以减少碎片,而我坚持独立堆区以换取稳定性。随后,我与比尔·盖茨进行了私人会面。盖茨试图通过估算代码行数(约1万行)和开发周期(不到10周),将项目报酬压低至4万美元。我识破了这一谈判策略,拒绝受雇,并提出独立开发,若成功则应捆绑于每台512K Macintosh中。盖茨最终妥协,仅要求我确保与微软应用的兼容性,双方达成口头协议。

乔布斯的十万美元报价

回到帕洛阿尔托后,我立即着手编写概念验证原型。通过修补GetNextEvent等系统调用,我实现了MacPaint、MacWrite等应用间的硬编码切换。苹果同事Bud Tribble建议增加滚动动画以提供视觉反馈,这一改进极大提升了用户体验。1984年底,在完成Thunderscan发布后,我全力投入这款后来被称为“Switcher”的项目。

1985年1月,苹果第三方布道师Guy Kawasaki安排我向Steve Jobs演示。我展示了应用间的高效剪切粘贴及流畅的滚动切换效果。Jobs当即决定将Switcher捆绑至Mac系统,但随即以“利用苹果机密信息”为由压制定价,最终开出10万美元的收购价。尽管我认为其价值远超于此,但为确保产品能被Mac生态接纳,我接受了报价,并额外争取到若单独销售则按批发价10%收取版税的条款。这笔版税最终为我带来了5万美元的额外收入。

技术攻坚与最终发布

Switcher的开发难点在于颠覆应用的基础假设并保持系统稳定,尤其是与微软应用的兼容性问题。由于微软应用采用伪代码编码以节省空间,调试极其困难。我通过单步执行解释器等方式逐一解决崩溃问题。此外,为防止单个应用挂起导致系统瘫痪,我添加了通过特定按键组合终止当前应用的功能。

起初,我设定Shift-Command-Option-Period为终止快捷键。微软Jeff Harbers曾请求更改,因该组合与Word冲突,但次日他又撤回请求,承认Word已占用几乎所有安全按键组合,不得不修改Word以避让Switcher。1985年4月,Switcher正式发布。此后,该项目移交给了刚加入苹果的Phil Goldman,他后来在此基础上开发了MultiFinder,并于1987年推出。