项目简介
今年,中科院软件所继续举办 “开源软件供应链点亮计划——暑期2025” 项目。该项目与 Google Summer of Code 形式类似:开源社区提供项目需求并提供导师(mentor),在校学生利用暑期时间进行开发,主办方为顺利完成项目的同学提供一定额度的奖金。无论 GSoC 还是“点亮计划”,都是一种非常好的开源实践范式,能够有效增进高校学生对开源的理解、增加与真实社区的接触,并积累宝贵的经验。本次 TUNA 协会将继续作为社区加入这一计划,共立项两个项目。TUNA 愿意和大家一起为国内的开源生态添砖加瓦,欢迎有能力、有热情、有时间的小伙伴们参加。
2024 年,TUNA 基于自身与上游需求,共立项 Rust 基于完成的异步 QUIC、基于前端技术栈的 OpenStreetMap 中公共交通关系编辑器、RISC-V 向量处理器 T1 性能评估框架、CIRCT 编译器的电路划分及 Arcilator 仿真并行化 4 个项目,全部项目均顺利结项,详情可见 TUNA 项目页面 和 官网公示。
你也可在活动官网查看 TUNA 的社区主页和项目列表。
项目说明会将于 5 月 13 日举行,活动细节见预告。
注意事项
下面是一些通用的注意事项:
- 请先详细阅读 活动首页 的介绍、日程安排、FAQ 等,对活动形式和流程有一个基本的认识。
- 在决定报名前,首先邮件联系导师进行交流,简单地介绍一下你自己。
- TUNA 成员大多使用 Telegram 作为即时通讯工具,而非 QQ 或微信。希望你能注册并加入 TUNA 群组以进行更细致的讨论(加入方式见本页面底部)。
- 不要担心太难/工作量太大,在截止日期前,项目内容都是灵活可更改的。
项目列表
跨平台 WebAuthn 密钥管理器
- 项目页面:https://summer-ospp.ac.cn/org/prodetail/25c480529
-
项目描述:
随着无密码认证(passwordless authentication)技术的发展,WebAuthn 标准逐渐成为主流身份认证方式。开源项目 https://github.com/nfcim/fido2 提供了基础的 FIDO2/WebAuthn 协议支持,但目前该项目仅支持数据解析与简单密钥管理,而缺少下列功能:
- 注册(Registration);
- 验证(Authentication);
- 友好且跨平台的图形化管理工具。
本项目目标为完善 nfcim/fido2 项目,补充 FIDO2 注册和验证流程,并进一步开发一个支持 Android、iOS、Windows、macOS 和 Linux 的跨平台 WebAuthn 密钥管理程序。通过该管理器,用户可以直观地:
- 查看已注册的 WebAuthn 密钥信息(如 RP ID、User ID、公钥等);
- 删除不再需要的密钥;
- 测试注册和验证流程。
-
项目难度:进阶
本项目综合涉及 FIDO2/WebAuthn 协议理解、跨平台 GUI 开发等多个领域,具有较高的技术挑战:
- 需要深入理解 WebAuthn/FIDO2 标准(如 CTAP2 协议);
- 涉及多平台兼容性问题。
- 项目社区导师:党凡
- 导师联系方式:i (at) dang.fan
- 项目产出要求:
- 基于 nfcim/fido2 仓库,补充注册和验证流程的完整功能;
- 进行合理的 API 设计和模块划分;
- 基于测试驱动开发,要求高代码覆盖率;
- 使用 Flutter 框架开发一个跨平台 WebAuthn 密钥管理器;
- 管理器支持列出、注册、验证、删除 WebAuthn 密钥;
- 部分性能关键组件,或复杂密码学运算,可能需要使用其他语言(如 Rust);
- 撰写完整的用户文档和开发文档;
- 贡献代码回 PR 到原 fido2 项目或自建分支,维护清晰的提交记录。
- 基于 nfcim/fido2 仓库,补充注册和验证流程的完整功能;
- 项目技术要求:
- 能快速、准确、熟练地阅读以英语撰写的规范、标准、API 文档;
- 有 Dart 库 / Flutter 应用开发经验,或其他类似框架的使用经验外加强学习能力;
- 有密码学基础知识,了解 WebAuthn/FIDO2 协议;
- 熟悉 Git 工作流,能规范提交、合并代码;
- 有一定跨平台开发、测试的经验优先。
- 相关的开源软件仓库列表:
- 预估工作量:180 小时
- 运行平台:跨平台
GCC-Fortran 的 Function Multi-Versioning 功能实现
- 项目页面:https://summer-ospp.ac.cn/org/prodetail/25c480531
-
项目描述:Fortran 是一种特别适用于数值计算和科学计算的编程语言,这样的程序往往很容易被CPU的指令集扩展所加速,如 AVX2 、 AVX512 等等。然而,如果我们直接通过
-march
或-mcpu
指定指令集扩展,会导致所编译的程序二进制失去跨平台兼容能力。此外,对于程序中的某些部分,编译时选择最佳的指令集扩展有时反而会引入显著的性能下降。因此,在函数粒度对函数多版本行为进行控制,不仅能够保证程序二进制的跨平台兼容性,同时还能够提升程序的性能。在 GCC 中,我们可以在 C / C++ 通过 target 和 target_clones 两个 attribute 使编译器为函数生成支持不同指令集扩展集合的版本,并在运行时根据CPU所支持的指令集扩展选择其能够支持的最佳的函数。然而,GCC 中尚且缺乏对 Fortran 的函数多版本支持。
- 项目难度:进阶
- 项目社区导师:陈泱宇
- 导师联系方式:cyy (at) cyyself.name
- 项目产出要求:
- 基于 GCC master 分支,为 Fortran 语言的 subroutine 与 function 声明添加 target / target_clones 的 ATTRIBUTES 支持。
- 将该实现提交给开源上游
- 项目技术要求:
- 熟练 C / C++,用于 GCC 内部代码开发
- 基本了解 Fortran 语言
- 熟悉 gdb 、 rr 等调试工具的使用
- 相关的开源软件仓库列表:
- git://gcc.gnu.org/git/gcc.git
- https://github.com/cyyself/gcc
- 预估工作量:100 小时
- 运行平台:跨平台