我与 Apache 软件基金会的故事

2022-06-10 08:21:12 +08:00
 shaoyaoju

原文发布在 公众号:琚致远,也欢迎阅读 创业 2 年值得分享的事情 😊

2015 年我在读大一,在部署 Web 项目时用到了 Apache Web Server ,Apache 软件的羽毛标志只需看一眼就能牢牢记住。

Apache 软件基金会成立于 1999 年(我出生于 1997 年),作为全球最大的开源软件基金会,我从未想过会现在与它有更深入地联系。

项目

2019 年大学毕业后不久,APISIX 项目发起人联系到我,希望我能为 APISIX 贡献一个 Dashboard 项目。首先,什么是 APISIX ?那时我对 APISIX 项目的理解仅仅是一个开源的 API 网关,那什么是 API 网关呢?我没有使用过这类产品,更谈不上如何做一个与 APISIX 配套的 Dashboard 了。

在大学期间自己接了许多项目(来自学校、朋友介绍、政府部门),尽管我对“如何构建 API 网关控制台”没有思路,但我清楚一个 Web 项目包含了“需求确认、产品设计、代码开发、功能测试、服务上线”这几项基本流程。

在多次与 温铭、院生 沟通产品需求后,我为 APISIX 项目制作了 APISIX Dashboard V1:它没有精致的 UI (如下图所示),但能够满足对 APISIX 核心概念地操作,此时自己对 API 网关以及 APISIX 相关概念更加清晰了。

值得一提的是:APISIX 内置了数十种插件对 API 请求、响应进行处理,这些插件通过 JSONSchema 进行插件配置参数地合法性检查。以 limit-req 插件为例,它的 JSONSchema 规则如下:

local schema = {
    type = "object",
    properties = {
        rate = {type = "number", exclusiveMinimum = 0},
        burst = {type = "number",  minimum = 0},
        key = {type = "string"},
        key_type = {type = "string",
            enum = {"var", "var_combination"},
            default = "var",
        },
        rejected_code = {
            type = "integer", minimum = 200, maximum = 599, default = 503
        },
        rejected_msg = {
            type = "string", minLength = 1
        },
        nodelay = {
            type = "boolean", default = false
        },
        allow_degradation = {type = "boolean", default = false}
    },
    required = {"rate", "burst", "key"}
}

当用户为某一条 Route 配置插件时,为了降低用户理解 JSONSchema 规则的难度,我们尝试在界面中根据规则直接渲染表单字段,如何在界面中动态地生成插件配置表单是我遇到的最大的挑战。通过一系列调研与测试,我自定义了一个 UI 组件,它可以通过接收 JSONSchema 规则渲染指定表单,这个组件得到了许多用户好评。

在 2020 年中,我们计划开发 Dashboard V2 ,主要原因有:

  1. 随着插件越来越多,自己维护的表单组件不足以覆盖所有插件场景,无意中发现了 react-jsonschema-form 这个流行的 JSONSchema 表单生成器组件,希望使用它来解决表单生成的问题;
  2. Dashboard V1 是自己独立使用 Vue.js 与 ElementUI 开发的,在适配基金会发版要求时我们修改了大量的源码文件,由于种种原因代码变得不易那么维护;
  3. Dashboard V1 是直接对接了 Admin API ( DP ),我们希望采用 DP 与 CP 分离的架构,因此需要为 Dashboard 单独开发一个 API Server 。

直到今天,Apache APISIX Dashboard 依然在缓缓维护着 V2 版本。

具体开发过程不再赘述,但值得分享的事情是自 2019 年到 2020 年末,Apache APISIX Dashboard 与 Website 两个项目的 Web 贡献者非常少,这是由于 Apache APISIX 这个 API 网关属于中间件分类,用户以服务端开发者居多。为了解决事情多、贡献者少的问题,我选择使用 Ant Design 作为 UI 组件库、使用 Ant Design Pro 作为项目脚手架,直接原因是那段时间社区以中国开发者居多,采用文档清晰、产品质量高的 Ant Design 作为项目基础组件,会降低中国开发者的贡献门槛,唯一缺点是 Ant Design 在中国太流行了,许多项目的 Dashboard 长得非常像。

