V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abmin521
V2EX  ›  Apple

apple 似乎没有什么开源的东西?

  •  
  •   abmin521 · 2019-06-27 19:26:43 +08:00 via Android · 5203 次点击
    这是一个创建于 1980 天前的主题,其中的信息可能已经有所发展或是发生改变。
    除了 swift
    18 条回复    2024-11-26 15:08:11 +08:00
    sanddudu
        1
    sanddudu  
       2019-06-27 19:31:05 +08:00
    https://opensource.apple.com/

    开源和不开源并不意味着什么
    dot2017
        2
    dot2017  
       2019-06-27 19:35:09 +08:00
    是的,🍎💊
    EIJAM
        3
    EIJAM  
       2019-06-27 19:35:21 +08:00 via iPhone   ❤️ 1
    WebKit
    itqls
        4
    itqls  
       2019-06-27 19:37:13 +08:00
    哪怕你百毒一下,都不会问这种问题。
    maxco292
        5
    maxco292  
       2019-06-27 19:37:23 +08:00 via Android   ❤️ 3
    llvm
    keelii
        6
    keelii  
       2019-06-27 20:08:02 +08:00
    开源是一种权利,不是义务。
    abmin521
        7
    abmin521  
    OP
       2019-06-27 20:31:21 +08:00
    bringyou
        8
    bringyou  
       2019-06-27 20:39:57 +08:00
    foundationDB
    chtan
        9
    chtan  
       2019-06-27 21:07:53 +08:00 via iPhone
    4l 人才 果然章口就莱
    lcdtyph
        10
    lcdtyph  
       2019-06-27 21:14:37 +08:00 via iPhone
    opencl 也是苹果先弄出来的,虽然后来被抛弃了
    secondwtq
        11
    secondwtq  
       2019-06-27 21:30:44 +08:00 via iPad   ❤️ 33
    如果你只做互联网,那对你来说就只有 Swift,如果你只做互联网,并且对其他领域毫无兴趣,那么一辈子你都只知道 Swift


    Apple 开源的东西不少,不过有个特点,很多项目都是买过来之后开源的(或者说不是完全原创的)
    Swift 所依赖的 LLVM 是买 UIUC 的,但是 Apple 前期的支持对 LLVM 的成长起了非常重要的作用,现在 LLVM 社区已经是典型的大公司支配的开源社区,Apple 的主导权被 Google 分了一半了
    另外 LLVM 不是单独一个项目,还有 Clang 前端、libc++ 标准库、LLDB 调试器、lld 链接器等子项目,当然 Apple 应该不是在所有子项目中都活跃的。Swift 和 LLVM/Clang 同出 Chris Lattner 之手,翻一下会发现这些项目的代码风格是非常相似的
    除了 Swift 之外,LLVM 还是 Rust、Julia 等语言的基础,AMD 的 AOCC 以及 GPU 驱动也是基于 LLVM 的
    Swift 所依赖的基础库 Foundation 也是一块开源的,但是 Objective-C 版本的 Foundation 貌似并没有开源,虽然如此,这俩库共同依赖的 C 库 CoreFoundation 却是开源的
    为 Swift 提供智能提示功能的 SourceKit 是开源的,我没看过源码,猜测这个应该是严重依赖于 Swift 编译器本身的
    Apple 为 Swift 和 OC 钦定的并行解决方案 libdispatch 是开源且跨平台的
    WebKit 是当年 OS X 需要一个浏览器,于是就 fork 了 KDE 的 KHTML 和 KJS,由于 KHTML 当时貌似是 LGPL 协议,所以 WebKit 原则上是必须开源的。后来乱拳打死老师傅,现在没人知道 KHTML 了。之后历史又重复了自身,WebKit 被 Google fork 出的 Blink 乱拳打死老师傅
    需要注意的是 WebKit 也是个巨型项目,内部包含 WTF、WebCore、WebKit、JavaScriptCore 和 WebInspector 等多个子项目

    UNIX 系统标准的打印机管理系统 CUPS 是 Apple 买过来的,现在是开源的,之前是不是不知道
    Apple 还买了个数据库软件 FoundationDB 开源在 github 上
    此外 Apple 平台的 OS 内核 XNU 一直都是开源的,这个也是拼的 BSD 和 Mach,需要注意的是虽然 kernel 开源,但是在换到 x86 之后就没有完整的开源驱动栈了,Apple 官方关于驱动的资料也非常稀有(尤其是非桌面平台),间接导致 XNU 内核的开源系统失去了意义。XNU 源码树里面还包含 Apple 的驱动框架 IOKit,号称可以写跨平台驱动,然而实际只能写 XNU。总之摆明了就是跑 Apple 系统只能用 Apple 硬件。所以这个应该算是 Apple 最没用的开源项目 ...
    此外还有一些底层组件如 dyld、Security、Objective-C 和 Swift 的 Runtime 等是开源的,不过这些东西如果不是 hack Apple 平台的话貌似没人关注

    除此之外 Apple 还合作参与了若干技术标准和开源项目,比如和微软合作的 TrueType,Apple 自己还提出了 OpenCL (可以看下 OpenCL 的 Logo,很明显的 Apple 风,和 Khronos 其他标准都不一样)。Apple 在 W3C 也有很强的存在感,不过这个不好统计具体有哪些工作。
    不过 Apple 对技术标准的态度让人很纠结,比如对 OpenType 的支持不是很好,为了推 Metal 直接 deprecate 了 OpenGL 和 OpenCL,并且一直没有 Vulkan 的官方实现之类的奇葩事情

    Apple 曾经试图把最好的文件系统 ZFS 集成到自己平台上,不过最后项目死了,直到最近几年才换到了 APFS。Apple 也集成了最好的动态跟踪工具 DTrace,现在的 Instruments 就是基于这玩意的。这俩东西一开始都是 Sun 开发的,不知道 Apple 参与了多少。现在 Linux 上面的支持貌似还不是很成熟,想用的话欢迎入 FreeBSD。

    有一点需要注意的是 Apple 技术上的核心竞争优势之一:桌面环境和 GUI 框架( AppKit 和 UIKit )一直没有开源,很多周边的核心框架( CoreGraphics 等)也没有开源,不过我个人倒是觉得对于学习目的来说,这类项目的 API 设计重要性远超实现,倒是 LLVM、JavaScriptCore、Security、RTS 和 libdispatch 这些库的实现、优化细节都是非常重要的。

    哦对了还有最重要的:Apple 最大的优势其实还是钱,Apple 的母公司曾经向 OpenSSL、OpenBSD 等开源项目捐赠数百万元
    swsh007
        12
    swsh007  
       2019-06-27 21:40:42 +08:00 via Android
    👍11 楼
    secondwtq
        13
    secondwtq  
       2019-06-27 22:08:37 +08:00 via iPad   ❤️ 12
    补一句忘说了… 对标另一个做基础平台的最近疯狂搞开源的公司,开源世界的爹 MSFT:
    dotnet 可以对标 LLVM+Clang+Swift+一堆库(如果你不用 Win 也不用 macOS 的话其实你大概不会用 .net 或 swift,但是 LLVM 和 Clang 八成绕不过去。coreclr 是 JIT+GC,LLVM 偏向于静态编译(并且 C,C++,Obj-C 和 Swift、Rust 都是没有 tracing GC 的))
    TypeScript 我个人认为是 C# 在前端圈,或者所谓大前端的延伸,因为 C# 一大半还是在做 server 做工具,Apple 基本是专注于自己的用户端(估计没几个知道 Mac OS X Server 和 XServe 的,连 Airport 都停了),所以其实还是对标 Swift
    XNU 可以对标 WRK (两者在“对大多数人没啥用”这点上是完美 align 的——要是学 OS 你八成还是会去用某个教学 kernel 去走一遍某个公开课,然后去读 BSD 或者 Linux kernel 源码)(顺便 MSFT 还开源了 MS-DOS ...)
    Security 可以对标 SymCrypt ( MSFT 前段时间刚开源的 Windows 加密库)
    MSFT 的 VSCode+LSP 无敌,就连 Apple 都在自己 org 底下默默放了一个 sourcekit-lsp 仓库
    但是别笑,Apple 的孙子 Blink 前段时间刚吃了微软亲儿子 MSHTML ...
    (所以现在的局面是,MSFT 的 ChakraCore 和 Apple 的 JavaScriptCore 都在 V8 的淫威下瑟瑟发抖( SpiderMonkey 不配拥有名字么?)
    MSFT 开源了 PowerShellCore 以及这两天 trending 的 Windows Terminal,Apple 表示不慌,咱先把 macOS 的默认 shell 改成 zsh ...

    MSFT 开源了 WTF,哦不 WTF 是 WebKit 的,是 WPF,Apple ... 你敢开源 AppKit 么?或者开源个 SwiftUI 也行啊
    (虽然 WPF 开源了但是还是不能直接移植 Windows GUI 程序,不过我个人觉得 WPF 是 Flutter 和 SwiftUI 的先声,只是时运不济 ... 好了我去看 Pro WPF in C# 2012 了)

    这么一看 Apple 的 open source portfolio 其实并不弱。当然和 MSFT 的体量还是没法比:Apple 的黑科技一半在硬件上(可惜开源硬件刚烧起小火苗),并且 MSFT 现在是把开源当成重要战略在做,你看看 Apple 现在是什么战略,吃老本+薅羊毛?

    就不说 MSFT 在 AI 等方面是 Apple 没法比的,这个 Apple 也有借口:” The ‘ s ’ in Artificial Intelligence stands for ‘ security ’, and the ‘ p ’ in Artificial Intelligence stands for ‘ privacy ’”。在我看来 MSFT 真正的杀手锏是 Microsoft Research:Z3,GraphEngine,Koka 等项目对于 Apple 来说完全超纲了,更别说那一堆 paper
    alphatoad
        14
    alphatoad  
       2019-06-28 02:48:37 +08:00 via iPhone
    十一楼已经说得很好了,毕竟是个商业公司
    不开源 Metal 并且 deprecate OpenGL,不支持 cuda ……非常自信的操作
    能不能吸引开发者就看造化了
    abmin521
        15
    abmin521  
    OP
       2019-06-28 09:30:35 +08:00 via Android
    @secondwtq 感谢科普 底层这些东西平时也看不到,只是好奇苹果这么大的公司在这么多用户的情况下 怎么都没有什么技术输出
    muxiesan1989
        16
    muxiesan1989  
       2019-06-28 17:02:15 +08:00
    苹果开源仓库: https://opensource.apple.com/
    siebel
        17
    siebel  
       2019-06-29 10:15:36 +08:00
    Swift
    shintendo
        18
    shintendo  
       1 天前
    @secondwtq
    “Apple 的母公司曾经向 OpenSSL 、OpenBSD 等开源项目捐赠数百万元” 这句是认真的吗🤣
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1237 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:07 · PVG 02:07 · LAX 10:07 · JFK 13:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.