(上)苹果有开源,但又怎样呢?

news2024/11/14 16:15:46

苹果(Apple Inc.)有多伟大,我相信已经无需赘述了。但是,这里的伟大是指用产品和理念对行业进行的革命性颠覆,而不是对开源而言

相反,在某种程度上,苹果几乎就是开源的反义词。这种骨子里的 “封闭”,从苹果诞生的那一刻就决定了。

1976 年,两位都叫做 Steve 的创始人(乔布斯 和 Wozniak)在车库创建苹果的时候,估计也没想到他们之后的分歧会如此之大。Wozniak 是个典型的工程师,当他把那个后来被称作 AppleⅠ 的电路板展现给乔布斯时,当乔布斯用自己惊人的商业天赋将 AppleⅡ 推成 “爆款” 时,就注定了 Wozniak 的工程师特质只能在乔布斯的天赋下落得下风。

苹果两位创始人手里拿着 AppleⅠ,乔布斯在右,Wozniak 在左

最早的时候,苹果公司只出售硬件。为了不让其他公司的软件 “糟蹋” 自家的硬件,苹果很快开发出了自家系统;为了防止用户破坏改装,苹果产品不能擅自拆开,电脑不能插入扩展卡,iPhone 不能换电池,还使用了特制的螺丝 “防盗”。至此,苹果一家公司包办了整条产业链,从电子零件到销售网点,都是它的业务范围。无论硬件、软件、还是内容,都在它的控制之中。

除了绝无仅有的全封闭生态商业模式,苹果还盛行严苛的 “保密制度”,员工泄密就意味着被解雇甚至面临诉讼。

电影《史蒂夫・乔布斯》中法鲨饰演的乔布斯在阐述自己的 “封闭” 理念

苹果当真只有封闭吗?当然不是。苹果可是实实在在地参与和贡献过开源。2021 年 12 月 9 日,苹果为其开源项目推出了一个重新设计的网站,包含了 Swift、WebKit、FoundationDB、ResearchKit、CareKit、Password Manager Resources 六个自主开源项目,而苹果参与贡献的其他项目也放在了上面。

没错,即使在开源被微软称做 “毒瘤” 的时代,苹果也没有这样激进地反对开源,它只是默不做声地、用一种狡猾且精明的态度来处理与开源的关系。 

简单来说,开源对苹果来说更像是一种工具和手段,为它所用、达其目的。开源在试图用自己的价值观念去构建一个开放且协作的技术环境,但当资本开始用吸收、提炼、利用、改造等手段去进行 “柔性” 地招安、整合和收编开源时,“异化” 在所难免。而苹果正是此类资本的代表。

在本质上,开源更多是一种文化和信仰,是用社群的力量去构建完全开放的技术生态。而苹果所做的开源并没有涉及到这一深层次的 “理想”,反而一直在 “工具化” 开源,这种开源真的是我们想要的吗? 

上篇: 乔布斯的复仇衍生品 Darwin

“你是想卖一辈子糖水呢,还是和我们一起改变世界?”

乔布斯在邀请当时的百事 CEO John Sculley 加入苹果时,肯定没有想到他会被 Sculley 踢出这个自己一手带大的公司。

1985 年 9 月 16 日,乔布斯辞职苹果的同时,为 NeXT 提交了公司注册文件。乔布斯用手里的股票换了 7000 万美金,只留了 1 股,为的是还能参加苹果的股东会。而这笔钱也成为了 NeXT 电脑公司和皮克斯动画公司的创业基金。其中,NeXT 公司所做的事成为了乔布斯回归苹果的砝码。

1988 年,NeXT 公司推出了 NeXT 电脑,使用 NeXTStep 为操作系统。在当时, NeXTStep 是相当先进的系统,以 Mach 内核和 Unix (BSD) 为基础,使用 PostScript 提供高品质的使用者图形界面, 并以 Objective-C 语言提供完整的面向对象环境。

此外,NeXTStep 操作系统提出程序坞(Dock or Taskbar)的概念和一系列现代 GUI 界面上的概念,例如拖动窗口时的实时滚动、彩色的图标概念、文件修改时的提示功能等,还开创了现代 GUI 编辑器的先河,对整个计算机界都产生了深远影响。

而 NeXTStep 所基于的基础 —— Mach 和 BSD 都是开源的。

但 NeXT 并没有给乔布斯赚到什么钱,反而和皮克斯动画一起将乔布斯卖苹果股票换来的 7000 万美金亏了个干净。在乔布斯快撑不住的时候,幸好皮克斯动画推出的《玩具总动员》大爆,才得以回血;而 NeXT 公司早从 1992 年起,就因为硬件销售情况不佳,开始授权其它硬件生产商使用 NeXTStep 系统,并在 1993 年停止了亏损的硬件业务,开始专心于软件市场开发。

