项目简介

今年,中科院软件所与华为 openEuler 项目共同举办了 “开源软件供应链点亮计划——暑期2020” 项目。该项目与 Google Summer of Code 形式类似:开源社区提供项目需求并提供导师(mentor),在校学生利用暑期时间进行开发,主办方为顺利完成的项目提供一定额度的奖金。无论 GSoC 还是这次的“点亮计划”,都是一种非常好的开源实践范式,能够有效地增进高校学生对开源的理解、增加与真实社区的接触,并积累宝贵的经验。

本次 TUNA 协会有意作为社区加入这一计划,提供若干项目需求。欢迎有能力、有热情、有时间的小伙伴们参加,也欢迎 TUNA 成员们提出更多需求。TUNA 愿意和大家一起,为国内的开源生态添砖加瓦。

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

我们于 2020/5/23 举办了一次项目说明会,详情可见 活动公告,其中有讲稿与录像下载。

本页最后更新时间:2020/5/24 21:00

注意事项

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

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

项目列表

自有项目

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

基于对象存储的 rsync 实现

  • 项目描述:当前开源软件镜像站多采用 rsync 协议从上游差异更新,而 rsync 工具只支持 POSIX 文件系统。然而 POSIX 文件系统的大部分功能(如权限管理、目录遍历)对于镜像站是无意义的,反而引入了很多额外开销,降低了性能。目前 CDN 等高性能文件服务都采用对象存储系统(如 AWS S3)作为后端,而不是 POSIX 文件系统,因其访问延迟低,性能几乎不因文件数量增加而下降。若能将 rsync 协议与对象存储结合,实现一个在对象存储上工作的类 rsync 同步工具,那么镜像站就可从 POSIX 文件系统迁移到对象存储系统,从而提供更高质量的服务。项目不要求实现 rsync 的全部功能,只需要将远端文件列表与对象存储中的文件列表对比,下载缺失文件,删除多余文件,并更新修改日期不同的文件即可。
  • 项目难度:
  • 项目社区导师:王邈
  • 导师联系方式:miao.wang (at) tuna.tsinghua.edu.cn
  • 合作导师联系方式:朱晟菁 zhsj (at) debian.org
  • 项目产出要求:
    • 类似于 rsync 命令的跨平台文件同步工具
      • 支持 rsync:// 网络协议
      • (可选)支持 rsync over ssh
    • 本地存储是对象存储服务而不是传统的POSIX文件系统
      • 支持多种不同的对象存储后端
        • 基于 HTTP 的后端(可参考或使用相关仓库中的 storage 项目)
        • (可选)原生后端(如 Ceph 提供的 librgw
    • 支持的同步功能
      • 从远端下载本地缺失文件
      • 删除远端没有的多余文件
      • 对比已有文件修改日期和大小,如果不一样则更新
      • exclude文件列表(按照 rsync 工具的通配符格式)
      • --delete-after 等 rsync 更新选项(以保持同步的原子性)
  • 项目技术要求:
    • 熟悉任何一种高性能的编程语言(推荐 C++/Go/Rust 等)
    • 熟悉网络编程与应用协议的实现
    • 能够阅读并理解rsync工具源代码,理解其协议
    • 了解对象存储系统的使用方法(API)
  • 相关的开源软件仓库列表:
    • https://git.samba.org/?p=rsync.git (原版 rsync)
    • https://github.com/tuna/rsync (TUNA 实现的 rsync,缓存元数据在内存中以减少磁盘开销)
    • https://github.com/gilbertchen/acrosync-library (C++ 写的 rsync client,RPL-1.5 License)
    • https://github.com/Xuanwo/storage (一个 Go 的通用对象存储中间件)
    • https://github.com/openbsd/src/tree/master/usr.bin/rsync (OpenBSD 重写的 rsync)
    • https://github.com/sourcefrog/rsyn (Rust 写的 rsync client,WIP 阶段)

TUNA Mirrors服务器的ZFS性能问题调研及调优

  • 项目描述: TUNA Mirrors 是国内外知名的综合型开源与自由软件镜像,其收录软件数量庞大,长久以来持续服务于国内外的学术界及工业界对软件仓库的需求。由于用户需求日益上升,服务器存储系统中的ZFS一直在遭受严峻的挑战,并屡屡触碰性能瓶颈以及各类疑难的性能问题。本项目旨在考察 TUNA Mirrors 的 ZFS 软硬件配置,调研其中存在的各种疑难性能问题及瓶颈,并尽可能给出相应的性能调优建议。性能调优对于提升 TUNA Mirrors 及其姊妹镜像站用户体验而言意义重大。
  • 项目难度:高
  • 项目社区导师:Aron Xu
  • 导师联系方式:aron (at) debian.org
  • 合作导师联系方式:王邈,miao.wang (at) tuna.tsinghua.edu.cn
  • 项目产出要求:
    • 调研TUNA Mirror的ZFS性能瓶颈以及潜在的性能问题。
    • 基于具体的原因分析,给出相应的性能调优解决方案。
  • 项目技术要求:
    • 熟悉linux服务器维护
    • 熟悉C语言,并能够调试linux内核模块
    • 能够考察Illumos(OpenSolaris后继)以及FreeBSD上的ZFS性能
    • 熟悉ZFS
  • 相关的开源软件仓库列表:
    • https://github.com/openzfs/zfs
    • https://www.illumos.org/
  • 注意:本项目不是一个编码性质的项目,并且具有相当高的难度。我们并不要求你能够解决这一问题,即便能够在一个实验环境中复现这一问题,并且找到性能瓶颈,已经是相当好的成果了。如果需要选择本项目,请确保你已经与导师进行了充分的交流,并且完全明确了目标。

开源弹幕系统改进

  • 项目描述:弹幕是常用的听众与讲者的互动手段。TUNA 开发了自己的 C/S 弹幕系统 danmaQ(见下面的仓库),使用于多种场合,也被多个发行版收录。其服务端使用 Python 编写,客户端使用 Qt 编写,基本实现了跨平台。然而,目前该项目缺乏维护,代码比较陈旧,一些功能缺乏(如 Web 弹幕墙)、不完善(如审核)或已经损坏(如微信互联)。此外,清华大学计算机系科协亦有一套自己实现的弹幕系统 Comment9(见下),使用 Node.js 编写。它与 danmaQ 相比,具有一些高级功能(如多个活动、弹幕墙、多路审核、支持硬件弹幕机),但缺乏弹幕属性配置等。我们希望,整合当前两个系统的功能,改进得到一套全功能的开源弹幕系统,覆盖用户需求。
  • 项目难度:中
  • 项目社区导师:陈晟祺 (@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)
  • 相关的开源软件仓库列表:
    • https://github.com/tuna/danmaQ
    • https://github.com/tuna/gdanmaku-server
    • https://github.com/Harry-Chen/Comment9
  • 注意:本项目目前意向人数较多

通用镜像站前端框架

  • 项目描述:开源镜像站在呈现文件之外,也需要向用户呈现服务器状态、同步状态、使用帮助等更多的信息。目前,TUNA 镜像站使用了一套 Jekyll 静态生成页面 + AJAX 动态获取信息 + 服务端 njs 渲染结合的方法来向多种平台(现代浏览器、老旧浏览器、文本终端浏览器)提供支持。然而这种方法可维护性略差,也缺少通用性。同时,TUNA 镜像站的前端也硬编码了大量信息,对其他组织的使用造成了一定的不便。我们希望,能够在当前的基础上,对 TUNA 镜像站的前端进行详细设计与重构,形成一套通用的适用于各大开源镜像站的前端框架。
  • 项目难度:中
  • 项目社区导师:王邈
  • 导师联系方式:miao.wang (at) tuna.tsinghua.edu.cn
  • 合作导师联系方式:陈晟祺,shengqi.chen (at) tuna.tsinghua.edu.cn, @Harry-Chen on GitHub
  • 项目产出要求:
    • 保留当前已有功能
      • 显示镜像列表、标注,提供使用帮助
      • 显示同步状态、服务器状态
      • 发布新闻公告
      • 响应式设计,并支持暗色模式
      • 支持多种浏览器环境,均能正确显示内容
    • 新增功能
      • 支持国际化(至少加入中英双语切换支持)
      • 提取各种可变字段为配置,增强灵活性
    • 重构功能
      • (讨论中)迁移至 Hugo 等更现代的静态生成器
      • (讨论中)尽量减少非必要 JS / AJAX 的使用,对非 JS 用户保持友好
  • 项目技术要求:
    • 基础前端开发(HTML、JavaScript、CSS)
    • 现代前端基础设施(Bootstrap、jQuery、Vue)
  • 相关的开源软件仓库列表:
    • https://github.com/tuna/mirror-web
  • 注意:本项目目前意向人数较多

开源硬件密钥设备 Web 控制台

  • 项目描述:以 YubiKey 为代表的密钥存储设备深受 geek 们的喜爱,而相关的密码技术也在开源社区中得到了广泛应用(如 GnuPG)。由于 YubiKey 不开源,近年来,开源社区中陆续诞生了一些开源的硬件密钥设备,例如 SoloKey、CanoKey。作为一个新兴的开源硬件密钥设备,CanoKey 提供了与 YubiKey 一致的FIDO2/U2F、PIV、OpenPGP 和 OATH(HOTP、TOTP)的支持。为了向大众普及和推广密码学工具,CanoKey 还提供了 WebUSB 支持,可以在浏览器中直接使用密码学工具。现在,这些工具的开发还处于起步阶段,需要社区支持,让密码学工具变得更加易用。
  • 项目难度:高
  • 项目社区导师:党凡
  • 导师联系方式:dangfan (at) tsinghua.edu.cn
  • 合作导师联系方式:Zamir Sun,zsun (at) fedoraproject.org
  • 项目产出要求:
    • 运行在 web 上的类似于 YubiKey Management Tool 的工具
      • 查看、管理 OATH(TOTP、HOTP)
      • 导入 FIDO2 私钥和证书
      • (可选)管理 FIDO2 的 resident key
      • 管理 OpenPGP 的基本信息和密钥
      • 管理 PIV 的证书和密钥
  • 项目技术要求:
    • 了解 ISO 7816 协议
    • 熟悉 JavaScript 和 Dart
    • 能够阅读、理解 OpenPGP、PIV 和 FIDO2 的文档
  • 相关的开源软件仓库列表:
    • https://github.com/w3c/webauthn
    • https://github.com/canokeys/canokey-core
    • https://github.com/canokeys/canokey-stm32
    • https://github.com/nfcim/flutter_nfc_kit
    • http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git

跨平台 TOTP、HOTP 移动客户端

  • 项目描述:随着 iOS 13 进一步开放 NFC 功能,Android 和 iOS 系统都具备了 NFC Reader 的能力。TOTP 和 HOTP 是目前不少网站和应用的 2FA 选项之一,无论是 YubiKey、CanoKey 这样的硬件产品,还是装有 OATH 应用的智能卡,都可以通过 NFC 在手机上提供便捷安全的 TOTP 和 HOTP 功能。本项目的目标是利用 NFC 功能,实现一个开源的 TOTP、HOTP 客户端,支持常见的智能卡或类智能卡设备。
  • 项目难度:中
  • 项目社区导师:党凡
  • 导师联系方式:dangfan (at) tsinghua.edu.cn
  • 合作导师联系方式:Zamir Sun,zsun (at) fedoraproject.org
  • 项目产出要求:
    • 运行在移动设备上的跨平台 OATH 工具(类似于 Google Authenticator)
      • 使用 Flutter 编写
      • 查看验证码
      • 增加新的密钥
  • 项目技术要求:
    • 了解 ISO 7816 协议
    • 熟悉 Flutter 和 Dart
    • 能够阅读、理解 OATH 的文档(RFC 4226、6238等)
  • 相关的开源软件仓库列表:
    • https://github.com/nfcim/flutter_nfc_kit

跨平台 NFC 信息读取移动应用开发

  • 项目描述:目前,各类移动设备,包括 Android 与 iOS,都增加了对 NFC 通信的支持;但各类应用对于 NFC 的支持都很不完善,缺少一个统一的跨平台的支持库。同时,关于 NFC 各类标准的文档也并不齐全,通常需要到处查找,为开发者造成了很大的障碍。前期,我们在 Android 平台上是实现了一个 NFC 卡片的读取应用 NFSee;目前,需要将其使用 Flutter 重写以实现跨平台。同时,也将搭建一个公开的 Wiki 网站,对 NFC 相关的协议、标准进行整理和阐述,以纠正常见误区,帮助其他开发者更好地在移动端进行 NFC 相关的开发。
  • 项目难度:中
  • 项目社区导师:党凡
  • 导师联系方式:dangfan (at) tsinghua.edu.cn
  • 合作导师联系方式:陈晟祺,shengqi.chen (at) tuna.tsinghua.edu.cn, @Harry-Chen on GitHub
  • 项目产出要求:
    • 使用 Dart 实现一个 NDEF 协议数据格式的支持库,并开源发布
      • 支持对所有标准类型的数据进行解析和生成
    • Flutter NFC 支持库 flutter_nfc_kit
      • 添加 NDEF 协议的支持,可读写标准的 NDEF 数据
        • iOS 需进行不同协议底层的兼容实现,非直接调用接口
    • Flutter 开发的 NFC 读取应用 NFSee
      • 添加对更多类型卡片的支持
      • 添加对 NDEF 标签的读写支持、数据呈现
    • 开放文档 NFC Wiki
      • 对现有 NFC 标准与规范进行充分、完整的归纳
      • 整理各类卡片的读取方式
      • 整理易错概念和开发注意点
  • 项目技术要求:
    • Flutter 应用开发
    • Android / iOS 原生应用开发
    • NFC 通信协议开发(可提供设备与卡片)
  • 相关的开源软件仓库列表:
    • https://github.com/nfcim/flutter_nfc_kit
    • https://github.com/nfcim/nfsee
    • https://wiki.nfc.im/

SCIM Qt5 移植

  • 项目描述:SCIM 历史悠久的输入法框架,早期为 GNU/Linux 系统的中文本土化立下了汗马功劳,然而近年来 SCIM 的开发团队已经不再活跃,开发停滞,项目处于维护状态。当前 SCIM 依旧可以在各大发行版上顺畅使用,唯一缺失的功能是对 Qt5 的支持。本项目计划把 SCIM 移植到 Qt5。
  • 项目难度:高
  • 项目社区导师:续本达
  • 导师联系方式:heroxbd (at) gentoo.org
  • 项目产出要求
    • 运行于 Qt5 的 SCIM
    • 修复 bugs.debian.org 上的其它 SCIM bug
  • 所需知识和技能
    • 有 SCIM 使用经验
    • C++ 编程能力
    • Qt编程经验
  • 相关的开源软件仓库列表
    • SCIM: https://github.com/scim-im/scim/
    • Debian SCIM 包: https://packages.qa.debian.org/s/scim.html
  • 说明:本项目由于上游已经不再活跃,社区计划 fork 并接手这一项目,因此作为社区自有项目发布。

上游项目

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

将 xgboost 与 prophet 等数据科学软件库集成到 Debian GNU/Linux

  • 项目描述:xgboost (梯度提升),prophet (时间序列预测)以及 Stan (高性能统计建模),pytorch (深度学习)等是重要的数据科学软件。Debian 作为用户基数庞大的 Linux 发行版之一,用户群中不乏数据科学用户群体,而上述软件尚未集成到该系统中,或者缺乏一部分计算性能相关的依赖库。为帮助用户获得更佳使用体验,方便安装及部署,该项目旨在为 Debian 官方仓库引入这些软件及其对应的依赖库,并将仓库中已有的依赖更新到理想状态。
  • 项目难度:高
  • 项目社区导师:Aron Xu
  • 导师联系方式:aron@debian.org
  • 项目产出要求:
    • 鉴于 Xgboost 等库被广泛应用于各类项目中,完成的集成工作需要附加测试代码以确保可以持续性地测试这些库的可用性及正确性。
    • 如果上游软件存在阻碍集成的 bug,则需要修复并向上游提供 PR。
    • 完成任务描述中提及软件及其一系列依赖库的集成工作,并上传到官方仓库。
  • 项目技术要求:
    • 丰富的 Linux 系统使用/维护经验
    • 丰富的 apt/dpkg 使用经验
    • 熟悉至少一种脚本编程语言,能够编写基本的 Makefile
    • 具有一定数学及数据科学背景
  • 相关的开源软件仓库列表
    • https://facebook.github.io/prophet/
    • https://github.com/dmlc/xgboost
    • https://github.com/stan-dev/cmdstan
    • https://github.com/stan-dev/math
    • https://github.com/stan-dev/stan
    • https://github.com/stan-dev/cmdstanpy
    • https://github.com/stan-dev/rstan
    • https://github.com/stan-dev/pystan
    • https://github.com/dmlc/rabit
    • https://github.com/pytorch/FBGEMM
    • https://github.com/pytorch/pytorch
    • https://github.com/pytorch/text
    • https://github.com/pytorch/audio
    • https://github.com/pytorch/tensorpipe
    • https://github.com/intel/ideep

Gentoo R_Overlay 升级

  • 项目描述:Gentoo R Overlay是一个读取 CRAN 和 BIOC 仓库,并自动生成 Gentoo ebuild 组成 portage overlay 的项目。从2013年至今,一直为 Gentoo 的统计学、生物学和物理学领域的科学家提供服务。本项目将针对 Gentoo R Overlay 的现状和用户需求,对其进行升级。
  • 项目难度:高
  • 项目社区导师:续本达
  • 导师联系方式:heroxbd (at) gentoo.org
  • 项目产出要求
    • 将 R_Overlay 移植到 Python 3.8
    • 实现旧 ebuild 的清理机制
    • 完善 R Overlay 的使用文档
  • 所需知识和技能
    • 有 Gentoo 使用经验
    • 有系统管理经验
    • 熟练使用 Git
    • 有R使用经验,Python 编程能力。
  • 相关的开源软件仓库列表
    • R_Overlay: https://github.com/dywisor/roverlay
    • Gentoo R Overlay: https://wiki.gentoo.org/wiki/Project:Science/Overlay/R
    • Gentoo Science Project: https://wiki.gentoo.org/wiki/Project:Science

Gentoo PyPI ebuild 生成器

  • 项目描述:在 Gentoo 上使用 PyPI 包一种做法是先把 PyPI 的软件打包成 Gentoo 的 ebuild,其缺点是更新需要由人工完成,效率较低。另一种做法是使用 PyPI 的 pip 来绕过 Gentoo 的包管理系统 portage 直接安装,其缺点是容易与 portage 冲突,导致 Python 子系统的混乱。本项目计划采两家之长,通过一个 PyPI ebuild 生成器自动生成一个 PyPI 的 portage overlay,为 Gentoo 用户提供最新 Python 软件仓库。项目可以借鉴现已无人维护的 gs-pypi 代码。
  • 项目难度:高
  • 项目社区导师:续本达
  • 导师联系方式:heroxbd (at) gentoo.org
  • 项目产出要求
    • 自动生成并持续更新的 Gentoo PyPI Overlay。
  • 所需知识和技能
    • 有 Gentoo 使用经验
    • 有系统管理经验
    • 熟练使用 Git。
  • 相关的开源软件仓库列表
    • GS PyPI: https://github.com/jauhien/gs-pypi
    • Gentoo Python Project: https://wiki.gentoo.org/wiki/Project:Python

Gentoo Android App

  • 项目描述:Gentoo on Android 可以在 Android 上运行 Gentoo Prefix,实现无性能损耗的完整的 GNU 环境。然而,当前的 Gentoo on Android 一方面需要 root 权限,另一方面需要手动安装,亟需一个不需 root 的 Android App 完成安装,更方便地把手机转换成开发和生产工具。在 Android 的系统中,每个 App 有一个专有的用户 uid 和一个保留的空间存放数据,适合嵌入一个这个 uid 下的 Gentoo Prefix 实例,解决当前 Gentoo on Android 的两个问题。
  • 项目难度:高
  • 项目社区导师:许朋程
  • 导师联系方式:i (at) jsteward.moe
  • 合作导师联系方式:
    • 续本达,heroxbd (at) gentoo.org
    • 陈晟祺,shengqi.chen (at) tuna.tsinghua.edu.cn
  • 项目产出要求
    • 自由开源的 Gentoo Android App。
  • 所需知识和技能
    • 有 Android App 开发能力
    • 有 Gentoo 使用经验
    • 熟练使用 Git
  • 相关的开源软件仓库列表
    • Gentoo on Android: https://wiki.gentoo.org/wiki/Project:Android
    • Nix on Android: https://f-droid.org/en/packages/com.termux.nix

Gentoo ROCm HIP GPGPU 方案

  • 项目描述:ROCm 是 AMD 显卡的自由开源的科学计算系统,HIP 是 ROCm 的 CUDA 兼容层,提供类似于 CUDA 的 API。然而 ROCm 和 HIP 的文档校为缺乏,除了官方指定的个别平台之外,安装和部署较为困难。Gentoo Linux 是一个元发行版,具有高度的可定制性,是各发行版中进行科学计算相关开发的良好选择。当前,Gentoo 中的 ROCm 相关的软件包已经成熟,但是 HIP 及与之相关的 rocBLAS 等高级库尚未完成,依旧有许多难点。本项目将完成 Gentoo 的 HIP 软件包,并为 PyTorch, Tensorflow 提供 AMD 设备上的进行方案。完成发行版上开源 GPGPU 框架的布局。
  • 项目难度:高
  • 项目社区导师:续本达
  • 导师联系方式:heroxbd (at) gentoo.org
  • 项目产出要求:
    • Gentoo 的 HIP 软件包
    • PyTorch-ROCm 软件包
    • Tensorflow-ROCm 软件包。
  • 所需知识和技能:
    • Linux 系统运维、使用与调试
    • Gentoo portage/ebuild 理解和写作能力
    • shell 编程能力
    • 熟练使用 Git
  • 相关的开源软件仓库列表
    • ROCm: https://github.com/RadeonOpenCompute/ROCm
    • Gentoo Portage 软件仓库: https://gitweb.gentoo.org/repo/gentoo.git

Emacs Jupyter client

  • 项目描述:Emacs 是久负盛名的编辑器,以其高度的可编程扩展性闻名于世。Jupyter 是基于 HTTP 的远程异步运行系统,在科学计算有广泛的应用。EIN 项目为 Emacs 提供 Jupyter 客户端,可以弥补 Jupyter 网页上输入功能薄弱的劣势,把 Emacs 的强大编辑功能与 Jupyter 异步执行功能有机结合,成为 literate programming 的最强方案之一。但是,EIN使用的 HTTP 框架由基于 callback 的异步编程框架,维护较为困难,本项目将使用 coroutine 的函数式编程模型重写 EIN,完成现代的 Emacs Jupyter 客户端。
  • 项目难度:高
  • 项目社区导师:续本达
  • 导师联系方式:heroxbd (at) gentoo.org
  • 项目产出要求
    • 使用函数式 coroutine 重写 EIN 的异步模块,提升 EIN 的稳定性。
  • 所需知识和技能
    • Emacs 的使用经验,Emacs LISP 编程经验,熟练使用 Git
  • 相关的开源软件仓库列表
    • EIN – emacs-ipython-notebook: https://github.com/millejoh/emacs-ipython-notebook