开源之夏是由“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源软件社区的蓬勃发展,培养和发掘更多优秀的开发者。
活动联合国内外各大开源社区,针对重要开源软件的开发与维护提供项目任务,并面向全球高校学生开放报名。
2023 年,MOSN 社区再次加入中国科学院软件研究所的高校开源活动—— “开源之夏 2023” ,为大家准备了三个任务,涉及 Go、HTTP、Security、Software-Defined Networking、Container 等多个领域。
MOSN 项目介绍
MOSN (Modular Open Smart Network) 是一款基于 Go 语言开发的云原生网络代理平台,由蚂蚁集团开源并在双 11 大促期间经过几十万容器的生产级验证。MOSN 为服务提供多协议、模块化、智能化、安全的代理能力,融合了大量云原生通用组件,同时也可以集成 Envoy 作为网络库,具备高性能、易扩展的特点。另外,MOSN 可以集成 Istio 构建 Service Mesh,也可以作为独立的四、七层负载均衡,API Gateway、云原生 Ingress 等使用。
Layotto 项目介绍
Layotto (/leɪˈɒtəʊ/) 是一款使用 Golang 开发的应用运行时, 旨在帮助开发人员快速构建云原生应用,帮助应用和基础设施解耦。它为应用提供了各种分布式能力,例如状态管理、配置管理、事件发布订阅等,以简化应用的开发。
活动规则
开源之夏官网:
各位同学可以自由选择项目,与社区导师沟通实现方案并撰写项目计划书。被选中的学生将在社区导师指导下,按计划完成开发工作,并将成果贡献给社区。社区评估学生的完成度,主办方根据评估结果发放资助金额给学生。
MOSN 社区项目
项目链接:[*https://summer-ospp.ac.cn/org/orgdetail/f0813e66-fa19-4302-a3e3-e6f2d210c83d?lang=zh>*]()
MOSN Go、HTTP、Security
项目社区导师:罗泽轩
<spacewanderlzx@gmail.com>
基于 Coraza 和 MOSN on Envoy 开发 Envoy 的 WAF 插件
项目编号:23f080212
项目难度:进阶/Advanced
Coraza 是一个用 Go 实现的 WAF 引擎,我们希望能够借助 MOSN on Envoy 的能力,让 Coraza 运行在 Envoy 当中,并与官方的基于 Wasm 的实现 (https://github.com/corazawaf/coraza-proxy-wasm) 进行比较。
- 实现一个基本可用的 WAF 插件 (需要有详尽的文档+测试) ,并与 Wasm 版本做对比,输出一份比较报告。
- 了解 MOSN、Envoy 和 WAF,能够用 Go 写代码。
MOSN Go、Software-Defined Networking
项目社区导师:纪卓志
<jizhuozhi.george@gmail.com>
为 Envoy Go 扩展建设插件市场
项目编号:23f080259
项目难度:进阶/Advanced
Envoy 是当前最流行的网络代理之一,Go 扩展是 MOSN 社区为 Envoy 增加的 Go 生态基础,也是 MOSN 社区 MoE 框架的基础。
受益于 Golang 生态系统,研发可以轻松在 Envoy 实现插件用于更多的长尾场景,其中很多场景都是通用的。
本项目是为 Envoy Go 扩展构建插件市场。在插件市场中,人们可以在插件市场中分享插件,选用已经存在的插件。通过插件市场,可以让 Envoy、MoE 生态变得更加开放、共享、丰富。
- 提供一个 Envoy Go 插件的内容平台,在这里可以发布经过社区 Review 的优秀插件,需要拥有服务端与前端页面。
- 不自建账号体系,通过 GitHub OAuth2.0 完成用户认证与授权。
- 进阶——对接 GitHub OpenAPI,支持动态获取插件所在仓库信息,包括 README、分支版本以及 Star 数。
- 能够使用 Go 语言 (框架不限) 开发出带前端页面的小型站点。
- 对认证与授权及 OAuth2.0 有基本的了解。
- 熟悉 Git 和 GitHub 工作流程 (分支、版本、合并请求等) 。
Layotto Go、gRPC
项目社区导师:wenxuwan
<wangwenxue.wwx@antgroup.com>
Layotto Support Pluggable Components
项目编号:23f080194
项目难度:进阶/Advanced
当前 Layotto 的 Components 都是实现在 Layotto 的工程里面的。用户若要想使用新的 Component,就必须使用 Golang 语言开发,同时必须在 Layotto 工程中实现,然后统一编译。对于多语言用户来说非常不友好,因此 Layotto 需要提供 Pluggable Components 的能力,允许用户可以通过任何语言实现自己的 Components,Layotto 通过 gRPC 协议和外部的 Components 进行通信。
- 完成 Pluggable Components 框架设计。
- 提供 Pluggable Components 接入文档和示例。
- 熟悉 Golang 和 gRPC,熟悉 Dapr 和 Layotto 运行时架构。
申请资格
- 本活动面向年满 18 周岁在校学生。
- 暑期即将毕业的学生,只要在申请时学生证处在有效期内,就可以提交申请。
- 中国籍学生参与活动需提供身份证、学生证、教育部学籍在线验证报告(学信网)或在读证明。
- 外籍学生参与活动需提供护照,同时提供录取通知书、学生卡、在读证明等文件用于证明学生身份。
活动流程