NeXT 公司创始团队,乔布斯在 C 位

1996 年 12 月 20 日,苹果开始收购 NeXT 公司,其中包括所有知识产权、技术以及软件开发人员。1997 年 2 月 7 日,这笔收购以 4.29 亿美元和乔布斯获得 150 万股苹果股票的价格完成,同时乔布斯取代了当时的 CEO Amelio,王者归来。

这 11 年,不仅是乔布斯的蛰伏期,同样也是苹果的。1996 年决定收购 NeXT 的时候,苹果已经陷入了经营管理困局,电脑市场份额由鼎盛时的 16% 跌到 4%,股票也一蹶不振。

明面上看,苹果是在购买一个可以取代旧 Mac OS 的操作系统;但实际上,苹果就是在召回乔布斯。乔布斯归来后立马叫停了 Sculley 主导的 Newton 项目,继续推行自己 “Think Different” 的理念。事后我们再来审视,这无异于一场乔布斯的复仇故事

而 NeXT 所开发的操作系统,正是这场复仇中最有力的武器。

收购 NeXT 后,苹果开始开发基于 Mach 的 MacOS 继任者,将 Mach 内核从 2.5 升级到 3,使用 FreeBSD 内核中的概念和组件对其进行了扩展,以形成一个称为 XNU 的内核。在此基础上,苹果拿出了该公司史上的第一个开源项目 Darwin,它拥有 BSD 这支非常纯正的开源血统(主要是 FreeBSD),是一个完全开源的操作系统,与苹果自身商业的系统同源。

https://www.apple.com/newsroom/2000/04/05Apple-Releases-Darwin-1-0-Open-Source/

为此,苹果还特意聘请了 FreeBSD 创建人之一 Jordan Hubbard 掌管 BSD 技术团队(一开始其实苹果相中的是 Linux 之父 Linus Torvalds,但被 Linus 拒绝了)。随后,Hubbard 又成为了苹果 Unix 技术部门的主管,为苹果付出了 12 年的青春年华

除此之外,苹果还专门为 Darwin 设计了一款名叫 APSL(Apple Public Source License) 的开源许可证,这个许可证不仅得到了 OSI (Open Source Initiative)的认可,还被 FSF(Free Software Foundation)认可为 “自由软件许可证”。

APSL 与几款主流开源许可证对比

怎么回事?苹果难道转性了?不封闭了?当然不是,这恰恰是苹果利用开源的第一步。正如时任 FSF 副总裁的 Bradley Kuhn 之前评论的那样:

They clearly have some interest in helping certain Free Software projects (such as GCC and GDB), but I don't think they are really dedicated to the goal of software freedom. For them, it's likely only a pragmatic necessity that leads them to support some Free Software projects.

他们(苹果)显然对帮助某些自由软件项目(例如 GCC 和 GDB)有一定的兴趣,但我认为他们并没有真正致力于软件自由的目标。对他们来说,支持一些自由软件项目仅是因为一种现实层面的需求。

当时,Bradley Kuhn 看到一向以 “封闭” 著称的苹果开始允许内部员工参与开源,是非常欢迎的。但正如他所言,苹果所做的这一切并不是为了 “自由软件”。 

首先,Darwin 的开源并没有打乱苹果既有的商业模式和市场优势。苹果出售的不是软件、也不是服务,而是机器。一个操作系统 Kernel 的开源不是什么大事,毕竟,开源的又不是苹果一向看重的 Aqua GUI,而对于 GUI 这样的核心优势,你要模仿苹果就能告你到破产。

其次,苹果之所以掺合自由软件这事,也是因为自由软件的确好用。比如,具有颠覆性的 Mac OS X 的基础就是 NetBSD 和 FreeBSD 的 BSD 版本,BSD 为 Mac 带来了多任务处理,并允许向它们移植大量 Unix 和 BSD 应用程序。因此, Mac 电脑开始摆脱创意艺术家工具的定位,成为一个更通用的系统,被越来越多的家庭和小型企业所使用。

除此之外,苹果(其实是 NeXT)还使用了 Richard Mattew Stallman(自由软件运动发起人)开发的 GCC 编译器。

有人认为,苹果引入开源的 BSD 子系统(主要包括 FreeBSD,还有少部分 OpenBSD 和 NetBSD)可以说是 Mac OS X 的精髓所在:一方面它提供了对各种业界标准的兼容,另一方面则保证系统安全性。

然而,由此衍生开源出来的 Darwin,苹果并没有好好照顾。

作为一个单独的产品,Darwin 并没有获得太多的人气。2002 年 4 月,苹果成立 OpenDarwin.org(一个协助合作 Darwin 发展的社群),这个社群可以创建发布自己的 Darwin 操作系统,且为开源开发人员提供资源,以便为苹果的 Mac OS X 交互和生产产品。但很快,OpenDarwin 项目就随着苹果对 OS X 的组件控制加强而于 2006 年 7 月 25 日关闭。

据知,OpenDarwin 团队在宣布该项目关闭时表示,OpenDarwin 已经 “成为仅用于 Mac OS X 相关项目的托管工具”。他们想要创建独立的达尔文操作系统,可是失败了。

较少来源的可用性、与苹果代表的不良互动、建立和跟踪来源的困难以及缺乏兴趣的社区,都应该为此负责。

如今,在苹果开源的官网上,我们已经找不到 Darwin 的踪影,取而代之的是一个名为 UNIX 的项目,被排在开源项目网页的角落。

https://developer.apple.com/opensource/

再次,苹果的这次开源行动给开源界带来好处有限,却反而还榨走了不少资源。一方面,苹果以开源之名继续从 BSD 世界中借鉴创新;另一方面,从 2001 ~ 2013 年,Jordan Hubbard 这一在 FreeBSD 社区举足轻重的人物因为在为苹果效力,而难以兼顾
到 FreeBSD,这或多或少为 FreeBSD 的发展带来不利。

最后,苹果对开源上游的反馈也是不足够的。根据 FreeBSD 基金会的记录
,苹果公司在 2021 年向该基金会捐赠的金额在 1000 到 4999 美元之间。当然了,秉承高尚品德,FreeBSD 的核心贡献者在被问及苹果贡献上游积极性不足的问题时,也没有因此责怪苹果。

此外,去年还有件趣事,也足以表明苹果对开源项目利用又轻视的心态。

2021 年 11 月,curl 创始人兼首席开发者 Daniel Stenberg 发表
了一篇吐槽苹果的博客,原因是当用户向苹果寻求帮助时,苹果直接回复用户让他自行联系 curl。

想象一下,一家市值万亿美元的公司将各种开源组件应用到自己的产品中,每年赚取数十亿美元的利润。当这家公司的一个用户向它提供的产品寻求帮助时,公司却把用户推给开源项目。这个开源项目是由志愿者运营和维护的,这家公司从未赞助过一分钱。

毫无疑问,Daniel 对苹果的做法颇有不满,因为它没有为项目做出任何贡献,却在别人求助的时候把问题抛到自己身上,无疑是被当成了免费的工具人

OpenDarwin 项目关停之后,  
  PureDarwin作为其非正式的继承者出现了。这个社区致力于让 Darwin 更可用,但实际上,它与 OpenDarwin 之间没有任何官方关系。这个被社群拯救出来的项目,已经与苹果无关了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/467254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

8个Wireshark使用技巧

一:数据包过滤 过滤需要的IP地址 ip.addr 在数据包过滤的基础上过滤协议ip.addrxxx.xxx.xxx.xxx and tcp 过滤端口ip.addrxxx.xxx.xxx.xxx and http and tcp.port80 指定源地址 目的地址ip.srcxxx.xxx.xxx.xxx and ip.dstxxx.xxx.xxx.xxx SEQ字段(序列号…

浅谈 git 底层工作原理

浅谈 git 底层工作原理 系统复习到这里也快差不多了,大概就剩下两三个 sections,这里学习一下 git 的 hashing 和对象。 当然,跳过问题也不大。 config 文件 这里还是会用 redux 的项目,先看一下基本信息: ➜ re…

短视频矩阵系统---开发技术源码能力

短视频矩阵系统开发涉及到多个领域的技术,包括视频编解码技术、大数据处理技术、音视频传输技术、电子商务及支付技术等。因此,短视频矩阵系统开发人员需要具备扎实的计算机基础知识、出色的编程能力、熟练掌握多种开发工具和框架,并掌握音视…

制冷暖通工业互联网平台孵化

制冷暖通工业互联网平台孵化可以帮助初创企业或者创新项目快速建立和推广制冷暖通工业互联网平台。以下是一些常见的制冷暖通工业互联网平台孵化服务: 创业辅导:孵化器提供创业辅导服务,帮助企业或者项目找到合适的市场和商业模式&#xff0c…

sd卡中病毒的表现及sd文件消失后的恢复方法

sd卡在日常使用中十分常见,但有时也会发生一些意外情况。例如,不小心意外感染病毒,导致sd卡中存储的文件消失。那么对于丢失的文件,我们该如何恢复呢?下面将带您了解sd卡中病毒的表现以及sd卡文件消失怎么恢复的方法。…

【C语言】学习路线大纲思维导图

思维导图下载地址:点击跳转   配套专栏:【C语言】基础语法 思维导图 1. 基础语法1.1 变量和数据类型1.2 运算符和表达式1.3 控制流程结构1.4 函数和递归1.5 数组和指针1.6 字符串和字符处理1.7 文件操作 2. 高级特性标准库和常用函数动态内存分配多文件…

理解龙格库塔法基本C程序

先学习龙格-库塔法; 龙格-库塔,Runge-Kutta,该方法用于数值求解微分方程; 其中包括著名的欧拉法; 经典四阶法 该方法主要是在已知方程导数和初值信息,利用计算机仿真时应用,省去求解微分方…

【LeetCode】213. 打家劫舍 II

213. 打家劫舍 II(中等) 思路 这道题是 198.打家劫舍 的拓展版,区别在于:本题的房间是环形排列,而198.题中的房间是单排排列。 将房间环形排列,意味着第一间房间和最后一间房间不能同时盗窃,因…

虹科分享|不再受支持的Windows系统如何免受攻击?| 自动移动目标防御

传统的微软操作系统(OS)可能会一直伴随着我们,操作系统使用统计数据显示,传统操作系统的总市场份额仍在10%以上。Windows的总安装基数为13亿,大约有1.5亿个终端仍在运行旧版操作系统。 数十万组织的终端和服务器采用不受支持的操作系统。如果…

curl方式调用电商API接口示例 详细介绍

cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。 cURL支持的通信协议有FTP、FTPS、HTTP、H…

数字化工厂:虹科Vuzix AR眼镜在工业制造中的革新应用

随着现代科学技术和新兴需求的快速增长,增强现实(AR)、各种“现实”产品与技术不断涌入创新市场,新兴用例数量正在快速增长,可以肯定,在可预见的未来,AR技术将成为各行各业的生产与工作主流。 增强现实(AR&…

应用scrapy爬虫框架

Scrapy是一个基于Python的开源网络爬虫框架,它可以帮助我们快速、高效地抓取网页数据,并支持数据的自动化处理、存储和导出。Scrapy提供了丰富的扩展机制,可以轻松地实现各种自定义需求。 Scrapy的基本使用流程: 1、安装Scrapy框…

服务(第十五篇)HAproxy负载+高可用

HAProxy负载均衡的调度算法(策略): (1)roundrobin,表示简单的轮询 (2)static-rr,表示根据权重 (3)leastconn,表示最少连接者先处理 &…

RestTemplate使用不当引发的504及连接池耗尽问题分析

背景 系统: SpringBoot开发的Web应用;ORM: JPA(Hibernate)接口功能简述: 根据实体类ID到数据库中查询实体信息,然后使用RestTemplate调用外部系统接口获取数据。 问题现象 浏览器页面有时报504 GateWay Timeout错误&#xff0c…

C语言函数大全-- r 开头的函数

C语言函数大全 本篇介绍C语言函数大全-- r 开头的函数 1. raise 1.1 函数说明 函数声明函数功能int raise(int sig);用于向当前进程发送指定的信号。 参数: sig : 指定要发送的信号编号 返回值: 如果调用成功,raise() 函数将返…

霍兰德人格分析雷达图

雷达图 Radar Chart 雷达图是多特性直观展示的重要方式 问题分析 霍兰德认为:人格兴趣与职业之间应有一种内在的对应关系 人格分类:研究型、艺术型、社会型、企业型、传统型、现实性 职业:工程师、实验员、艺术家、推销员、记事员、社会工…

【AUTOSAR】【信息安全】SecOC

目录 一、概述 二、约束和假设 三、依赖模块 四、功能描述 4.1 安全解决方案的规范 4.1.1 安全解决方案的基本实体 4.1.2 安全的I-PDU构建 4.1.3 安全的I-PDU验证 4.2 与PduR的关系 4.3 初始化 4.4 传出PDU的身份验证 4.5 传入pdu的验证 4.6 网关功能 4.7 多核分…

【java】Java中的锁

文章目录 前言一、悲观锁二、乐观锁三、自旋锁原理自旋锁优缺点优点缺点 自旋锁时间阈值(1.6 引入了适应性自旋锁)自旋锁的开启 四、可重入锁(递归锁)五、读写锁六、公平锁七、非公平锁八、共享锁九、独占锁十、轻量级锁十一、重量级锁十二、偏向锁十三、分段锁十四、互斥锁十五…

Docker实战笔记5-利用 commit 理解镜像构成

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/130338433 本文出自【赵彦军的博客】 文章目录 慎用 docker commit 注意: docker commit 命令除了学习之外,还有一些特殊的应用场合,比如被入侵后保存现场等。但…

【软件测试】测试用例的设计

文章目录 一. 针对没有需求的案例来设计测试用例二. 针对有需求的案例来设计测试用例1. 穷举法2. 等价类3. 边界值4. 判定表法5. 场景设计法5.1 简介5.2 基本设计步骤5.3 基本流和备选流5.4 使用场景5.5 优缺点5.6 实例 6. 错误猜测法 一. 针对没有需求的案例来设计测试用例 针…