USTC LUG中国科学技术大学 Linux 用户协会

「开源软件供应链点亮计划——暑期 2020」USTCLUG 项目提案

2020-05-10

「开源软件供应链点亮计划」是由中国科学院软件研究所发起并长期支持一项活动,旨在解决基础开源软件面临的许可、质量、维护和技术支持等问题,进而影响整个软件产业的供应链。而「开源软件供应链点亮计划——暑期2020」是由中科院软件所与 openEuler 社区共同举办的一项面向高校学生的暑期活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进国内优秀开源软件社区的蓬勃发展。

此活动与 GSoC (Google Summer of Code) 的模式类似:开源项目/社区提供项目需求与导师 (mentor);学生申请项目通过后利用暑期的时间进行开发,将成果贡献给社区;主办方(中科院软件所与 openEuler 社区)根据评估结果给学生发放奖金。所有参与的社区列表可查看 https://isrc.iscas.ac.cn/summer2020/#/organisations

今年夏天,USTCLUG (中科大学生 Linux 用户协会) 计划以社区身份加入此暑期活动。以下是我们计划的项目提案,也欢迎社团的各位同学提出建议。

本提案参考了清华大学 TUNA 协会(清华大学学生网络与开源软件协会)的项目提案,在此表示感谢。

在报名前,请先阅读由主办方提供的学生指南

科大镜像站前端架构改进

项目描述:目前,科大镜像站的前端架构仍然沿用着 2013 年的设计,但是随着时间的发展,我们也发现目前的镜像站前端架构在用户体验、维护与部署上带来了一些不便。目前的镜像站主页是由一套 Python 脚本每小时从模板生成得到的,虽然足够使用,但是在维护中也遇到了一些问题,诸如界面设计的实用性、主页与 status 页面显示不一致等问题。本项目希望能够通过调整镜像站前端架构,提高用户体验,降低维护的复杂度,也方便其他需要的镜像站部署页面显示的解决方案。

项目难度:

项目社区导师:付佳伟

导师联系方式:[email protected]

合作导师联系方式:陶柯宇 [email protected]

项目产出要求:以下要求不需要全部达到,选择感兴趣的方向即可

项目技术要求:

相关的开源软件仓库列表:

License: GNU GPLv2

Hackergame CTF 比赛平台改进

项目描述:Hackergame 是 USTCLUG 开发的一套开源 CTF 比赛平台,主要用于每年举办的科大信息安全大赛,随真实需求不断进行技术迭代,并且重视生产环境下的安全性和可靠性。目前使用的是 Django + Vue.js 框架,但前后端解耦仍然不够充分,代码中写死了一些不合理的规则,很多地方缺少通用性和灵活性,测试和部署也不够方便。本项目希望能通过调整架构设计,重构部分代码,得到一个更加通用、健壮的比赛平台,让将来比赛中的实际需求更容易实现。

项目难度:

项目社区导师:王子博

导师联系方式:[email protected]

合作导师联系方式(选填):暂无。

项目产出要求:以下要求不需要全部达到,选择感兴趣的方向即可

项目技术要求:

相关的开源软件仓库列表:

License: MIT

镜像站单副本对象存储

项目描述:

传统文件系统(如 XFS)、ZFS、RAID 等解决方案对于镜像站的负载类型来说并不高效:首先在用户读取文件时,RAID 会带来读取放大,在用户读取小文件时影响尤甚;其次文件系统的元数据无法确保一直缓存于内存中,从而使列目录等操作容易成为性能瓶颈。

而使用单副本的对象存储可以解决以上的两个问题:由于镜像站的数据更像是缓存,允许丢失,因此可以采用单副本的方式存储,免去冗余保护。坏盘后只需更新元数据删除对应的文件,触发增量同步即可;而关于元数据,在对象存储的实现中,大多使用数据库存放元数据,而数据库性能调优有许多成熟的工具和经验。这对元数据访问优化是比较有利的。

本项目的难点在于:对象存储的实现需要考虑坏盘更新元数据,删除对应文件,平滑过渡、平衡各个磁盘的读负载,避免负载集中在同一块磁盘上,以及使用 SSD 加速读取请求。目前开源的对象存储实现(如 OpenIO 和 minio)都无法很好满足需求;另外,下游的 rsync 同步会带来较高的并发量,fuse 可能会带来性能问题。

在工业界中,CDN 缓存的需求(数据可靠性不敏感、数据量大、吞吐量高)与本项目希望解决的问题也是类似的。

项目难度:

项目社区导师:高一凡

导师联系方式:[email protected]

合作导师联系方式(选填):暂无。

项目产出要求:

项目技术要求:

相关的开源软件仓库列表:

License: 与指定修改的开源对象存储实现相同。

rsync 反向代理

项目描述:

镜像站通常会借助 rsync 协议,在上下游之间同步数据。在实践中,我们遇到的问题是:当有两台服务器分别存储不同的镜像内容(例如,一台存储热门内容,另一台存储冷门镜像),对外提供 rsync 服务时, 接入点无法统一。

本项目希望以反向代理 rsync 服务的方式解决此问题。 即:所有 rsync 请求通过一台统一的反向代理服务器,根据请求的 module name 代理至不同后端服务器。

项目难度:

项目社区导师:高一凡

导师联系方式:[email protected]

合作导师联系方式(选填):暂无。

项目产出要求:

项目技术要求:

相关的开源软件仓库列表:

License: 自定,OSI 组织认证的开源协议即可。注意:如果计划在完成项目时使用 rsync 的源代码,则协议需要使用 GNU GPLv3