项目简介

今年,中科院软件所与华为 openEuler 项目继续共同举办 “开源软件供应链点亮计划——暑期2021” 项目。本次 TUNA 协会将继续作为社区加入这一计划,提供若干项目需求。欢迎有能力、有热情、有时间的小伙伴们参加,也欢迎 TUNA 成员们提出更多需求。TUNA 愿意和大家一起,为国内的开源生态添砖加瓦。

2020 年,TUNA 基于自身与上游需求,共提出了涉及镜像站基础设施、应用软件移植与更新、发行版维护、性能优化等多个方面的 14 个项目,并有 8 个项目通过立项,7 个项目顺利结项,一个项目(将 xgboost 与 prophet 等数据科学软件库集成到 Debian GNU/Linux,学生周默,导师 Aron Xu)获评最佳质量奖。详情可见 TUNA 项目页面官网公示。 TUNA 社区代表也参与了后续举办的开源软件供应链 2020 峰会(可见 TUNA 博客),与其他社区积极地进行交流。

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

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

本页最后更新时间:2021/4/6 12:00

注意事项

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

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

项目列表

自有项目

开源弹幕系统改进

  • 项目描述:弹幕是常用的听众与讲者的互动手段。TUNA 开发了自己的 C/S 弹幕系统 danmaQ(见下面的仓库),使用于多种场合,也被多个发行版收录。其服务端使用 Python 编写,客户端使用 Qt 编写,基本实现了跨平台。然而,目前该项目缺乏维护,代码比较陈旧,一些功能缺乏(如 Web 弹幕墙)、不完善(如审核)或已经损坏(如微信互联)。此外,清华大学计算机系科协亦有一套自己实现的弹幕系统 Comment9(见下),使用 Node.js 编写。它与 danmaQ 相比,具有一些高级功能(如多个活动、弹幕墙、多路审核、支持硬件弹幕机),但缺乏弹幕属性配置等。我们希望,整合当前两个系统的功能,改进得到一套全功能的开源弹幕系统,覆盖用户需求。
  • 项目难度:高
  • LICENSE:GPL v3
  • 项目社区导师:陈晟祺 (@Harry-Chen on GitHub)
  • 导师联系方式:shengqi.chen (at) tuna.tsinghua.edu.cn
  • 合作导师联系方式:张宇翔,yuxiang.zhang (at) tuna.tsinghua.edu.cn, @z4yx on GitHub
  • 项目产出要求:
    • 总体要求
      • 尽可能保持与当前实现的兼容性
      • 所有代码使用 GPLv3 许可证开源
      • 所有项目均需要中英双语支持
    • 弹幕服务端(建议依旧使用 Python + Flask)
      • 支持独立的多个活动,按需留存记录,能够导出
      • 发布、订阅、审核可以单独设置密码
      • 每个活动分别支持多种接入(至少包括网页、微信、Telegram)
      • 支持多种不同属性的弹幕(颜色、位置、速度)
      • 支持 Web 弹幕墙(用户可通过命令设置头像、昵称等)
      • 具有 Web 版管理后台,支持审核并设置属性(人工置顶等)
      • 具有 HTTP / WebSocket API,能够主动向客户端推送弹幕
      • 保留弹幕机配置功能
      • 有良好的性能表现
      • 配备 Dockerfile,能够简便地部署运行
    • 弹幕客户端(Qt)
      • 支持多显示器,并能够选择弹幕在哪些显示器上工作
      • 在各个系统上均正确支持高分屏(HiDPI)
      • 能够根据服务器推送的弹幕和属性,正确进行绘制
      • (可选)支持故障恢复(自动重连+跳过已经发送的弹幕)
      • 有良好的性能表现
  • 项目技术要求:
    • Qt + Python + Node.js 编程(基本语言、简单GUI、使用网络框架)
    • 网络编程(WebSocket / HTTP 协议)
    • NoSQL 数据库(redis / mongoDB)
    • 简单前端设计(CSS / Javascript)
  • 相关的开源软件仓库列表:

跨平台 NFC 读写套件的维护与升级

  • 项目描述:我们基于 Flutter 框架,实现了跨平台的 NDEF 格式解析库、移动端 NFC 框架和 NFC 信息读取应用 NFSee。目前,Flutter 已经发布了 2.0 版本,引入了较多的变化,迁移到新框架有一定的工作量。同时,在使用过程中,这些库积累了一些 bug 和功能请求,需要进一步的修复和实现。
  • 项目难度:中
  • LICENSE:MIT
  • 项目社区导师:陈晟祺
  • 导师联系方式:shengqi.chen (at) tuna.tsinghua.edu.cn
  • 项目合作导师:党凡(fan.dang (at) tuna.tsinghua.edu.cn)
  • 项目产出要求:
    • 将提供的三个项目均迁移到 Flutter 2.0 版本
    • 维护 NDEF 库,修复 bug,提供更多格式支持
    • 维护 flutter_nfc_kit 库,修复 bug,实现流式读卡接口(可选),并相应更新文档
    • 维护 NFSee,修复界面 bug,并添加更多卡片支持(如果有)
  • 项目技术要求:
    • 使用过 Dart 编程语言和 Flutter 开发框架(或能够及时学习)
    • 了解 NFC 基础知识和常见的 NFC 标准(导师可提供相关文档指导)
    • 有支持 NFC 的 Android / iOS 设备(可提供,但具备更佳)
  • 相关的开源软件仓库列表:

Windows 平台 SSH agent 的统一实现

  • 项目描述:在 Windows 平台使用 ssh agent 远不及 Linux 平台方便。通常 ssh agent 需要满足以下两个角色:
    • 保管用户的 ssh private key 或是和 smartcard 通信
    • 接受来自 ssh 客户端的 authentication 请求

    Windows 上存在 PuTTY (pageant),Win32 OpenSSH, WSL OpenSSH 等多种 ssh 实现,有 pageant socket 和 windows named pipe (OpenSSH) 两种 agent 通信协议。同时,agent 实现也有 GnuPG agent (simulated pageant, for gpg smartcard), Windows OpenSSH agent 两种。本项目需要参与学生实现一个 ssh agent 协议翻译器,实现不同 ssh 客户端使用同一个 ssh agent 实例的任务。

  • 项目难度:高
  • LICENSE:GPLv3
  • 项目社区导师:许朋程
  • 导师联系方式:i (at) jsteward.moe
  • 项目产出要求:
    • Windows 平台的 agent 翻译中间件
    • 支持 PuTTY, WSL2 OpenSSH, Win32 OpenSSH 作为客户端
    • 支持 Win32 OpenSSH agent, PuTTY Pageant, Win32 GnuPG emulated ssh agent 作为 agent 服务
      • GnuPG agent 需要支持 smartcard authentication
    • 支持客户端进行 authentication 操作
    • 支持客户端进行 ssh agent forwarding
    • 支持简单的管理操作,如:
      • ssh-add -l 列出所有 public key signature
      • ssh-add -L 打印所有完整 public key
      • 添加一个 key 到 ssh agent
      • 删除一个 key
    • 对于 WSL 支持,利用 Windows 10 17063 引入的 AF_UNIX socket 功能(详见 文档)而不是 socat
  • 项目技术要求:
    • 熟悉任何一种 Windows 平台上可以 开箱即用 的的编程语言(推荐 C++/C# .NET,也包括脚本语言,如 PowerShell)
    • 熟悉 Windows named pipe, Unix socket (on Linux and Windows) 相关操作
    • 了解 ssh agent 的工作机理和使用方法
    • 了解 gnupg 使用方法(ssh 模拟部分)
  • 相关的开源软件仓库列表:

MirrorZ:镜像站搜索引擎——镜像站状态的表示、收集与利用

  • 项目描述:国内镜像站较多,但其内容、同步状态、网络环境各不相同。例如 OpenWrt 镜像,只有部分镜像站拥有 snapshots 的内容(参考此处),又例如一些镜像的同步状态落后几天乃至几周(参考此处),其使用的同步后端也各不相同,又例如一些高校的镜像站对校外限速,例如其接入的线路是教育网,对三大运营商用户来说访问较为不理想。之前的 mirrorhub 项目静态地通过用户的网段进行负载均衡,目前的 mirrorz 只有实验性的自动跳转后端与搜索后端,上述实现的指标与功能都不够完善,效果也不理想,所以一个兼顾上述三项内容的镜像站搜索引擎是我们所需要的。
  • 项目难度:中
  • LICENSE:MIT
  • 项目社区导师:郑鈜壬 (@ZenithalHourlyRate on GitHub)
  • 导师联系方式:hongren.zheng (at) tuna.tsinghua.edu.cn
  • 项目产出要求:
    • 对镜像站的状态有较好的表示
    • 对镜像站各镜像的同步状态有较好的表示
    • 将上述指标进行收集
    • 基于收集的指标实现自动跳转或反代的后端
    • 如果可能,实现一个搜索后端
  • 项目技术要求:
    • 爬取镜像站状态的爬虫(例如使用 Python、Node.js 实现)
    • 数据库 (例如 InfluxDB)
    • 高性能的后端 (例如使用 Rust、Go 实现)
  • 相关的开源软件仓库列表: