Loading...
墨滴

大漠胡萝卜

2021/08/27  阅读:46  主题:默认主题

开源早读课周刊(第6期):苹果的开源差强人意

这里记录每周值得分享的开源内容,周五发布。

本杂志开源(GitHub: hapiman/weekly),欢迎提交 issue,投稿或推荐你的项目。

封面图:国家何时整治程序员的高薪现象?

高薪的三个原因:(1)处在向上的行业,市场大,供需关系决定;(2)工作强度较大、时间长;(3)程序员是大多是公司最主要的生产资料。

刊首语

2011年8月24日,蒂姆库克(Tim Cook)被正式任命为苹果CEO,这期间苹果长期作为市值最高的科技公司,数次成为最有价值的品牌。

期间苹果生产了众多的新硬件:Apple Watch系列,AirPods系列,HomePod系列,Apple Silicon芯片等。相比于乔布斯生前创造的iPhone、iPad、Mac等,差距很明显,但是相对于竞争对手,依然领先一小步,新产品在完善苹果生态系统的同时,带动了整个行业的发展。苹果从根本上来说就是一家产品公司,始终追求着由硬件、软件和服务相互交叉而产生的魔法,不断拓宽公司的护城河,赚取超过半数的行业利润。从巴菲特的投资苹果来看,苹果的商业模式能够大概率给公司长久持续地带来比较稳定利润,充满着极其强悍竞争力。

从下面的图片我们可以看看各种产品的市场情况。

(1)开创了智能穿戴品类 Apple Watch, 份额始终维持在第一位置, 而且每年都有显著的体验改进, 竞争对手的生存空间不断被挤占。

(2)开创了TWS无线耳机品类, 重新定义了耳机的使用方式, 并且稳居市场第一。

(3)Apple Silicon 芯片在种类和性能上不断突破, 从耳机芯片 H1 到无线网络芯片 W3, 超宽频芯片 U1, 然后就是在去年引爆整个品类革命的 M1 芯片。

(4)iPhone/iPad 两个传统品类也维持了极高的行业内营收份额, 考虑到更高的净利润, 可以说吃掉半个行业的利润。

在美国整个科技互联网行业,能够长时间在一家巨头公司担任CEO,并且深受股东信任,让公司长期保持着强劲的增长,是非常有挑战的事情,如果能够做到,那么必有非凡才能及过人之处。

比如前微软CEO鲍尔默,极其富有热情,很难不被其激情感染。虽然总被认为其缺乏创新,让公司死气沉沉,错过了整个互联网时代。但是没有人能够磨灭他在其位时组织开发的windows7的成功(最受欢迎的windows系统),及在稳固为微软根基上作出成就,也正是其对于云计算的提早布局,压中了这个市场巨大的蓝海行业,能够让萨提亚接任之后,将微软的云计算发扬光大。

比如,IBM的前CEO路易斯·郭士纳,走马上任之后,大刀阔斧的解决了公司的臃肿问题,在10年的时间内,让公司重新焕发生机。

比如,Google的前CEO埃里克·爱默生·施密特,思科的前CEO约翰·钱伯斯等等。

库克的优势在于其供应链管理能力,并且配合着苹果软硬一体的商业模式,将自己的优势体现的淋漓尽致,从另一个维度证明了乔布斯除了在产品设计方面的天赋之外,知人善任方面也颇有眼光,可以举两个例子说明。

1、当年苹果公司快要倒闭了,乔布斯回到苹果之后,马上就从库珀公司找来了库克。库克“奉命于危难之际”,在两年之内,将公司仓储商品库存量从70天缩减到10天以内的数量。

2、维护政府关系能力强,中美竞争这么激烈,苹果公司依然能够大赚特赚。对比人性自大退出中国市场的谷歌,求而不得恼羞成怒的Facebook,库克是纯粹的商人,一切以公司的利益至上,深受华尔街喜欢!

乔布斯打下了苹果帝国的江山,而库克守住并且扩大了苹果帝国的江山。乔布斯负责苹果公司的灵魂,库克负责将其落地。如果将乔布斯比作“高祖”的话,库克封一个“太宗”也不为过。

关于开源实在是有太多的问题了。

开源如何赚钱,开源的运作模式,开源的历史,开源项目如何估值,开源项目如何协作,各个国家开源情况,各个公司的开源,知名项目的开源情况,怎么做好开源,开源对于社会影响等等。

本周刊就聚焦解决这些问题,希望在开源世界贡献力量。

在前期,主要是推荐每周找到的一些精彩的文章,我会尽量少做评论,避免因为自己认知的不到位,误导大家。*

OK,下面是本周的开源分享,Enjoy。

开源杂谈

1、关于苹果的开源,“开源软件是 Apple 平台和开发者工具的核心,Apple 继续贡献和发布大量开源代码”。

苹果在业界以封闭生态链的方式自居,我们下意识的觉得苹果在开源领域无所作为,然而苹果是少数在早期就开始积极参与开源社区的公司。封闭的商业模式在保证了极致的用户体验的同时也决定了苹果的开源过程无法类似其他的IT企业一样,被众多的开发者认识,如苹果的Darwin操作系统无法作出类似Android系统那样全方位的开源,更多的是系统的部分开源,比如操作系统的内核部分XNU早已开源,但是知之甚少。

Darwin是一种类Unix操作系统,包含开放源代码的XNU内核,其以微核心为基础的核心架构来实现Mach,而操作系统的服务和用户空间工具则以BSD为基础。类似其他类Unix操作系统,Darwin也有对称多处理器的优点,高性能的网络设施和支持多种集成的文件系统。

XNU是一个由苹果电脑开发用于macOS操作系统的操作系统内核。它是Darwin操作系统的一部分,跟随着Darwin一同作为自由及开放源代码软件被发布。它还是iOS、tvOS和watchOS操作系统的内核。XNU是X is Not Unix的缩写。

以iOS为例来说一下,iOS的大致结构如下:

CoreOS就是上面说的Darwin是由Mach、FreeBSD以及一些苹果自己的代码组成的,是开源、符合POSIX标准的一个Unix核心,这部分整体是开源的,像Mach层里的IOkit驱动框架是开源的但是驱动是不开源的。

(1)Github地址:github.com/apple

(2)官方网站:developer.apple.com/opensource/

(3)源码下载:opensource.apple.com

特色项目,

(1)Swift,苹果新一代的开发语言。

Swift 专门针对 OS X 和 iOS 的应用开发,在各个方面优于 Objective-C,没有那么多复杂的符号和表达式。同时,更加快速、便利、高效、安全。

(2)darwin-xnu,XNU 内核是 Darwin 操作系统的一部分,用于 macOS 和 iOS 操作系统。

XNU 是 X is Not Unix 的首字母缩写词。 XNU 是一个混合内核,它结合了卡内基梅隆大学开发的 Mach 内核和 FreeBSD 的组件以及用于编写驱动程序的 C++ API,称为 IOKit。 XNU 在 x86_64 上运行,适用于单处理器和多处理器配置。

(3)Webkit,苹果开源的浏览器引擎。

除了被Safari、App Store使用之外,因为被Chromium引用,所以当前大多数浏览器都间接使用到了Webkit引擎。

2、开源之书·共读」#40:《维基经济学:大规模协作如何改变一切

当人们提到开放、对等(peer)、共享、全球化的时候,如果没有对应的可实践的事物,如Linux、Apache、Python、Wikipedia、Kubernetes的话,是无法准确理解这四个词汇的意思的,但是如果有人通过书籍整理并专门讲解的话,就另当别论了。

3、开源共同体在本土的可能发展路径:一次开源文化的思想实验

当我们仔细思考开源的本质的时候,我们会发现,当人类要集体生产某个事物的时候,他们会如何组织?如何协调资源?如何获得关注?在资本主义的思路下,这似乎都不是一个问题,有了资本,就可以找到人,有了人,使用现代管理方法即可,然后领导统一目标,大家齐心协力实现目标。但是,这个世界的所有生产方式未必都是由金钱资本驱动的。

4、从动物科学到乐队鼓手,腾讯技术小哥的开源人生

5、记一次10人跨组织、跨地域的开源协作经历

6、操作系统革命(视频,非常经典的有关自由软件运动的纪录片。

7、代码奔腾(视频,从1998年3月到1999年4月,一个独立纪录片摄制组跟随着网景公司的一个软件工程师团队,记录了他们公司和互联网历史上的分水岭。

开源资讯

1、携程捐赠 Apollo 项目到 Apollo 开源社区

为了更好地支持社区的发展,携程决定捐赠 Apollo 项目到 Apollo 开源社区,从而实现真正的社区自治,为 Apollo 项目更好的发展提供成长环境,相关项目将迁移到 github.com/apolloconfig 下。

2、Bootstrap 诞生 10 周年

十年前,2011 年 8 月 19 日,Bootstrap 第一个版本正式发布,并宣布在 GitHub 开源。

当时它的定位是“一个用于快速开发 Web 应用的前端工具包”,集合了 CSS 和 HTML 的常见用法,并使用一些最新的浏览器技术,为开发者提供时尚的排版、表单、按钮、表格、网格、导航和其他需要的组件。

3、Sourcegraph 向个人开发者开放,将支持搜索私有库

Sourcegraph 正计划将其通用代码搜索平台扩展到云端,并在此过程中对 GitHub 和 GitLab 的数百万公共仓库进行索引,这样一来任何人都可以通过搜索找到它们。

4、“要源码上门自取”,结果人真就上门了,关于开源协议的一则有趣的故事。

5、大数据独角兽 Databricks 估值或达 380 亿美元

开源项目

笔者比较熟悉Go语言技术栈,对于其他的开发语言不甚了解,因此推荐的项目大多与Go语言相关,如果你发现比较优秀的项目或者愿意分享自己的项目,欢迎issue。

1、tunny,Go协程池实现,重复利用创建的协程,避免浪费系统资源。

package main

import (
 "io/ioutil"
 "net/http"
 "runtime"

 "github.com/Jeffail/tunny"
)

func main() {
 numCPUs := runtime.NumCPU()

 pool := tunny.NewFunc(numCPUs, func(payload interface{}) interface{} {
  var result []byte

  // TODO: Something CPU heavy with payload

  return result
 })
 defer pool.Close()

 http.HandleFunc("/work"func(w http.ResponseWriter, r *http.Request) {
  input, err := ioutil.ReadAll(r.Body)
  if err != nil {
   http.Error(w, "Internal error", http.StatusInternalServerError)
  }
  defer r.Body.Close()

  // Funnel this work into our pool. This call is synchronous and will
  // block until the job is completed.
  result := pool.Process(input)

  w.Write(result.([]byte))
 })

 http.ListenAndServe(":8080"nil)
}

2、glab,用 Go 写的 GitLab 命令行工具。通过它除了能够在命令行管理项目、issues、合并提交之外,还能够查看 CI 的运行状态。

3、fzf,命令行模糊查找器。

能够搜文件、历史命令、进程、git 提交记录等信息,支持预览内容、整合到 Vim/Neovim 编辑器,而且搜索速度极快。

4、godis,Go 语言实现的 Redis 服务器和分布式集群。

本项目旨在为尝试使用 Go 语言开发高并发中间件的朋友提供一些参考。

支持 Redis 常见的五种数据结构以及自动过期功能(TTL)、发布订阅、地理位置、 AOF 持久化及 AOF 重写、事务、集群等功能,值得看看。

5、rosedb,一个 Go 语言实现的快速、稳定、内嵌的 k-v 数据库。。

rosedb 是一个稳定、高性能、快速、内嵌的 k-v 数据库,支持多种数据结构,包含 String、List、Hash、Set、Sorted Set,接口名称风格和 Redis 类似。

rosedb 基于简单的 bitcask 模型,数据文件布局类似 LSM Tree 中的 WAL 日志,纯 Golang 实现,易于使用、扩展。

rosedb 代码简洁,注释清晰,有讲解视频,和上面提到的 godis 一样,适合找 Go 实战项目的小伙伴们。

开源书籍

1、《开源软件文集:开源革命之声》。

这是本周读完的唯一的一本书。

这本书集合了所有 Open Source 领域大拿的文章。从 Linux , Perl, Apache, NetScape 的创建者到 Open Source 的开创者。各式各样的人物从不同角度阐述着对 Open Source 的理解,你可以不认同 Open Source 的方式和哲学,但是你一定要听一下这些声音。

该书写于1999年,现在依然是经典,只有少数的地方卖纸质二手书,电子书也很难找到,在公众号中回复 104 可以获取!

订阅

这个周刊每周五发布,微信搜索 大漠胡萝卜 或者扫描二维码,即可订阅。

(完)

大漠胡萝卜

2021/08/27  阅读:46  主题:默认主题

作者介绍

大漠胡萝卜