帮苹果公司节省2亿美元后… 硅谷码农的亲历故事
网友【硅谷故事】 2022-03-22 13:58:29 分享在【美国信息交流】版块    1    1

近日,在 Quora(类似知乎)网站上,有 Po 主提出了一个问题:“要使操作系统获得 UNIX 认证,需要做些什么?”答主 Terry Lambert 给出了非常精彩的回答,鉴于他的身份——前苹果工程师,曾负责 Mac OS X 内核的大部分工作,该回答很快就获得广泛关注并获得了上万赞。

这是一个引人入胜的故事。早年苹果公司推出 Mac OS X 操作系统的时候,经常利用“兼容操作系统的 UNIX 内核”作为宣传手段。比如,在其网站上,就专门有一页介绍 Mac OS X 的 UNIX 的文章。

The Open Group(国际开放标准组织)对此提出了诉讼,称其未经授权便擅自使用 Unix 名称。一旦苹果败诉,就需要赔偿 2 亿美元。

不过,苹果公司坚持自己可以自由使用 Unix 的名称,认为自己没有进行虚假宣传。但为了应付这场诉讼,据 Lambert 回忆,当时苹果对于此事主要有两个解决方案,要么以大约 10 亿美元的代价收购国际开放标准组织,要么赶紧获得 Unix 兼容认证,从而化解这场诉讼。

史蒂夫·乔布斯将这个认证的“秘密”任务交到了前苹果技术负责人 Lambert 手上,需要针对现有的 Mac OS 源代码运行合规性测试,边测试边修改,完成时间只给了一年。这也意味着 Lambert 需要在短时间内对 Mac OS X 内核的 1300 万行代码了如指掌,技术难度非常大。

Lambert 被承诺在任务完成之后,团队将会获得 2000 万美元的股权,Lambert 个人将得到 1000 万美元。实际上,这种任务如果是针对 Linux 的,那么需要一个二三十人的团队工作五年,但 Lambert 带着一支五人团队在一年内就完成了,期间还为数百个开源项目贡献了大约 200 万行的代码。只不过,Lambert 最终没有得到这 1000 万美元的报酬,他的股权被其领导独吞了。

网友分享在meiguo.com上的图片

有些人说不存在 10x 程序员,但我认为他们是没有遇到像你这样的 100x 程序员。虽然我们都知道最终 Mac OS X 已经通过 UNIX 认证,不过这并不影响我们跟着 Lambert 的回忆去了解这段有趣过往的细节。

让 Mac OS X 成为真正的 UNIX

按照 Lambert 的说法,为了让 Mac OS X 通过 UNIX 认证,这里面要做的工作可太多了。

让 Mac OS X 成为真正的 UNIX™,这样就可以化解这场诉讼了,这对在 Linux 日益普及的情况下逐渐失去市场的国际开放标准组织来说是件好事。

以大约 10 亿美元的代价收购国际开放标准组织,这样苹果公司就可以自由地使用该商标;但是,这并不能使他们免除与 Sun Microsystems、IBM 和其他公司的现有合同义务,因为这些公司都已经获得了 UNIX 商标的使用许可。当时有人问 Lambert 是否可以带领一支团队去做第一个选项的工作,他表示,同意的前提是,可以基于这个项目,指导整个组织的其他部分都在自己的代码库上进行相应的修改,并且可以对提交规则进行相当宽松的处理。

随之,Lambert 获得批准并开展认证工作。他们首先针对现有的 Mac OS 源代码运行合规性测试套件,由于头文件的缘故,测试套件立即显示出错。

他和同事 Ed Moy 做了两行更改,将类型定义从 <stdio.h> 移到它应该在的位置。在 <stdio.h> 中有一行更改,而另一行的更改是在该类型实际上应当存在的文件中。

接着再次运行测试,发现首次测试中的其中一个头文件错误消失了。因此,Lambert 等人做了一次“世界构建”(world build),将 Mac OS X 中的一切,包括 iTunes 都进行了重建。这一更改之下,有接近 150 个项目未能顺利重建,iTunes 也在其中。

于是 Lambert 和 Ed 对这些项目进行了认真的研究,并修复了其中的每一个项目,以让它们都能够进行构建。他们接着又进行了一次“世界构建”,所有东西都建立起来了。

也正是在那个时候, Lambert 才有机会接触到苹果的所有源代码。然后他们向项目提交了高优先级的错误修复,但其中一些立即被降低了优先级,另一些只需要做简单修复,因为他们帮助提供了补丁。接着工程副总裁 Bertrand Serlet 重新提升了那些被降级的项目的优先级。然后,Lambert 他们提交了头文件更改。

项目甚至“惊动”乔布斯

事已至此,Lambert 他们在这时候不得不重新评估一下整个项目的可行性。考虑到他为这个项目设定的先决条件,他和 Ed 都认为,这在时间范围内是可以继续下去的。

该项目还升级到乔布斯那里。Lambert 继续获得执行批准,毕竟,这样做能让苹果公司节约大量资金,而且还改进了所有 Mac OS X 服务器的营销宣传资料。

他们被承诺在完成之后将会获得 2000 万美元的股权。Lambert 将得到 1000 万美元,Ed 和 Karen Crippes 将分别得到 500 万美元。

Lambert 表示,当时他戴了很多“帽子”,不只是一个技术负责人,而且还是事实上的项目经理。

这个过程也是肉眼可见地漫长。Lambert 估算需要约一年的时间,这是一支由 5 个人组成的项目团队:三名 mousekateers(并非拼写错误),两名承包人:是 Len Lattanzi,负责用户空间的代码;Jaime Delgadillo,负责全职的自动化测试和 Bug 归档,并且尽量提供一些补丁。

项目组还有两名临时承包人,一名负责工具的合规性,另一名则负责手册页面。另外,他们还可以根据情况从苹果的其他部门抽调员工进行短期的工作。

漫长的一年

第一个大喜进展是,所有的头文件都通过了测试,这样测试套件中的其他测试就可以开始运行。在那个时候,Lambert 实际上已经将所有的头文件的修改提交给了 Mac OS X 的其他部分。当 Tiger(指 Mac OS X v10.4)版本发布时,头文件就已经符合标准了。但是,这影响了 CodeWarrior(Mac 的 IDE)的正常运行。Lambert 说自己一直想要解决这一问题,但一直没有机会,而且 CodeWarrior 或多或少都受到了影响。

对于苹果公司的其他部门而言,Lambert 刚刚解决了“修复头文件”的 Bug,它包含了许多其他针对单个头文件的 Bug,这用了三个月左右的时间。

Lambert 曾承诺过一年的时间,那么他将怎样实现这一年的预期呢?

Lambert 回忆道,“我知道,对头文件进行强制性的更改,以及与之相关的项目更改,将会成为项目中最大的单个部分。一旦我们能够进行其他的测试,那么在其他方面将会有大量的‘可轻松实现的目标’等着我们去解决。这个过程用了两个多月的时间,我们在提交规则时总是犹豫不决,但很快就完成了。Ed 在我的协助下完成了 libSystem 的大多数工作(libc + 其他系统库),并把它们合并到一起,从命名空间中移除某些内容;这也是为什么在 /usr/include/sys 中,头文件以"_"开头。”

“在等待提交的过程中,你可以并行地做其他工作,我们就是这样做的。在实现这些可轻松实现的目标之后,还有许多工作要做,例如重写内核中的信号系统,但这并不是那么容易实现。”

不过 Lambert 等人已经把 Umesh(我不会告诉大家他的姓)给说服了,“因为他不希望我们去触碰他的 pthreads 代码,不管怎么说,他还是想要在那里做出一些改动,有了这个项目作为反复推敲这些更改的手段,让他感到非常高兴。”后来,他们还从 Mike Smith(Michael Smith,苹果高级工程师)那里得到了“勉为其难”的支持,让他重写文件锁定代码。

项目组最终还通过询问有关陷阱路径的问题以及围绕信号系统堆栈帧保存的问题“收买”了 Joe Sokol。不过 Lambert 强调,在这些人当中,Umesh 对他们的 deadline 有着最大的帮助。

扣动扳机

万事俱备,Lambert 正准备“扣动扳机”,意外随之而来。

“他们引入了英特尔的代码更改,让我们再等上两个星期,但一切都乱了套。所以我花了三天的时间,将一致性分支上所有的补丁都重新整合到英特尔的内核代码中。到了那时候,我已经对 Mac OS X 内核的 1300 万行代码了如指掌。”

然后大家又回到了通过测试的状态。后来有人告诉 Lambert,不能为 Tiger 做整合。但这样会错过已设定好的 deadline。Tiger 的发布时间被再次延迟了 6 个月,一次又一次地延迟。这个问题不在内核,而是在英特尔。

Lambert 说,“我们本来可以轻松地在 Tiger 上发布,和我们自己设定的 deadline 保持一致。”但如果要他给 Linux 做相同的工作,可能要花五年的时间,而且还得需要二三十人。毕竟 Linux 发行版过多,产生了大量的阵营。

Lambert 最后提到,团队为开源社区做了很多贡献,“我们从开源社区收获了许多感谢,尤其是让 bash 顺利通过测试的修复。你绝对不会知道,作为这个项目的一部分,苹果公司为开源社区做出了多少贡献,至少对于非苹果公司的人而言,这是一个秘密项目,因此我们并没有将这一事实宣扬出去。但是我估计,当年我们为数百个开源项目贡献了大约 200 万行的代码。虽然感激之情有很多,但这种感激并非归于集体,因此,苹果公司总是被人诟病为‘使用开源代码,但从不回馈’。但,我们修复了至少 15 个 GCC 的 Bug。而你根本不知道。”

因此,整体来说这是一项规模不小的工程,尤其是在为了获得合规性的情况下。Lambert 感慨道,这真是一个漫长的过程。

网友分享在meiguo.com上的图片

尽管如此,Lambert 在评论区透露,自己由于一些原因 ,最终并未获得预期的 1000 万美元股权。

原文链接:https://www.quora.com/What-goes-into-making-an-OS-to-be-Unix-compliant-certified

编译:头条号 @InfoQ

meiguo.com 发布人签名/座右铭立足美国硅谷,分享有关创业的所有故事!
大家都在看
楼主新近贴
回复/评论列表
默认   热门   正序   倒序
meiguo.com 创始人

emotion

1   2022-03-22 13:58:29  回复

回复/评论:帮苹果公司节省2亿美元后… 硅谷码农的亲历故事

暂无用户组 升级
退出
等级:0级
美果:
美过
精华推荐
  1. 韦伯望远镜(JWST)发布迄今为止最大的早期宇宙地图
  2. 世界瞩目的电话,十个不寻常的细节剖析!
  3. 英伟达的市值突破了四万亿美元,创人类历史纪录!
  4. 马斯克的“130天政府生涯”终结后…
  5. 美国暂停了学生签证预约,申请者在社交媒体平台的活动须谨慎!
  6. 手机充电习惯是影响电池寿命的根本原因
  7. QQ等级256级用户诞生,首次解锁“时光企鹅”图标!
  8. 美国房价仍然高位,“美国梦”成奢望!
  9. 美国国会通过了减税法案,马斯克和川普总统再次激烈交锋!
  10. 遥控器电池,被幼儿误吞… 欧系保险公司赔付了近1.4亿元人民币!
  11. 难怪马斯克公开认错… 川普总统的相关杀器可以更多?
  12. 能熟练运用AI也不行?硅谷的40万人在近期被炒鱿鱼
  13. 马斯克声称川普在“爱泼斯坦名单”,白宫回应:局面令人遗憾!
  14. 比尔盖茨的财富突然蒸发了510亿美元,真相却令人肃然起敬!
  15. 孩子沉迷手机的真相和破局之道
  16. 美国“非法移民家庭”遣返行动引发了“婴幼儿无国籍”的危机
  17. 中美通话的内容简短,但意味深长!
  18. 川普和马斯克的公开交锋升级了
  19. 萝莉岛是美国的政治中心?马斯克并非不懂政治,而是太懂了!
  20. 宗庆后家族的多处海外房产曝光,价值数亿元!
  21. 川普总统声称希望中国“增加美油采购”
  22. 英国2岁男童竟然刷新了门萨俱乐部“最年轻男性”会员纪录
  23. 川普总统批评支持者,马斯克激烈回应!
  24. 中国政府在构筑战略资源防线,重拳打击稀土走私!
  25. 川普政府的关税政策或将加速中国崛起,助力中国成为全球的经济主导力量!
  26. 川普总统宣布“金卡计划”网站开放
  27. 互联网女皇“340页AI报告”猛料刷屏
  28. 任天堂的Switch 2正式发售,参数细节全曝光!
  29. 马斯克打算组建新党“美国党”代表中间派
  30. 川普家族“哈佛风波”和签证政策的突变
  31. 属于中国的世纪可能已经到来
  32. 美国移民新机遇:紧缺人才的绿卡通道“无需排期”
  33. 美国新法案“大漂亮”引发了全球资本配置大调整
  34. 川普总统:加拿大可以免费加入“金穹”导弹防御系统
  35. 中美两国元首针对当下双边关系和经贸合作,☎️通话交流!
  36. 鲁比奥声称将会收紧中国留学生的签证审批政策

美国动态 美果搜索

Your IP: 216.73.216.12, 2025-07-27 11:53:05

Processed in 1.28778 second(s)

头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息