项目简介

今年,中科院软件所继续举办 “开源软件供应链点亮计划——暑期2023” 项目。该项目与 Google Summer of Code 形式类似:开源社区提供项目需求并提供导师(mentor),在校学生利用暑期时间进行开发,主办方为顺利完成的项目提供一定额度的奖金。无论 GSoC 还是“点亮计划”,都是一种非常好的开源实践范式,能够有效增进高校学生对开源的理解、增加与真实社区的接触,并积累宝贵的经验。本次 TUNA 协会将继续作为社区加入这一计划,提供若干项目需求。TUNA 愿意和大家一起为国内的开源生态添砖加瓦,欢迎有能力、有热情、有时间的小伙伴们参加。

2021 年,TUNA 基于自身与上游需求,共提出开源弹幕系统改进、跨平台 NFC 读写套件的维护与升级、Windows 平台 SSH agent 的统一实现等多个方面的 8 个项目,并有 5 个项目通过立项,4 个项目顺利结项,其中 2 个项目获评优秀:(Windows 平台 SSH agent 的统一实现,学生张奇夫,导师许朋程)获评最佳质量奖;(完善 Gentoo ROCm GPGPU 框架,学生武益阳,导师续本达)获评突出贡献奖。详情可见 TUNA 项目页面官网公示

你也可在活动官网查看 TUNA 的项目列表

我们将于五月份举办项目说明会,具体时间待定。

本页最后更新时间:2023/05/06

注意事项

下面是一些通用的注意事项:

  • 请先详细阅读 活动首页 的介绍、日程安排、FAQ 等,对活动形式和流程有一个基本的认识。
  • 在决定报名前,首先邮件联系导师进行交流,简单地介绍一下你自己。
  • TUNA 成员大多使用 Telegram 作为即时通讯工具,而非 QQ 或微信。希望你能注册并加入 TUNA 群组以进行更细致的讨论(加入方式见本页面底部)。
  • 不要担心太难/工作量太大,在截止日期前,项目内容都是灵活可更改的。

项目列表

自有项目

下面的项目都从 TUNA 的实际需求而来,目前或者将作为 TUNA 的自有项目开放源码,由 TUNA 和开发者共同维护。

优化 TUNA 镜像站帮助文档中的 mirrorz-help 支持

  • 项目描述:TUNA 镜像站帮助页面(例如 /help/ubuntu)作为镜像源的使用指引,是镜像站必不可少的页面,广为用户熟知和访问;与此同时,很多镜像站也有帮助文档的需求,从而有大量的尝试将 TUNA 的帮助文档迁移到自家前端中。然而,我们观察到,TUNA 的 Markdown 文档为了达到一些高级功能,使用了一些「黑魔法」(静态替换由 Jekyll Liquid 实现,动态替换由 Markup.js 实现),难以迁移到其他镜像站的前端,各家镜像站为了使用此份帮助,往往需要较多的前期开发成本,这份帮助文档也频繁更新,为下游增加了不少维护压力;为了减少开发成本和维护压力,mirrorz-help 意在使用一个可交换的文档格式(MDX),提供一个帮助文档的模板,一方面能直接为各个镜像站渲染帮助页面(例如 mirrors.help/ubuntu/?mirror=BFSU),另一方面也希望这能使得各家镜像站更方便地将现有帮助文档整合进自家前端。目前,TUNA 前端正在将旧有帮助文档逐渐替换为 mirrorz-help 提供的帮助模板,然而,为了使得 mirrorz-help 的模板提供的高级功能能够对应到 TUNA 前端中的高级功能,需要将 mirrorz-help 的 MDX 转译(transpile)为一份能够使用 TUNA 前端「黑魔法」的 Markdown,而这种转译的实现目前也是由正则表达式驱动的「黑魔法」。
  • 项目难度:高
  • 项目社区导师:郑鈜壬
  • 导师联系方式:hongren.zheng (at) tuna.tsinghua.edu.cn
  • 项目产出要求:
    • 清除转译「黑魔法」,具体来说,使用正确的 MDX 解析器生成一份使用 TUNA 前端高级功能语法的 Markdown。
    • 清除 TUNA 前端「黑魔法」,一种可能的路线是将 mirrorz-help 中的 MDX 渲染直接搬入 TUNA 前端,另一种可能路线是将 MDX 转译为使用 Vue 的 Markdown
    • 如果采取第一种路线,可以将 mirrorz-help 中的 MDX 渲染提取成库,供其他镜像站前端使用
  • 项目技术要求:
    • TypeScript
    • React 与 Vue
    • Jekyll 与 Next.js
  • 相关的开源软件仓库列表:

清华大学网络学堂助手(Learn Helper)更新迭代

  • 项目描述:Learn Helper 是一站式展示清华大学网络学堂(课程教学平台)上内容的浏览器插件,目前支持学生端的作业、公告、文件、讨论、答疑的分类呈现,相比网络学堂有方便、快捷、信息密度高等优势。目前 Learn Helper 支持 Chrome、Edge、FireFox 等现代浏览器,并拥有超过一万名校内活跃用户。本项目计划对 Learn Helper(以及它依赖的网络学堂信息解析库 thu-learn-lib)进行更新迭代,支持新的浏览器插件标准,并加入更多功能。
  • 项目难度:高
  • 项目社区导师:陈晟祺
  • 导师联系方式:shengqi.chen (at) tuna.tsinghua.edu.cn
  • 项目产出要求:
    • 对 thu-learn-lib
      • 增加教师端的部分信息获取与解析(如作业、公告)
      • 增加对网络学堂的写入支持(如学生提交作业、教师批量提交成绩等)
    • 对 Learn-Helper
      • 扩展项目架构以在所有浏览器上完整支持 Manifest V3
      • 接入网络学堂的新增功能,如问卷等
      • 修改样式,增加深色模式
      • 实现 i18n 支持,并增加英语翻译
      • 实现 issue 中的其他需求(可与导师具体讨论确定)
  • 项目技术要求:
    • TypeScript 编程
    • 前端框架
      • React + Material-UI + Redux
      • Webpack 打包
  • 相关的开源软件仓库列表:

flutter-nfc-kit 更新迭代

  • 项目描述:flutter-nfc-kit 是一个用于 Flutter 的跨平台 NFC(近场通信)开发工具包。它为开发人员提供了简洁易用的 API,支持 Android 和 iOS 操作系统,让您轻松实现 NFC 功能。利用该工具包,开发者可以完成 NFC 标签读取、写入等操作。flutter-nfc-kit 提高了跨平台NFC应用开发的效率,使开发者专注于创造出更出色的 NFC 体验。本项目计划对 flutter-nfc-kit 做更新迭代,支持背景调度和更多标签/卡类型。
  • 项目难度:高
  • 项目社区导师:党凡
  • 导师联系方式:fan.dang (at) tuna.tsinghua.edu.cn
  • 项目产出要求:
    • 对 flutter-nfc-kit
      • 增加 NTAG 系列的支持
      • 增加 MiFare Classic 的操作
    • 对 NFSee
      • 扩展更多信息的显示
      • 扩展 NFC 标签写入的功能
      • 实现 issue 中的其他需求(可与导师具体讨论确定)
  • 项目技术要求:
    • Flutter 编程
    • NFC 相关文档阅读能力
  • 相关的开源软件仓库列表:

上游项目

下面的项目非 TUNA 维护,由 TUNA 成员和相应的上游社区成员(可能为同一人)共同担任导师。项目成果将以 Pull Request 的形式回馈给上游项目。

Debian 上 Zotero 6 与 Node.js 的可复现构建研究

  • 项目描述:Zotero 是基于 Gecko web 引擎的学术文献管理器。Zotero 4 在 Debian 9 (Stretch) 时代广受欢迎。但是上游开发团队在 Zotero 5 版本对代码进行了重构, Debian 上的构建开始变得困难,最终没有人能够成功转进。Zotero 已经迭代到版本 6 ,本项目目标是重新在 Debian 上打包 Zotero,并保证其可复现地构建。本项目预计极具挑战,任务包括:理解并复现 Zotero 的构建逻辑;分离由 Zotero 定制版的 Gecko 独立构建;扫描需要的 node.js 依赖并学习 Debian Javascript 团队的工作流程打包。
  • 项目难度:高
  • 项目社区导师:续本达
  • 导师联系方式:orv (at) debian.org
  • 项目产出要求
    • 完成符合 Debian 要求的 Zotero 6 包
    • 并被 Debian 官方采纳
  • 所需知识和技能
    • 有一年以上的 Debian 使用经验
    • 有一年以上的 Zotero 使用经验
    • 熟练使用 Git
    • 熟悉 node.js 生态
    • 理解 Debian 包管理器原理
  • 相关的开源软件仓库列表
    • Debian 新人开发指南: https://www.debian.org/doc/manuals/maint-guide/
    • Debian 知识大全: https://www.debian.org/doc/manuals/debian-reference/

实现一个用户态 CUDA 模拟器

  • 项目描述:CUDA 作为目前最为流行的 GPU 通用计算框架已经被应用于众多的开源应用中,涵盖从机器学习、科学计算到图像处理的各个领域。然而在发行版打包 CUDA 应用的过程中也遇到了诸多的阻碍,除了其闭源协议导致的难以重分发之外,CUDA 应用的测试也往往因为需要对真实硬件的访问而被忽视,或是只能由维护者手动测试。在开发多机并行 CUDA 应用的过程中也往往需要依赖云服务商提供的硬件以测试其正确性。本项目预期实现一个用户态 CUDA 模拟器,在 CPU 上运行 CUDA kernel,并模拟其他常用的 CUDA 运行时 API,以期实现在无需真实硬件的情况下对 CUDA 应用进行测试与开发。
  • 项目难度:高
  • 项目社区导师:曹隽诚
  • 导师联系方式:caojc19 (at) mails.tsinghua.edu.cn
  • 项目产出要求
    • 一个可以在无修改的情况下运行简单应用的 CUDA 模拟器
  • 所需知识和技能
    • CUDA 开发基础
    • C++ 开发
  • 相关的开源软件仓库列表