提示:正在更新 MariaDB 下载

是时候更新 downloads.mariadb.org 了!我们正在启动一个长期项目。我们的大部分用户主要通过下载新版本与我们互动。对于这部分用户群来说,更新 MariaDB 下载是 2020 年所有项目中影响最大的一个。
像这样的项目通常在外部和内部驱动力一致时启动。我们的用户要求获得更一致、更简单的用户体验。高级用户希望获得部分功能的编程接口(即 REST API)。并且当前的 codebase(代码库)需要重构,因为它已经超出了最佳使用期限。
我们有一个关于做什么以及如何做的计划。但我们不认为我们对用户需求的了解是完美的。因此,在开始编写代码之前,我们希望给所有人提供提供输入的机遇。注意:我们承诺倾听,但不承诺实现所有愿望。
现状:新的 MariaDB 版本如今是如何发布的
请允许我做一次技术性的岔开话题。对于大多数 MariaDB 用户来说,这只是为了满足您的好奇心。如果您对“这对 MariaDB 用户有什么益处”感兴趣,请跳至“改进用户体验”。
好的,言归正传:目前,MariaDB 下载页面基于 Python 对 Django 代码的补充,这些 Django 代码来自很久以前,当时提供下载的实体还叫做 Monty Program Ab。我们认为,大约 15% 的 Python 代码仍然相关且可用,而 85% 的代码与下载之外的其他方面有关。
我们的意图是将“收获的”可重用代码作为新代码以开源形式放到 Github 上。并非有意将其做成一个产品,但我们相信开放性。随着我们开发,发布代码似乎是自然而然的事情。我们的开发任务也将在 Jira 上以 MFDL(MariaDB Foundation Downloads 的缩写)公开可用。
从架构上看,Github 会通知当前的持续集成系统,它被亲切地称为“老”Buildbot。从那里,构建好的包被上传到归档站点。该站点上的许多版本通过最终提交的唯一 ID 来标识。昵称:提交哈希(commit hash)。发布后,相应的二进制文件被上传到主镜像,所有次级镜像都从主镜像获取。出于历史原因,主要的 MariaDB 镜像由俄勒冈州立大学的开源实验室托管,网址是http://ftp-osl.osuosl.org。我们感谢他们的工作和努力。
downloads.mariadb.org 所使用的元数据包含在用于部署的 Python Pickle 中。一旦下载传播到次级镜像,此 pickle 就会被上传到下载站点。最后,可以发送发布通知,一个新的 MariaDB 版本就此问世。
内部困境:我们在幕后如何煎熬
重构旧代码是程序员最喜欢的消遣方式。从 Henrik Ingo 精彩的 Drizzle 悼词 https://openlife.cc/blogs/2019/december/lets-rewrite-everything-scratch-drizzle-eulogy (关于 MySQL 的一个功能精简的分支) 中,我们知道重构的原因通常不是以用户为中心的。尽管如此,我们确实在忍受代码仍然停留在 Python 2。Python Software Foundation 早就宣布了 Python 2 的生命周期结束 (EOL),而现在,甚至声明的 2020 年 1 月 1 日日期也已过去。我们依赖于一些不再维护的第三方插件以及旧的 SSL 版本。再加上缺乏测试框架以及多年来从旧系统迁移到新功能产生的大量死代码,您就会理解我们重构的愿望了。
改进用户体验:一致性,更少点击
使用户界面与网站其余部分的观感一致也许可以称之为“可用性重构”,而这一点绝对符合用户群体的利益。但这不仅仅是让现有功能更加一致。
最重要的是,我们希望检测您的操作系统,以便主要向您提供您正在下载的操作系统版本的下载包。目标是优化普通用户的流程。选择产品,最多点击一次下一步(例如选择版本),然后下载应该就开始了。
目前,用户面临的选择令人应接不暇。我们计划在页面上提供一个指南,以帮助选择正确的下载。我们经常被问到的问题包括“什么是调试符号”、“msi vs zip”、“什么是 glibc 以及我有什么版本”、“我需要 systemd 版本吗”、“何时使用仓库 vs 二进制文件”以及“我是从这里下载包还是使用仓库配置工具”。我们打算尽可能地简化。
我们还将努力使提供的默认镜像更加合理。
我们在这一方面的榜样是那些常见的对象:MySQL、Postgres、MongoDB,以及 Ubuntu 和 Fedora 的可启动磁盘镜像。
顺便说一句,我们还被要求对整体下载体验进行其他改进。虽然这些不属于下载网站更新本身的一部分,但它们确实在我们的视野中。
一个强烈的愿望,我自己也赞同,就是我们能直接提供可下载的 OSX .dmg 文件。
说到为其他操作系统打包:MDEV-21432 要求提供可下载的 ARM 包。已适当记录。
另一个合理的要求是提供最小可行下载(Minimum Viable Downloads,如果您愿意,可以称之为 MVD),即 50 MB 或更小。这是为了低带宽情况,或极简主义的虚拟机/容器。并且它节省了每个人的硬盘空间,包括所有镜像。
显然,一个大的软件包会减慢 Docker 容器的速度,并使其难以使用。如果包含调试服务器和测试套件,今天包含二进制文件的最小 MariaDB 软件包大约是 900 MB。源码 tarball 小得多并没有多大帮助,因为在笔记本电脑 CPU 上构建源码 tarball 需要 20 分钟。鉴于 Debian 软件包要小得多,我们确实看到了“亲爱的,我把软件包缩小了”的必要性。我们正在探索的一件事是使用 xz 而不是 gzip,xz 可以提供更好的压缩(在解压缩时会增加一些 CPU 成本,但这可以接受)。欢迎提供意见!
改进高级用户体验:REST API
专家用户告诉我们,我们的网站没有像其他网站那样提供相同的功能。Giuseppe Maxia(顺便说一下,他在阐明上述 MVD 需求方面也很出色)指出了需要一种可编程的方式来开始下载,即使像网站提供可复制粘贴的链接那样简单。使用 wget,您期望获得一个 tarball,但目前我们提供给您的是一个 index.html 文件。Giuseppe 补充说,其他下载站点很久以前就解决了这个令人烦恼的问题。
我们的计划是让 REST API 不仅仅提供可复制粘贴的 URL。我们将添加带有 JSON 响应的端点,并向外部用户公开:
- 可用“产品”列表
- 每个产品的可用版本列表
- 产品的最新版本
- 每个产品的可用架构、操作系统、文件类型列表
- 二进制文件的可用镜像列表
- 获取二进制文件(Giuseppe 你好!)
- 获取二进制文件的签名
- 每个产品一个 URL,包含最新版本(类似于 WordPress),也许可以分为最新稳定版和最新开发版
这显然不是什么高科技,只是现代下载站点应有的功能。
一句话总结:让下载变得简单!
我们想让下载 MariaDB 变得简单。只需点击几下,您就能获得您的软件包。这就是我们的计划。
如果您有额外的需求或建议,请联系我们:foundation@mariadb.org!