什么是“上游”?

n0p*_*0pe 29 linux development

我总是听到人们说在设计软件等时最好“合并上游”之类的东西。我有一种感觉,这与主流的 linux 内核有关,但我可能错了。

而且,什么是“上游”的反义词。如果“上游”不好,还有什么选择,为什么?

plc*_*lco 34

上游是指正在讨论的组件的发起者。

例如,如果您编写了一个基于 libtransmission 的 torrent 客户端,那么在您的客户端中会发现一个错误,该错误会追溯到 libtransmission。该错误已通过补丁修复,该补丁现在包含在您的客户端中。

在这种情况下合并上游补丁意味着将补丁发送给 libtransmission 的作者以供包含。这样,修复程序将传播到基于 libtransmission 的每个项目。

合并上游的另一种方法是为自己保留补丁。

  • 合并上游是您可以使用开源软件完成的事情,因为您可以访问源代码,并且可以自己查找和修复错误。在封闭源代码中,大多数方没有这样的访问权限(尽管在某些情况下许可证可能包含它),因此他们仅限于报告错误和/或寻找解决方法。上游是指开发软件的多层方法,也适用于改进,而不仅仅是错误修复。 (4认同)

les*_*ana 22

以 Ubuntu 为例。

Ubuntu 是一个将许多软件打包在一起的发行版,大小不一。有图形驱动程序、X 服务器和 Gnome 等。Ubuntu 本身并没有开发这些软件。Ubuntu“只是”将软件打包在一起,确保各个组件协同工作。从 Ubuntu 的角度来看,Ubuntu 打包在一起的所有软件都称为上游

在将所有软件组合在一起的过程中,可能会出现错误。该错误可能存在于某个软件组件中,例如 gnome,也可能存在于 Ubuntu 的一种非常特殊的处理方式中。毕竟,发行版是发行版,因为它以自己非常特殊的方式做一些事情。

如果该错误是由 Ubuntu 的工作方式引起的,那么 Ubuntu 将不得不自行修复该错误。如果错误实际上是在软件组件之一中,例如 Gnome,则 Ubuntu 将不得不修补 Gnome。当 Ubuntu 将补丁发送回 Gnome 时,其他人也可以从补丁中受益,然后 Ubuntu 会将该补丁发送到上游

如果 Ubuntu 决定不向上游发送该补丁,或者上游项目拒绝该补丁(但 ubuntu 决定仍然保留该补丁),那么 Ubuntu 在技术上已经分叉了该项目。

上游的反面是下游,Ubuntu 是 Gnome 的下游。我没有听到/读到这个经常使用的术语。

另请参阅维基百科中有关上游文章