什么是“上游”?


27

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

而且,“上游”的反面是什么。如果“上游”不好,那有什么选择,为什么呢?

Answers:


33

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

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

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

上游合并的替代方法是自己保留补丁。


那么,将上游的一切与开放源代码的思想融为一体吗?一个修复几个软件?
n0pe 2011年

4
您可以使用开放源代码软件来进行上游合并,因为您可以访问源代码,并且可以自己查找和修复错误。在封闭源代码中,大多数参与方都没有这种访问权限(尽管在某些情况下许可证可能包括该访问权限),因此它们仅限于报告错误和/或找到解决方法。上游是指开发软件的多层方法,并且不仅适用于错误修正,还适用于改进。
plco 2011年

换句话说:“上游”是指“您是从谁那里得到的”;在开源世界之外,没有上游,因为您根本没有获得源。=)
rakslice 2012年

21

以Ubuntu为例。

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

在将所有这些软件组合在一起的过程中,可能会弹出错误。该错误可能存在于软件组件之一(例如gnome)中,也可能是以Ubuntu执行工作的非常特殊的方式。毕竟,发行版是一种发行版,因为它以自己的非常特殊的方式执行某些操作。

如果该错误是由Ubuntu的运行方式引起的,则Ubuntu将必须自行修复该错误。如果错误确实存在于软件组件之一(例如Gnome)中,则Ubuntu将必须修补Gnome。当Ubuntu将修补程序发送回Gnome时,其他人也可以从该修补程序中受益,然后Ubuntu将该修补程序发送到上游

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

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

另请参阅有关 Wikipedia中上游文章

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.