2021 软件自由日中国科大站

2021 年 9 月 25 日,开源社区传统活动软件自由日(Software Freedom Day)于下午 2 点 30 分在西区 3C101 教室如期举行,本次活动我们邀请到来自 TUNA 的 Zenithal 同学,以及 18 级曹嘉琪、19 级蔡智臻同学为我们带来精彩的演讲。除此之外,在闪电演讲环节中 21 级新生袁宝杰、科大校友吴峰光、以及来自线上的 Zhou Zhiqiang 三位演讲者的精心准备也为我们带来意外惊喜。

得益于第二课堂系统以及社团游园会的宣传,本次活动在新生中的影响力空前,大量新生来到现场参与本次自由软件日活动。也许对于大部分新同学而言,演讲的内容对于他们是陌生的,也无法通过一次演讲对其主 题进行全面地了解和深入的理解,然而演讲的内容仍然可在记忆之中沉淀,形成对技术的认知。

3C101-满座

2 点 30 分,简短的活动引入环节扼要地介绍了今日的流程安排和演讲嘉宾后,软件自由日活动正式开始。

首先由蔡智臻同学为我们介绍堪称开源界明星的 wireguard 组件。只需寥寥几行配置,活动室的机器和演讲者的主机便处于同一局域网下,继承了 Unix 哲学一贯的简单优雅。随后,蔡智臻同学深入介绍了背后的逻辑——做为内核模块工作时,其将自身模拟为网络设备,复用系统的 TCP/IP 路由表实现网络的通信与中继。在享受嵌入内核模块获得极致的速度提升的同时充分利用了利用已有的路由配置规则,降低了维护者学习记忆的成本,与配置复杂的 IPsec 以及在用户态与内核态往复横跳的 OpenVPN 相比在实际应用层面上高下立判。其实这一思想正是著名的“一切皆文件”观点的延续,也由此获得了 Linus 的共鸣 —— “state my love”

WireGuard 介绍

了解完网络建构工具,来自 TUNA 协会的 Zenithal 同学为我们带来镜像站联盟计划 —— MirrorZ 项目。Z 同学从镜像站的维护切入主题,先行分享自己的镜像维护历程,让未能经历的同学们一窥镜像维护的琐事。而正是在维护镜像的过程中,Z 同学既看到各大高校镜像站的蓬勃发展,也注意到终端用户存在着信息获取困难,镜像选择不便等问题,以此出发发起 MirrorZ 项目,并获得各大高校镜像站的响应。总而言之,该项目意在完成镜像站之间的信息整合与接口统一工作,并实现自动择优机制。各大镜像站将镜像状态信息推送至 MirrorZ 前端,实现信息的统一呈现。而镜像站针对拉取镜像请求,根据用户的意愿,基于镜像站评分为用户自动跳转至最优镜像,以获得最快的镜像下载速度。和大多数开源软件一样,MirrorZ 受使用过程中的不便性启发,以开源协作的模式解决问题,这样一个开源项目的动机与组织形式,值得开源社区的所有同仁借鉴。

MirrorZ

身在科大,自然当对学术上开源软件留心。曹嘉琪同学为我们带来科学计算软件 Maxima 的介绍与基本操作。Maxima 源自于 Macsyma,被 Maple 及 Mathematica 等计算机代数系统所借鉴。在日常计算任务中可以一定程度上替代商业软件 Mathematica。在图形界面 wxMaxima 的帮助下,曹嘉琪同学通过逐条演示的方式,为我们详细介绍了常用的 Maxima 的常用功能 —— 符号计算、数值求解、求导积分、作图 ······ 所见即所得,更直观地让听众了解到 Maxima 的语言风格与使用效果。

三场演讲结束,欣赏之余未免有些疲倦。正值茶歇,同学们陆续前来领取水和零食。由于错误地预估了参与的人数,零食很快被瓜分完毕。按照往年惯例,现场提供了印有开源软件 logo 的贴纸,做为对自由软件的宣传。贴纸上的符号是开源文化的一部分,而使用贴纸往往可以增强对开源文化的归属感。无论是因为熟悉还是因为好奇,lug 新做的贴纸成功地吸引了一部分同学的注意,前来领取贴纸贴在笔记本上。闪电演讲的名单上多出了一位 21 级的同学袁保杰,想对他所熟悉的开源终端 ConEmu 做一番推荐;一位科大校友,lug 的老社员吴峰光也参与进来,希望向观众介绍 Nix 包管理器;线上的 Zhou Zhiqiang 也提前报名,将为我们带来混沌工程概念,SFD 的下半场,足以令人拭目以待。

SFD 进入到下半场,首先由袁保杰同学介绍 Windows 平台可定制化终端 ConEmu,其提供了终端背景定制,多窗口,并集成了文件管理器等其他组件,可以在一定程度上缓解 Windows 自带终端对双眼造成的不适。其易于上手的特性对于新人来说更加友好。

一味小菜过后,吴峰光校友为我们带来 Nix —— 一个包管理器,或者一种依赖管理思想,该思想正是 “share everything” 和 “share nothing” 的折衷,即 “share when possible”。Nix 完全按照版本依赖要求安装被依赖方的对应版本,将不同版本的软件视为不同的软件,以哈希值决定不同版本的访问路径。这意味着其以完全违反 Linux 所规定的目录结构为代价,获得软件包依赖的绝对正确。理解了其基本思想后,演讲者顺势引入 Nix 语言与 Nix 包配置格式,Nix 的包管理方式由此展现出一个巨大的优势,即在 Nix 包管理系统下,可以让一个系统整体对应唯一的配置文件,环境的复现将通过该统一配置文件的迁移实现。正如刘紫檀同学在讨论过程中所说,Nix 与 Docker 的目标是一致的,该配置文件扮演 dockerfile 的角色。随后是对 Nix 应用的介绍:通过使用 NixOS,所有软件及内核均在 Nix 版本控制之下,可以用于嵌入式、云端部署领域批量化部署等应用场景。虽然 Nix 仍然是一个新兴技术,其由于文档稀少、社区小众造成的入门困难一定程度上限制了其普及速度,其镜像的庞大复杂也为镜像站提供服务造成困难,但 Nix 的未来仍然值得期待。

最后,Zhou Zhiqiang 通过线上会议的方式加入现场,为我们带来“混沌工程”这样一个较为陌生的话题。根据演讲者的介绍,所谓混沌工程,即是在实验环境中加入各种具有破坏性的运行干扰,如以一定频率加入延时,篡改目录,假报硬盘故障,切断网络,乃至从集群中离线单节点等,构造一个“稳定产生不稳定因素”的系统。演讲者以 chaos mesh 平台为例,从平台的架构解析混沌系统的一种实现方式,又以一个简单的混沌实验,展示了实验过程中设置的主要参数。随后,演讲者选取了文件系统错误注入,细致地讨论了如何通过 hook 系统调用,随机性篡改函数参数并将错误原封返回,达到模拟错误的目的。混沌系统可以为开源软件的安全性、稳定性提供可行的基准测试方案,为确保开源软件的质量做出贡献。

由于时间原因,两位本来报名了闪电演讲的同学未能演讲,着实遗憾。但分享自由的时光总是短暂,同学们陆续扫码签退,离开会场。原定的聚餐环节由于第二天将有更多 lug 老成员前来临时更改了日期,所以做完善后工作后,几位熟悉的同学在食堂相聚,为今年的 SFD 做上小结。

分类:

更新时间: