帮苹果公司节省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. DeepSeek已经让成人玩具“率先受益”
  2. 关于“跨国婚姻”婚姻绿卡,给配偶申请绿卡的各种细节问题!
  3. Google决定终止开源Android啦?
  4. 这小伙年仅25岁,已经是百亿美金公司的创始CEO了!
  5. 川普总统:在未来几周内开始发放“金卡签证”
  6. 美国留学的政策大变?众多名校陷入财政危机,扩招中国学生?
  7. 全面盘点:加州大学的9大分校
  8. 风向有变?🇨🇳中央召开民企座谈会,寓意深刻!
  9. 滞留太空的NASA宇航员即将返回地球
  10. 百万民众“上街游行”抗议川普政府的百天?
  11. 美国“H1B签证”新一轮抽签在3月份开启,新变化真不少!
  12. 美国小伙儿在武当山修行十余年,终于获得“中国绿卡”了!
  13. 美国“大规模”取消国际留学生的签证
  14. 关税战持续了96小时… 突然大反攻?
  15. 李嘉诚在全球的港口“几乎清仓”,套现190亿美元!
  16. 成也“马老板”,败也“马部长”?关于伊隆·马斯克的现状
  17. 盘点美国最繁华的城市 top10
  18. 童工可以合法夜班了?
  19. 川普总统竟然帮马斯克“带娃儿加带货”,特斯拉市值保得住了?
  20. 华尔街“教父”空降北京,李嘉诚的“228亿美元交易”突遭截胡
  21. 这位美国年轻人在中国玩儿一圈,浪费掉美国政府的16亿美金?
  22. SpaceX在13小时内3连发,全力拯救被困宇航员!
  23. 北美留学生注意,美国和加拿大即将共享所有移民和签证讯息!
  24. 2025年,必须认识的一个英文单词 ~ tariff
  25. 川普关税政策可能导致意外后果
  26. 泽连斯基和川普、万斯在白宫当众吵架,饭都没吃着!
  27. 全球研究机构top10盘点:中国9家,美国1家
  28. 时至2025年3月中旬,地球上最顶尖的五大芯片品牌,均由华人掌舵!
  29. 台湾政府:一场误会呀
  30. 中国“不陪川普玩”了… 从此不理会美方闹剧!
  31. 王毅定调了中国统一,马英九发出了战争预警!
  32. 男性精液质量和预期寿命“真有关系”
  33. 中美关税战的最佳写实作品~乌合麒麟发布《就不跪》
  34. 重庆妹子“盯美国男人不放”,前后嫁给美国医生和美国律师!
  35. 美国房产的保值要点,但却被九成华人买家忽视了!
  36. 遭遇无故吊销学签,藤校的中国留学生起诉且赢了🇺🇸国土安全部!

美国动态 美果转盘 美果商店

Your IP: 18.221.21.111, 2025-04-22 17:28:07

Processed in 0.13821 second(s)

头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息
已有0次打赏
(1) 分享
分享
取消