Airbnb开源项目

QuibblerQuibbler 2020-02-12 约 12 分钟 2290 次阅读

Airbnb 开源项目全景:从 Lottie 到 Airflow

Airbnb 不只是民宿平台,也是开源界的高产户:一个 airbnb.io 门户下挂着二十余个项目,横跨移动端、前端、数据平台与基础设施。其中既有 JavaScript 规范这种星标 8.5 万的现象级仓库,也有 Lottie 这种定义了三端动画工作方式的代表作。本文把这些项目按领域归类盘点,并附各项目的星标数与一句话定位,帮你快速建立 Airbnb 技术版图的全貌。

1、开源概览

airbnb.io 是 Airbnb 官方的工程与开源门户,收录其公开的技术博客与项目仓库。本文化名的 20 个项目覆盖四大领域:前端工程、移动端、数据与机器学习、基础设施与安全。

整体印象:

        - 前端影响力最大:JavaScript 规范 85,249 Star,是门户里星标最高的仓库

        - 移动端代表作是 Lottie 家族:Android、iOS、Web 三端合计近 6 万 Star

        - 数据侧走出了行业标准:Airflow 后被捐赠给 Apache 基金会持续演进

        - 基础设施类项目普遍小而精,星标不多但解决具体问题

一点说明:

        - 文中星标数取自 airbnb.io 页面快照,部分项目现状已有变化(例如 Airflow 早已从 Apache 孵化器毕业为顶级项目),选型时以 GitHub 实时数据为准

2、Lottie 家族:一次设计,三端动画

Lottie 是 Airbnb 最出圈的开源作品:设计师在 After Effects 里做好动画,导出 JSON,工程师用 Lottie 在各端原生渲染——动画的"设计稿即代码"由此成为现实。

家族成员:

        - Lottie(Android):在 Android 上原生渲染 AE 动画,25,420 Star,家族中最热门

        - Lottie(iOS, macOS):iOS 端原生渲染 AE 矢量动画,17,180 Star

        - Lottie(Web):在浏览器中原生渲染 AE 动画,16,494 Star

        - Lottie(Docs):官方文档仓库,998 Star

要点:

1. 三端一套动画资源,设计到开发的交付链路被大幅缩短

2. 动画以矢量 JSON 描述,体积小、可缩放、性能好于 GIF 序列

3. 如今已成为行业事实标准,各端与各跨端框架均有对应实现

3、前端工程与规范

前端是 Airbnb 开源声望最高的领域,从代码规范到测试、渲染与样式方案成体系输出。

代表项目:

        - JavaScript Style Guide:自称"最通情达理"的 JS 编码规范,85,249 Star,是无数团队 ESLint 配置的源头

        - Enzyme:React 的 JavaScript 测试工具集,17,184 Star,React Testing Library 出现前的主流选择

        - Hypernova:JavaScript 视图的服务端渲染服务,5,084 Star,支撑首屏性能优化

        - react-with-styles:带主题的 CSS-in-JavaScript 方案,且不与单一实现强耦合,1,471 Star

要点:

1. 一份规范仓库的影响力超过多数框架——规范即生态入口

2. Enzyme 属于历史主力:新项目多已转向官方推荐的测试方案

3. Hypernova 的 SSR 思路后来被 Next.js 等框架产品化

4、数据平台与机器学习

数据方向是 Airbnb 对行业贡献最深的一块:工作流调度、交互查询、知识管理与机器学习各有布局。

代表项目:

        - Airflow:以有向无环图(DAG)编排工作流任务,12,263 Star;后进入 Apache 基金会,成为数据管道调度的事实标准之一

        - Aerosolve:定位"为人设计"的机器学习库,4,554 Star,强调可解释与易用

        - The Knowledge Repo:面向数据科学家与技术岗位的下一代知识沉淀平台,3,746 Star

        - Airpal:PrestoDB 的 Web 查询界面,2,502 Star,让交互式查询开箱可用

        - ReAir:Hive 数仓之间表与分区的复制工具集,240 Star

要点:

1. Airflow 是"内部工具长成行业标准"的典型:为自家管道而生,最终普惠全行业

2. Knowledge Repo 押注"知识沉淀",与今天各家知识库产品的思路一脉相承

3. Airpal 与 ReAir 服务于 Presto 与 Hive 生态,反映当时的大数据技术栈

5、移动端专用库

除 Lottie 外,Airbnb 还开源了几个解决 Android 具体痛点的库,也曾是 Android 社区的高频选择。

代表项目:

        - Epoxy:在 RecyclerView 中构建复杂页面的 Android 库,5,482 Star,把列表做成声明式组装

        - DeepLinkDispatch:深链的声明式定义与路由,3,418 Star,注解一打即生效

        - AirMapView:地图视图抽象层,1,691 Star,屏蔽底层 Google Maps 等不同地图 provider 的差异

要点:

1. Epoxy 的"声明式拼列表"思路,可视为 Compose 列表时代的思想前身

2. AirMapView 解决的是国内厂商无 Google 服务时的地图降级问题

3. 这批库多诞生于 View 体系时期,新项目选型前先确认维护状态

6、基础设施与安全

底座类项目星标不高,却各管一段:安全检测、服务发现、告警与存储。

代表项目:

        - BinaryAlert:无服务器架构的实时与回溯恶意软件检测,856 Star

        - Nerve:带健康检查的服务注册守护进程,与 synapse 搭档使用,877 Star

        - Hammerspace:类 Hash 接口的持久化、并发、堆外存储,318 Star

        - Interferon:基础设施与应用问题告警,205 Star

要点:

1. BinaryAlert 是"无服务器做安全"的早期实践,函数计算扫描恶意特征

2. Nerve 与 synapse 组成服务发现组合,是微服务浪潮期的产物

3. 这一类项目大多服务于当年的内部架构,外部通用性有限

7、观察与启示

纵览这 20 个项目,能看出一家公司开源策略的几条规律。

四点观察:

        - 影响力分布极不均匀:一份编码规范(85k)超过其余多数项目之和,规范类内容的传播成本最低

        - 解决自身痛点的项目最长寿:Airflow、Lottie 都诞生于内部真实需求,才经得起时间

        - 捐赠给基金会是延长生命的路径:Airflow 进入 Apache 后获得了超越单一公司的维护力量

        - 快照里的项目热度≠今天的选择:Enzyme、Epoxy 等曾是标配,如今各有更现代的替代,读清单要看年代

对技术选型的提示:

        - 仍在一线使用:JavaScript 规范、Lottie、Airflow

        - 历史价值大于现用价值:Enzyme、Epoxy、AirMapView、Hypernova

        - 小众但思路可借鉴:BinaryAlert 的无服务器安全、Knowledge Repo 的知识沉淀

8、总结

Airbnb 的开源版图以 airbnb.io 为门户,横跨四大领域:前端有 8.5 万 Star 的 JavaScript 规范与 Enzyme、Hypernova;移动端有近 6 万 Star 的 Lottie 三端家族与 Epoxy;数据侧走出了 Airflow 这一行业标准;基础设施与安全则是 BinaryAlert、Nerve 等小而精的实践。星标数取自页面快照,部分项目现状已有演进。

对开发者:直接可用的是 Lottie、JavaScript 规范与 Airflow 这"三件长青货";其余项目更适合当作思想来源——声明式列表、无服务器安全、知识沉淀,都在今天的技术里有回声。浏览这类公司开源清单时,把"当年的热度"与"今天的选择"分开看,是必要的清醒。

相关推荐

WilliamChart:轻量美观的 Android 图表库实战
精选开源

WilliamChart:轻量美观的 Android 图表库实战

WilliamChart:轻量美观的 Android 图表库实战数据可视化是运动、健康、金融、统计类 App 的刚需。MPAndroidChart 功能最全但偏重复杂,WilliamChart 走的则是"轻量 + 美观 + Kotlin 原生"路线——v3 用 Kotlin 完全重写,API 极简,一行 chart.animate(dataSet) 就能把数据画成带动画的折线/柱状/环形图,开箱即

175
sherpa解析:开源语音技术全家桶
精选开源

sherpa解析:开源语音技术全家桶

想在手机、树莓派甚至 RISC-V 开发板上离线跑语音识别,五年前还是个需要啃 Kaldi 源码的硬核课题。k2-fsa 组织的 sherpa 把这件事变成了"下载预训练模型、装个包、跑示例"的三步操作。这个以 Apache-2.0 协议开源的项目自我定位是"新一代 Kaldi 的语音转文本框架",它专注端到端模型的推理部署:transducer 与 CTC 两类架构,C++ 与 Python 双…

44
OkHttp线程池和连接池
开源

OkHttp线程池和连接池

OkHttp线程池和连接池了解了OkHttp的网络请求流程以及拦截器实现原理,再关注OkHttp中两个重要的:OkHttp的线程池和连接池。1、OkHttp线程池在OkHttp网络请求流程一文中,我们分析了OkHttp异步和同步请求流程。请求最后都在Dispatcher中分发调度处理,最后被ExecutorService执行。1.1、DispatcherDispatcher中执行任务的执行器是ex

5.7k