从下图可见,自 2020 年中到年末,Dashboard 贡献者数量在明显地上升。来自中国、印度的贡献者们,从一些国际化内容修改到大块模块地开发,为 Dashboard 项目添砖加瓦。其中,有几位贡献者的故事令人瞩目,我会在另一篇文章进行记述。

社区

中学时我对 Web 渗透技术非常感兴趣,会在各种技术论坛中学习、交流,那时我便经常听到“社区”这个词。2016 年,我参与到了 freeCodeCamp 中文社区中,并与 Miya 等人参与到中国多个城市站建设当中,以成都、上海、杭州之活跃,并结交了众多志同道合的朋友们。

2019 年参与到开源项目 APISIX 后,我在不断为项目贡献代码之外,也在关注、回复 GitHub 、邮件列表的用户问题,并与开源用户进行讨论。随着用户地逐渐增多、讨论越来越频繁,忽然我觉得有“社区”的味道了。

APISIX 项目被捐献给 Apache 软件基金会、2020 年从基金会毕业、拥有众多国内大 B 用户地生产使用案例等,每一个事件都吸引了众多行业用户关注、为社区带来了更多用户与贡献者、为项目带来了更多生产用户的内部反馈与实践。

社区是由人构建的,Apache APISIX 社区是由来自全球各地、有着不同语言与文化的贡献者、用户以及社区共同参与维护的。在过去 3 年时间里,我们一直在做这样的事情:

  1. 认可、宣传、普及 Apache 文化;
  2. 举办线上或线下社区会议,持续关注用户反馈;
  3. 帮助不同经验的贡献者参与社区之中;
  4. 持续优化项目、丰富文档资料,帮助用户更好地使用产品。

经过不懈的努力与坚持,Apache APISIX 社区贡献者已超过 400 位!🎉

成为 Apache APISIX 贡献者,我们会尝试联系大家并邮寄一份周边以表心意。每当收到来自不同国家的贡献者动态,作为社区建设的一份子,因 TA 们付出的卓越贡献而激动不已、也会为自己感到骄傲与自豪!

用户

Apache APISIX 属于基础软件设施的中间件分类,其用户指全球使用 API 的企业。

2019 年末,贝壳找房是已知的首家超大流量生产用户,那时起便每天处理过亿生产流量,Apache APISIX 表现的非常稳定。

想象一下:每乘地铁、出差乘飞机、购买咖啡 /奶茶、看哔哩哔哩、使用 WPS 时,这些数字服务的背后都有 Apache APISIX 的存在,这种感觉是多么的棒!

我们还有许多生产用户,请访问https://apisix.apache.org/showcase 了解更多。

认可

2019 年刚参与 Apache APISIX 时,仅仅是因为它是一个开源项目、自己一直希望深度参与到一个开源项目当中,在 2019 年 10 月份,温铭 告诉我项目成功捐赠到了 Apache Software Foundation ,在毕业之前叫做 apache/incubator-apisix,我被邀请进入 initial committer。我记得很清楚:那天在办公室,内心充满欣喜地打印 Apache CLA 文件,并签名、拍照、上传,然后拥有了自己的 Apache ID juzhiyuan!!!🎉

2020 年,项目从 Apache 软件基金会毕业后,自己成为了正式的 Apache APISIX PMC 成员,除了贡献代码外也在积极维护社区建设,帮助、观察新的贡献者并选举优秀的贡献者加入 Committer 。到目前为止,我已成功推选 8 位优秀的 Committer ,其中 2 现在是 Apache APISIX PMC 成员。

2022 年 3 月某一天早上,自己收到了 Apache Member 邀请邮件,这是多么惊喜的事情呀!意味着自己除了关注 Apache APISIX 社区之外,也有了更多的责任与义务,与各位共同维护、发展 Apache 软件基金会。为此,社区专门采访了我,请阅读琚致远:95 后 Apache Member 的成长之路

时间线

9000 次点击
所在节点    程序员
75 条回复
jolanyu
2022-06-10 08:36:41 +08:00
在今年中科院的开源之夏看到了 apisix dashboard v3 项目
ccyu220
2022-06-10 08:38:32 +08:00
看懂的谁总结一下
shaoyaoju
2022-06-10 08:40:20 +08:00
@jolanyu OSPP 圈友 😄 你报名项目了嘛?最近在审核。
l4ever
2022-06-10 08:56:18 +08:00
恕我直言, 这不就是 antd 么?
kappa
2022-06-10 09:40:22 +08:00
> 2019 年大学毕业后不久,APISIX 项目发起人联系到我,希望我能为 APISIX 贡献一个 Dashboard 项目。

???
misaka19000
2022-06-10 09:42:58 +08:00
楼主你们还招人吗?
Ashore
2022-06-10 09:45:21 +08:00
太长不看系列
kop1989smurf
2022-06-10 09:45:27 +08:00
@ccyu220 #2

总结起来就是:“基于一个不可描述的原因,我成为了爱新觉罗玄烨的七大姑的八大姨的十八代玄孙的团体成员,尔等还不跪拜?”

以上内容只是图一乐,如有冒犯,望楼主见谅。
ffLoveJava
2022-06-10 09:50:13 +08:00
就用 阿里的 antd 做了前端的展示页面呗 ? 你写的太乱了 没看明白
yylzcom
2022-06-10 09:54:32 +08:00
感谢楼主为开源事业贡献的力量!
C603H6r18Q1mSP9N
2022-06-10 10:04:16 +08:00
这种文章不讨喜
Singular
2022-06-10 10:09:26 +08:00
这是展示 pyq 的 blog 吗?除了 Dashboard ,没太看懂其他和 Apache Software Foundation 有啥太多关系
reiji
2022-06-10 10:21:26 +08:00
有些老哥戾气别这么大,有代码贡献,能被认可是值得夸的
jolanyu
2022-06-10 10:27:33 +08:00
@shaoyaoju 哈哈,有意向但是有申请了别的,都是很有意思的项目
xooass
2022-06-10 10:35:57 +08:00
肯参与贡献并有实际行动,就是好的,非常支持
leeg810312
2022-06-10 10:38:14 +08:00
粗略浏览,主题就是 github 开源项目贡献的过程吧。流水账写的好乱,看了头大,不想细看。
aaaaaaaaa
2022-06-10 10:38:23 +08:00
@kappa 哈哈哈,看到这同样黑人问号,APISIX 项目发起人是你亲戚吗?怎么你一毕业就主动联系你了?还是说你原先就有某种 buff 但是没提?普通人完全没法参与,因为不会有某个 apache 基金会的项目发起人来主动联系一个普通人 :dog
manami
2022-06-10 10:41:20 +08:00
不知道是不是语言表达的问题,这个帖子 op 字里行间想给人传达的是:我很厉害。

翻看了 op 的前几个帖子,也都是这种风格。

P.S. 看了 op 的微信朋友圈截图,朋友圈这样玩,估计被好友屏蔽的差不多了,这样的动态只会给人形成一种感觉:装逼。

个人观点,不喜勿喷。
shaoyaoju
2022-06-10 10:45:38 +08:00
@l4ever 没错,是用的 Ant Design Pro 作为脚手架。由于项目偏服务端组件、Web 贡献者很少很少,因此选择了文档更加清晰、易读的 Ant Design Pro 作为脚手架。
felixcode
2022-06-10 10:45:44 +08:00
所以是在等着大家夸你吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/858593

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX