apple 似乎没有什么开源的东西? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abmin521
V2EX    Apple

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

  •  
  •   abmin521 2019-06-27 19:26:43 +08:00 via Android 5837 次点击
    这是一个创建于 2363 天前的主题,其中的信息可能已经有所发展或是发生改变。
    除了 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
       
    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  
       2024-11-26 15:08:11 +08:00
    @secondwtq
    “Apple 的母公司曾经向 OpenSSL 、OpenBSD 等开源项目捐赠数百万元” 这句是认真的吗
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     988 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 18:44 PVG 02:44 LAX 10:44 JFK 13:44
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86