项目简介

今年,中科院软件所继续举办 “开源软件供应链点亮计划——暑期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
  • 项目产出要求:
    1. 基于 nfcim/fido2 仓库,补充注册和验证流程的完整功能;
      • 进行合理的 API 设计和模块划分;
      • 基于测试驱动开发,要求高代码覆盖率;
    2. 使用 Flutter 框架开发一个跨平台 WebAuthn 密钥管理器;
      • 管理器支持列出、注册、验证、删除 WebAuthn 密钥;
      • 部分性能关键组件,或复杂密码学运算,可能需要使用其他语言(如 Rust);
    3. 撰写完整的用户文档和开发文档;
    4. 贡献代码回 PR 到原 fido2 项目或自建分支,维护清晰的提交记录。
  • 项目技术要求:
    1. 能快速、准确、熟练地阅读以英语撰写的规范、标准、API 文档;
    2. 有 Dart 库 / Flutter 应用开发经验,或其他类似框架的使用经验外加强学习能力;
    3. 有密码学基础知识,了解 WebAuthn/FIDO2 协议;
    4. 熟悉 Git 工作流,能规范提交、合并代码;
    5. 有一定跨平台开发、测试的经验优先。
  • 相关的开源软件仓库列表:
  • 预估工作量: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
  • 项目产出要求:
    1. 基于 GCC master 分支,为 Fortran 语言的 subroutine 与 function 声明添加 target / target_clones 的 ATTRIBUTES 支持。
    2. 将该实现提交给开源上游
  • 项目技术要求:
    1. 熟练 C / C++,用于 GCC 内部代码开发
    2. 基本了解 Fortran 语言
    3. 熟悉 gdb 、 rr 等调试工具的使用
  • 相关的开源软件仓库列表:
  • 预估工作量:100 小时
  • 运行平台:跨平台