别害怕;当你读完这篇文章时,你就会理解它的标题。
理解空间
几何学和拓扑学是数学的一个领域,它处理空间,通常是拓扑空间,以及你可以在其上定义的各种附加结构。
你如何将一组元素变成一个列表?“你可以使用 list() 函数!”我的 Python 朋友们会说。但本质上,你添加了一个序的概念。你取这个集合,并解释该集合中的哪个点是下一个。同样,空间是元素的集合,具有这些附加概念
数学中有很多类型的空间,从众所周知的欧几里得空间到不太为人所知但同样常见的微分流形,一直到最近发明的奇异结构。该领域的研究围绕着寻找不同结构之间的关系,并确定它们是否定义了相同的基本对象。
例如,很容易证明度量空间始终是拓扑空间。但要证明存在无法用距离表示的拓扑空间则有点困难。
然而,对于周末休闲拓扑学家来说,我推荐二维曲面,例如,古老的球体、环面或莫比乌斯带。不像欧几里得平面那样方正和平坦,但仍然易于管理。而二维紧流形的分类理论非常有趣。
覆盖空间
拿起弹簧线圈,从顶部看它。你会看到一个圆圈。

(Aleksandra Fedorova,CC BY-SA 4.0)
用数学语言表达这个事实,你会说线圈本身是全空间。在这种情况下,它本身只是一条一维线。它由各种组件组成
- 你看到的圆圈是底空间。
- 视线定义了覆盖映射。
- 如果你有激光瞄准器,激光切割线圈的点将被称为纤维。
总而言之,全空间、底空间和覆盖映射定义了覆盖空间或圆的覆盖,其纤维是离散的线。
家庭作业:圆可以覆盖线吗?
覆盖空间的关键特性,使其与任何投影不同的是,全空间中每个纤维点的邻域的工作方式与其在底空间中的投影的邻域非常相似。这使您可以使用底空间的预先存在的知识来推理全空间的特定属性,反之亦然。
数学家就是喜欢以这种方式在空间之间移动。一旦你在当前研究的空间中遇到某个障碍,你就会巧妙地将空间映射到熟悉的领域。你在那里证明一些东西,然后将结果转移回原始空间,在那里它可以带来新的和令人兴奋的突破。
路径提升属性
这一切与上游优先有什么关系?你可能会问。(我们仍处于为该理论开发适当的数学工具的早期阶段。欢迎在下面的评论部分添加您的建议和更正。)
看看代码是如何交付到企业级 Linux 发行版的,例如CentOS Stream。有一个开源项目和社区,他们开发特定版本的软件,例如 Firefox。我们称这样的项目为上游。一旦上游项目发布 Firefox 版本,它就会被打包到 Fedora。然后有一天,新的 CentOS Stream 版本使用 Fedora 包的内容进行引导,其中包含来自上游项目的特定版本的 Firefox。
当上游项目发布 Firefox 的关键更新时,该更新会在 Fedora 中打包和发布。但它也会通过 CentOS Stream 打包和发布。
FOSS 空间
考虑所有上游项目、Fedora 和 CentOS Stream 的所有补丁的集合。显然*,这是一个拓扑空间,其中 Git 历史记录定义了补丁的邻域。
(*)有时数学家使用显然这个词来掩盖他们无法真正详细解释这个概念的事实。
这个空间不容易掌握,虽然你可以用路径连接一些点,但其全局属性仍有待探索。
覆盖映射
在 FOSS 空间中获取任何提交,并将其映射到 CentOS Stream 中的提交,该提交实现了相同的功能或修复了相同的问题。对于 CentOS Stream 中的常规提交,该映射是微不足道的。对于任何上游更改或 Fedora 中的更改,该映射都指向其下游版本。因此,FOSS 空间可以表示为以 CentOS Stream 为底空间的覆盖空间。
提升路径
路径提升属性告诉你,对于底空间中的每条路径(CentOS Stream 中的更改),都应该在层中存在一条提升路径(Fedora 和上游项目中的更改,映射到它)。换句话说,它代表相同的错误修复。
而上游优先原则告诉你要构建该路径。
总结
将数学概念应用于 FOSS 部署,为理解开源软件的相互关联性提供了新的有趣方法。我希望这篇深入探讨空间和上游优先原则的文章对您有所启发且有趣。
2 条评论