Skip to content

Open Source Promotion Plan Summer 2022 (Chinese)

琚致远 edited this page May 12, 2022 · 6 revisions

开源之夏 2022 项目提案

活动简介

开源之夏(全称:开源软件供应链点亮计划——暑期 2022)是由中国科学院软件研究所与 OpenEuler 社区共同主办的一项面向高校学生的暑期在线活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源软件社区的蓬勃发展。主办方联合各大开源社区,针对重要开源软件的开发与维护提供项目,并向全球高校学生开放报名

学生可以自由选择项目,与社区导师沟通实现方案并撰写项目计划书。被选中的学生将在社区导师指导下按计划完成开发工作,并将成果贡献给社区。项目的完成度由社区评估,主办方会根据评估结果给学生发放丰厚的奖金,学生还有机会成为社区 Committer

关于 Apache APISIX

Apache APISIX 是一个动态、实时、高性能的开源 API 网关,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。

作为云原生 API 网关,Apache APISIX 可以帮助企业快速、安全地处理 API 和微服务流量,可应用于网关、Kubernetes Ingress 和服务网格等场景。目前已被普华永道数据安全团队、腾讯蓝军、平安银河实验室、爱奇艺 SRC 和源堡科技安全团队等专业网络安全机构测试,并得到了高度认可。

今年,Apache APISIX 社区向开源之夏 2022 组委会推荐了多项精选项目课题,现已上线第一批项目课题,欢迎同学们积极报名申请!

申请建议

  • 仔细阅读学生指南

  • 多与导师沟通:每个项目都附有导师的联系方式,建议报名后通过邮件先与导师取得联系。

  • 充分了解活动: 认真阅读各类指南、活动日程等内容。

  • 仔细查看社区的文档:认真熟悉社区的参与方式、沟通渠道、社区软件设计文档和社区开源仓库代码等。

  • 项目申请书的质量是被选中的主要因素:仔细阅读申请要求,提交申请材料。

微信群

OSPP 2022

社区项目一览

1. 基于 xRPC 实现 dubbo 2 协议的代理功能

  • 项目描述:基于 Apache APISIX 的 xRPC 框架实现 dubbo 2 协议的代理功能,需要能根据配置动态路由,并增强其可观测性。

  • 难度:进阶

  • 导师:罗泽轩

  • 联系方式[email protected]

项目产出要求

  • 支持根据配置(service_name \ version 等)进行动态路由

  • 可以在日志中记录当前请求的相关参数,如 service_name 等等

  • 为上述功能提供详尽的文档。

项目技术要求

  • 能够跑通多个 Dubbo 官方的示例

  • 能够有充分的测试覆盖

2. 集成 OpenFunction 至 Apache APISIX

项目描述OpenFunction 是一个云原生的开源 FaaS 平台,旨在让开发者聚焦于业务逻辑而无需关心运行时的环境和设施。Apache APISIX 是一个开源的云原生 API 网关。本项目将结合二者,进而能够让用户通过 Apache APISIX 代理托管在 OpenFunction 之上的函数,从而触发函数的运行。

难度:进阶

导师:张超

联系方式[email protected]

项目产出要求

  • 向 Apache APISIX 提交实现 OpenFunction 插件的 PR,并在经过代码评审后合并进入主干分支

  • 向 Apache APISIX 提交 OpenFunction 插件文档和,并在评审和合并进入主干分支

  • 输出一篇博客介绍 Apache APISIX 是如何集成 OpenFunction 的

项目技术要求

  • 建议实现时采用小步快跑的模式,拆分若干个 PR 进行提交(小 PR 更易于评审,且效率更高)

  • 向 Apache APISIX 提交 PR 时,需要附上完整的测试用例覆盖

3. 为 APISIX Dashboard V3 实现用户认证框架及权限管理示例

项目描述:在当前 APISIX Dashboard v2 中提供基础的用户名密码认证方式,没有权限管理方案。因此需要实现一个认证及权限框架,用于对这些模块进行非侵入式扩展。

难度:基础

导师:白泽平

联系方式[email protected]

项目产出要求

  • 实现认证、权限框架

  • 实现一种认证、权限示例

  • 完善开发文档

项目技术要求

  • 任务需要进行拆分,使用 GitHub PR 逐步进行

  • 开发内容需要配合测试用例及文档

4. 支持 Gateway API 中的 TCPRoute,完成 4 层流量转发

项目描述:Apache APISIX Ingress controller 是一个使用 Apache APISIX 作为数据面的 Kubernetes Ingress controller 实现。Gateway API 旨在通过许多供应商实现并具有广泛行业支持的富有表现力、可扩展和面向角色的接口来发展 Kubernetes 服务网络。

难度:进阶

导师:张晋涛

联系方式[email protected]

项目产出要求

  • 使 APISIX Ingress controller 可以使用 Gateway API 中的 TCPRoute 配置 4 层流量代理

  • 完整的 e2e test case

项目技术要求

  • 需要熟悉基于 Kubernetes 的 controller 开发

  • 有一定的 Go 开发经验

5. Apache APISIX 中文技术文档的重构与优化

项目描述:近一年来,Apache APISIX 新增了多个插件,目前已支持 70+ 插件。在 apisix.apache.org 增加了文档站的支持后,由于文档整体数量较多,在内容质量的呈现方面却有些滞后。之前中文文档的内容编写者众多且风格不统一,部分内容也会出现细节性的错误等,所以目前 APISIX 中文技术文档的内容上依然有很大的优化空间,我们希望在文档可读性和内容准确性上呈现出更好的一面。

该项目主要是对目前 Apache APISIX 官网文档最新版本的中文内容进行调整,涉及 Plugins 插件内容下 Security 和 Traffic 两个模块中的内容(共计 19 篇;如有项目优先级调整,则更换为同插件目录下 Obeservability 模块内容,共计 21 篇)。

文字量上翻译成中文篇幅短的预计不到 1000 字/篇,篇幅长的大概在 2000-3000 字/篇左右。算上预热期在内,4 个月完成 20 篇文档,大概每周可进行一篇文档的调整与输出,在时间上对于学生来说还算比较宽裕。

难度:基础

导师:Sylvia Su

联系方式[email protected]

项目产出要求

阅读并熟悉 APISIX 英文技术文档后,对中文技术文档的内容产出有一定思路。完成目前中文技术文档的内容重构与优化,保证内容符合社区写作标准且格式统一,内容通俗易懂同时对 APISIX 项目初学者友好,最重要是保证内容的准确性。最终发布至 Apache APISIX 官方文档站供开源爱好者参考使用。

项目技术要求

  • 熟练使用 Markdown、Git 与各类编辑器和 GitHub 网站

  • 需要了解 APISIX 项目是什么、有用什么用、使用这些插件可以完成哪些场景等

6. Apache APISIX Dashboard V3

项目描述:Apache APISIX 即将迎来 V3 版本,而 Apache APISIX Dashboard 也需要对 V3 版本进行适配,借此机会,我们需要将 Dashboard 的前端部分进行重构,以解决历史问题,并带来更好的体验。

难度:进阶

导师:杨陶

联系方式[email protected]

项目产出要求

  • 使用 TypeScript 作为主要的编程语言

  • 梳理项目结构,制定合理的重构计划

  • 完成重构方案中路由与页面的重构工作

  • 协助解决项目中现存的 issue

项目技术要求

  • 熟悉 TypeScript、React、NodeJS,以及相关生态

  • 能使用 Git 和 GitHub 进行协作开发

  • 了解 React 和 NodeJS 相关生态者优先

  • 了解 Apache APISIX 者优先

7. Apache APISIX Dashboard 支持 Openid-Connect 协议登陆

项目描述:OpenID-Connect 是一套基于 OAuth2.0 协议的轻量级规范,OpenID-Connect 允许客户端基于授权服务器或身份提供商(IdP)进行的身份验证来验证最终用户的身份,并获得用户的相关信息。Apache APISIX Dashboard 支持以 OpenID-Connect 协议对接其他身份提供商,例如 Okta,Auth0 等平台,从而实现无需在控制面保存账号密码即可轻松登陆。

难度:进阶

导师:朱欣欣

联系方式[email protected]

项目产出要求

  • 向 Apache APISIX Dashboard 提交支持 OpenID-Connect 协议功能的 PR,并在经过代码评审后合并进入主分支

  • 向 Apache APISIX Dashboard 提交 OpenID-Connect 协议测试的 PR,完成对接其他平台的测试,并在经过代码评审后合并进入主分支

  • 向 Apache APISIX Dashboard 提交功能使用文档,并在评审和合并进入主干分支

项目技术要求

  • 建议实现时采用小步快跑的模式,拆分若干个 PR 进行提交(小 PR 更易于评审,且效率更高)

  • 向 Apache APISIX Dashboard 提交 PR 时,需要附上完整的测试用例覆盖

8. Apache APISIX profile 工具

项目描述:目前,Apache APISIX 没有一个非常有用的配置文件工具来分析 CPU 或内存,开发人员只能使用基准测试或打印日志来分析 Apache APISIX。使用 eBPF 为 Apache APISIX 创建配置文件工具,使用 eBPF 捕获 Apache APISIX 中的 Lua 调用堆栈信息,并将其绘制成 CPU 火焰图。

难度:进阶

导师:厉辉

联系方式[email protected]

项目产出要求

  • 使用 eBPF 捕获和解析 Apache APISIX 中的 lua 调用堆栈信息,对其进行汇总并生成 cpu 火焰图

  • 利用 eBPF 同时捕获和解析 C 和 Lua 混合调用堆栈信息,对其进行总结,生成 cpu 火焰图

  • 支持获取在 Docker 中运行的 Apache APISIX 进程

  • 支持获取 Apache APISIX Openresty luajit 32/luajit 64 模式

项目技术要求

  • 熟悉 Lua/C

  • 对 eBPF 和 Openresty 有一些了解

  • 对 profiling 有一定了解