AOSC Wiki / 社区 / 开源软件供应链点亮计划 / .

开源软件供应链点亮计划暑期 2020 项目

欢迎!以下是 AOSC 提供的可供参与的项目主题。您可以从中挑选并联系项目导师,也可以在社区 IRC、Telegram 群组或邮件列表(随意)中和我们讨论您感兴趣的话题。

请先仔细阅读学生指南

发行版构建自动化:打包调度器

社区主要项目 AOSC OS 的一部分构建过程仍然依赖手工操作。即使大部分繁杂的工作已经能为数个社区项目很好地完成,AOSC OS 仍然面临着社区人手严重不足而带来的更新速度不足及潜在质量缺陷问题。于是我们希望建立一套切合社区实际情况的,能将发行版构建 95% 的操作自动化的基础设施来解决上述问题,以求 AOSC OS 的可持续发展。

目前分布式打包方案中包括构建机、调度器、软件包仓库管理和触发器四个部分,其中构建机和调度器是最重要的部分。本项目为编写一套功能较为完整的软件包构建调度器,以实现像 BOINC 分布式科学计算那样,自动分配打包任务、回收二进制软件包和打包时的日志和统计信息。调度器的调度模型、依赖解析已经实现,需要设计并实现的是接口和管理功能。

发行版构建自动化:自动化测试框架

目前 AOSC 的软件包存在一定的质量问题,且已经有了初步的排查方案。我们希望在编译时或编译后主动地将质量问题检测出来,停止编译和发布。本项目需要在当前的打包流程中增加测试环节来确保软件包的质量。

安装程序 DeployKit 的实现

社区项目 DeployKit 是未来 AOSC OS 的安装和恢复程序。该程序有两种模式:

  1. 作为安装向导指引用户正确地安装 AOSC OS;
  2. 作为恢复向导指引用户在轻微的系统配置错误中恢复系统;

目前,DeployKit 使用 GTK 3 和 Vala 编程语言基本实现了安装向导的图形用户界面,但尚未实现安装向导的实际操作部分(即 DeployKit 还只是个“空壳”)。本项目的目标是按照社区提供的 AOSC OS 安装指引,将这部分原本需要手动操作的安装流程实现到 DeployKit 上。

自由及开源软件简中本地化工作

当前我国国内有相当数量的 Linux 及各大开源或自由软件 (F/OSS) 使用者,但在使用过程中,用户们不难发现,各种软件的简中翻译及本地化质量参差不齐,错漏繁多。尤其主流桌面环境如 GNOME 及 KDE 简中翻译率并不理想;而又有一些如 NetSurf 的知名开源项目则完全没有翻译。该项目的主要目的是改善当前本地化质量及覆盖率。

为 libinput 框架实现“划圈滚动 (Circular Scrolling)”

在 Wayland 及如 GNOME 等现代桌面的推动作用下,libinput 即将取代当前诸多碎片化的 X11 输入驱动(如 evdevsynaptics,甚至是更老的 mousekeyboard),为用户及开发者带来一定便利。但在 libinput 的实现过程中,上游开发者由于人力有限,选择抛弃了一些他们主观认为不常见的硬件特性的支持。而被抛弃的特性之一是“划圈滚动”,即在触摸板上用手指划圈滚动(类似 iPod 的操作),这一特性在滚动长页面时可有效提高操作精度并降低疲劳。

半自动软件包退休、封存与整理系统

软件包更新在现代社会已经不再是什么稀奇事。每天,无数软件包获得更新,有些是修复漏洞,有些是增加功能,还有些是性能优化等等。然而,并不是每一个软件包都有充分通过回归测试(Regression test),而有些更新则是主动放弃对于旧硬体的支援。由于系统的软件包仓库亦为业余爱好者维护,打包者的技术、使用的平台与配置等等亦可能导致部分软件包更新后损坏。

作为一个由历史专家带领的专业考古社区,我们提供了大量的软件包供各种不同时代与架构的硬体使用。以往,为了保证大家可以方便的切换各个版本的软件包,大量的老包被留在了系统的软件源中。再加上 AOSC 支援的架构数量在某段时间的爆发,于 2017 年时,我们的软件包仓库达到了惊人的数十 GiB 。庞大的体积对于我们自身以及各种收录了我们的开源镜像站均造成了压力。我们因此启动了Anthon Optical Storage Center (AOSC Archive) 项目,将过去的软件包从软件源中移除并收录进入 Blu-ray Disc 进行冷储存。然而使用冷储存造成的不便亦是显而易见的。如果出于各种原因,我们需要取回一个软件包进行测试,那么将会需要比较费事的人工寻找目录并取回对应光盘。另外,冷储存的成本亦是比较高的。在近期的一次检查时,我们发现有约 1%-5% 的包可能由于各种原因,在收录进入 BD 时出现了重复收录的情况。这些重复收录的包既提高了维护成本,又不具有价值。同样,整理需要取回的软件包目前也是一个非常耗费人力的工作。每次退休包时,需要寻找每个架构中有收到更新的包,并移除老包。需要把这些包适当分类并分卷放好,以便于未来取回时不需要跨越多张光盘。这一个项目就是为了解决该问题而产生的。

我们希望这个系统:

另外,我们还希望这个系统可以快速提供一个「最小软件仓库」,仅包含最新版本的软件包,占用最少的空间。