# 81 - Chrome 会成为 OpenAI 的下一个目标?

发表于

美国司法部(DOJ)与谷歌之间的反垄断诉讼近期取得了重大进展。法院认定,谷歌通过将其广告服务器与广告交易平台捆绑销售,以及操控广告拍卖机制等行为,排挤了竞争对手,损害了出版商和消费者的利益。作为补救措施的讨论之一,美国司法部正在考虑建议强制谷歌出售其 Chrome 浏览器,并终止与设备制造商的默认搜索引擎协议。继传闻将以 30 亿美金收购 WindSurf 后,OpenAI 在上述判决之后立刻表达了对 Chrome 的收购兴趣。

如今的浏览器,无论从功能还是规模上来说,都与成熟的操作系统不相上下。市场上看似存在多种不同名称的浏览器,但事实上,很大一部分都基于相同的 Chromium 内核。自该项目启动以来,谷歌一直承担着主要的开发和维护工作。截至 2024 年,Chrome 系浏览器的市场份额已超过 65%,形成了事实上的浏览器标准。

推动谷歌持续投入 Chrome(Chromium)开发的核心动力,来自于其搜索广告模式的商业闭环:更好的浏览体验 → 更多的网络查询 → 更精准的结果投放 → 更高的广告收入。正是在这个内因驱动下,谷歌才不惜投入大量人力和资金发展 Chrome。如果 Chrome 被从谷歌剥离出来,很难想象谷歌还有动力继续支持 Chromium 的开发。对于 Chrome 这种级别的产品来说,仅仅从谷歌挖走一批人才远远不足以维持其目前的发展速度与质量。

更值得深思的是:假设有一家具备维护 Chromium 项目能力的公司接手 Chrome,我们又如何确保它不会利用 Chrome 的巨大影响力建立新的垄断壁垒?不让其利用 Chrome 获取产品之外的商业价值,这家公司又何来继续投入的动力?历史诸多因反垄断而拆分失败的案例历历在目,这恰恰暴露了反垄断执法的两难处境:拆分易,防垄断难。

反垄断机制的核心本应是确保市场竞争的公平性,防止具备垄断地位的公司利用其优势地位打压竞争者。对于谷歌垄断地位的认定,我认为是无可厚非的。然而,推动其剥离 Chrome,真的是解决问题的正确方向吗?或者说,这真能带来更健康的市场环境吗?

坦率地讲,即使 Chrome 最终被迫出售,OpenAI 也绝非一个理想的收购方。这并非我个人的忧虑,网络上已有大量用户表达了对 OpenAI 收购 Chrome 的不安。尽管当前 AI 大模型公司如日中天,但其产品主要仍面向企业或专业领域,尚未真正深入普通消费者的日常生活。因此,它们急需一种能快速触达普通用户并深入绑定的载体,以构建更广泛且牢固的用户联系。

将 ChatGPT 与 Chrome 融合,的确能迅速提升 OpenAI 在普通用户中的影响力。但与此同时,也极可能催生一种前所未见的新型垄断——一个融合先进 AI 技术与海量用户数据入口的超级平台。浏览器不仅是用户进入互联网的门户,更是个人数据的重要入口,而这种结合的影响将远超我们当前的想象。尽管谷歌也具备这种能力,但其广告盈利模式制约了它将 AI 与搜索进行完全整合。

作为一个 90% 时间都使用 Safari 的开发者,我完全赞同对大公司滥用市场优势地位的有效制约,但我并不认为从谷歌中简单地剥离 Chrome 是明智之举,更不希望看到它落入另一个可能建立新型垄断的公司手中。市场真正需要的并不是简单的拆分与重组,而是建立更加开放且具备健康竞争的生态环境。这才是反垄断执法与科技创新之间应当追求的平衡之道。

原创

构建类型安全、高效的 SwiftData/Core Data 模型

Swift 强大的类型系统使我们能够创建语义明确且安全的数据模型。然而,当面对 SwiftData 或 Core Data 时,我们常因底层存储机制的限制,而不得不在类型表达上做出妥协。这种妥协不仅模糊了领域模型的本意,也为应用的稳定性埋下隐患。本文将探索如何在数据持久化的约束下,通过巧妙的类型封装和转换,构建兼具类型安全、语义明确与高效性能的数据模型。

【Tip】解决在 Monorepo 项目中 SwiftLint 配置文件无效

近期推荐

让 NSImage 支持并发安全传递 (How to Make NSImage Sendable in Swift)

Swift 6 对并发编程引入了更严格的检查,要求跨线程使用的类型必须是安全可发送的(Sendable)。但 NSImage 并不符合这一要求。 Khoa Pham 在文中提供了三种应对方式:使用 @unchecked Sendable 强制标注、将 NSImage 转换为 Sendable 友好的数据(如 PNG 数据或 CGImage)、或通过 Actor 包装来实现线程安全。

用 SwiftUI 自定义 macOS App 的 About 窗口 (Create a Fully Custom About Window for a Mac App in SwiftUI)

随着 SwiftUI 在 macOS 上能力的增强,许多专为该平台设计的视图修饰器被引入。本文中,Natalia Panferova 详细介绍了如何使用 SwiftUI 构建一个完全自定义的“关于”窗口,并展示了如何应用新特性,如调整工具栏、启用拖动、设置半透明背景、控制窗口按钮、限制窗口大小和关闭位置复原。通过这些步骤,开发者可以全面掌控基于 SwiftUI 的 macOS 窗口外观与行为,使其更好融入应用整体设计。

优雅地解决 Swift 错误处理的历史遗留问题 (Swift Error Handling Done Right: Overcoming the Objective-C Error Legacy)

Swift 的 Error 协议底层桥接了 Objective-C 的 NSError,这导致如果开发者没有为错误类型实现 LocalizedError,往往只能看到 (YourError error 0) 这样的模糊信息。而由于 LocalizedError 中属性为可选,开发者容易遗漏必要声明,造成实际体验不佳。Cihat Gündüz 给出了改进方案:定义 Throwable 协议,强制每个错误类型提供明确的 userFriendlyMessage。配合他发布的 ErrorKit,开发者可以在保留原生错误处理语法的同时,显著提升错误信息的清晰度、可控性与本地化支持。

摩诃不思议的 Swift

很多人觉得现代强类型语言的设计趋同,只要掌握一门便能快速上手另一门。但实际上,即使是相似概念,不同语言间也存在着巨大的差异。Xheldon 在拥有丰富 TypeScript 经验的前提下,学习 Swift 时依然屡屡感到震惊。本文记录了他从注释、可选绑定、集合类型、控制流、闭包、枚举、结构体与类、协议、泛型等各个方面,遇到的 Swift 特有设计与理解过程。

不仅是语言特性比较,也是从另一个角度重新认识 Swift 的机会。

用 SwiftUI 原生集成系统分享面板 (Using the Share Sheet to Share Content in a SwiftUI App)

分享面板(Activity View)列出了用户在当前上下文中可以执行的一系列操作。早期 SwiftUI 版本需要借助 UIKit 才能调用分享功能,而从 iOS 16 开始,SwiftUI 提供了原生的 ShareLink 组件,大幅简化了实现流程。Gabriel Fernandes ThomazTiago Gomes Pereira 在本文中介绍了 ShareLink 的基本用法,包括分享 URL、自定义 Label 和 Preview,以及通过 Transferable 协议支持自定义类型。掌握这些技巧,可以让应用更好地整合系统分享体验,提升用户操作的流畅度。

🪜 iOS 开发补完计划

资深 iOS 开发者 13 在转型成为全职内容创作者后,计划推出新的专栏:「iOS 开发补完计划」。与传统教程不同,这个专栏将专注于那些即使借助 AI 也难以习得、但对成功开发和上架 App 至关重要的观念、知识与经验。13 希望通过这个专栏,弥补资深开发者与新手之间长期存在的知识断层。在本文中,他详细列出了计划中可能覆盖的数十个主题,包括商业观念、学习方法、开发环境、技术基础、用户体验、产品思维、AI 工具应用、开发者社群、职场心法,以及身心健康等,旨在帮助更多初学者少走弯路,高效成长。

工具

用 Swift 打造真正原生的跨平台应用 (Fully Native Cross-Platform Swift Apps)

很多开发者和我一样,都希望能够使用 SwiftUI 来构建真正的跨平台应用(包括 Android)。Skip 让这一梦想更进一步:通过将 SwiftUI 代码映射到 Android 平台的 Jetpack Compose,Skip 实现了业务逻辑和 UI 代码的双向共享,兼顾了开发效率与原生体验。开发者可以直接在 Xcode 中编写、调试 Swift 代码,同时在 iOS 和 Android 模拟器上同步运行和测试应用。Marc Prud’hommeaux 在本文中详细介绍了开发环境的搭建流程、项目结构(如 SkipFuseUI 和 SkipFuse 模块)、与 Kotlin 互通的机制,以及如何结合 Swift 和 Android 的生态资源。目前 Skip 仍处于技术预览阶段,但已有实际应用如 Skip Notes 成功在双平台应用商店上线。

同时,Swift 社区也在积极推动 Swift 在 Android 上的官方支持,欢迎大家关注并参与 Swift 论坛的 Android 板块

轻量且高性能的 SwiftData 替代方案 (SharingGRDB: A Fast, Lightweight Replacement for SwiftData)

随着 SharingGRDB 新版本发布,Point-Free 也同步更新了详细文档,其中与 SwiftData 的 对比章节 尤为值得关注。相较于 SwiftData,SharingGRDB 带来了更低的系统版本支持、更全面的 SQLite 能力、基于编译时的查询检查机制,以及更好的运行性能。如果你更偏好 SQL 风格、基于关系数据库的数据组织设计、追求干净、可控且高效的持久化体验,SharingGRDB 将是一个极具吸引力的选择。

注意:目前 SharingGRDB 及其依赖的基础库 GRDB 暂未提供类似 SwiftData/Core Data 的成熟跨设备同步方案,使用前请确认是否符合你的项目需求。

求贤

SwiftvisionOS_base_

每周精选 Swift 与 SwiftUI 精华!