Answers:
上游是指正在讨论的组件的始发者。
例如,如果您编写了一个基于libtransmission的torrent客户端,则在您的客户端中会发现一个错误,该错误可以追溯到libtransmission。该错误已通过客户端中随附的补丁修复。
在这种情况下,在上游合并补丁意味着将补丁发送给libtransmission的作者以包括在内。这样,该修补程序将传播到基于libtransmission的每个项目。
上游合并的替代方法是自己保留补丁。
以Ubuntu为例。
Ubuntu是一个发行版,其中包含各种大小的软件。其中包括图形驱动程序,X服务器和Gnome。Ubuntu本身并未开发这些软件。Ubuntu“只是”将软件打包在一起,以确保各个组件可以协同工作。从Ubuntu的角度来看,Ubuntu打包在一起的所有软件都称为上游。
在将所有这些软件组合在一起的过程中,可能会弹出错误。该错误可能存在于软件组件之一(例如gnome)中,也可能是以Ubuntu执行工作的非常特殊的方式。毕竟,发行版是一种发行版,因为它以自己的非常特殊的方式执行某些操作。
如果该错误是由Ubuntu的运行方式引起的,则Ubuntu将必须自行修复该错误。如果错误确实存在于软件组件之一(例如Gnome)中,则Ubuntu将必须修补Gnome。当Ubuntu将修补程序发送回Gnome时,其他人也可以从该修补程序中受益,然后Ubuntu将该修补程序发送到上游。
如果Ubuntu决定不向上游发送该补丁,或者上游项目拒绝该补丁(但ubuntu决定仍然保留该补丁),则Ubuntu在技术上已经分叉了该项目。
上游的反面是下游,而Ubuntu则是Gnome的下游。我没有听到/读过经常使用的术语。