Was ist "Upstream"?

27

Ich höre immer Leute, die sagen, es sei besser, Upstreams zusammenzuführen, und ähnliches, wenn es um das Entwerfen von Software und dergleichen geht. Ich habe das Gefühl, es hat mit dem Mainstream-Kernel zu tun, aber ich liege wahrscheinlich falsch.

Und was ist das Gegenteil von "Upstream". Wenn es nicht gut ist, "upstream" zu gehen, was ist die Alternative und warum?

n0pe
quelle

Antworten:

33

Upstream bezieht sich auf den Urheber der Komponente, die diskutiert wird.

Wenn Sie beispielsweise einen Torrent-Client geschrieben haben, der auf libtransmission basiert, wurde in Ihrem Client ein Fehler gefunden, der auf libtransmission zurückgeführt wird. Der Fehler wurde mit einem Patch behoben, der jetzt in Ihrem Client enthalten ist.

Das Zusammenführen des Patches in diesem Kontext bedeutet, dass der Patch zur Aufnahme an die Autoren von libtransmission gesendet wird. Auf diese Weise würde der Fix auf jedes Projekt übertragen, das auf libtransmission basiert.

Die Alternative zum Zusammenführen von Upstreams besteht darin, den Patch selbst zu behalten.

plco
quelle
Das Zusammenführen von Upstreams gehört also zur Open-Source-Mentalität? Ein Fix für mehrere Software-Teile?
Nr.
4
Das Zusammenführen von Upstreams kann mit Open Source-Software erfolgen, da Sie Zugriff auf die Quelle haben und Fehler selbst finden und beheben können. In geschlossenen Quellen haben die meisten Parteien keinen solchen Zugriff (obwohl dies in manchen Situationen in der Lizenz enthalten sein kann), so dass sie sich darauf beschränken, den Fehler zu melden und / oder Problemumgehungen zu finden. Upstream bezieht sich auf einen mehrschichtigen Ansatz zur Entwicklung von Software und bezieht sich auch auf Verbesserungen, nicht nur auf Bugfixes.
plco
Anders ausgedrückt: "Upstream" bedeutet "von wem Sie die Quelle erhalten haben"; Außerhalb der Open Source-Welt gibt es keinen Upstream, da Sie die Quelle überhaupt nicht erhalten haben. =)
Rakslice
21

Am Beispiel von Ubuntu.

Ubuntu ist eine Distribution, die viele kleine und große Softwarepakete zusammenbringt. Es gibt unter anderem Grafiktreiber, den X-Server und Gnome. Ubuntu selbst entwickelt diese Software nicht. Ubuntu packt "nur" die Software zusammen und sorgt dafür, dass die einzelnen Komponenten zusammenarbeiten. Die gesamte Software, die Ubuntu zusammenpackt, wird aus Sicht von Ubuntu als Upstream bezeichnet .

Während des Kombinierens all dieser Software können Fehler auftauchen. Der Fehler könnte in einer der Software-Komponenten liegen, zum Beispiel in gnome, oder in einer ganz besonderen Art und Weise, wie Ubuntu Dinge tut. Schließlich ist eine Distribution eine Distribution, weil sie einige Dinge auf ihre ganz besondere Art und Weise ausführt.

Wenn der Fehler durch die Art und Weise verursacht wird, wie Ubuntu Dinge tut, muss Ubuntu diesen Fehler für sich selbst beheben. Wenn der Fehler tatsächlich in einer der Softwarekomponenten, zum Beispiel Gnome, liegt, muss Ubuntu Gnome patchen. Wenn Ubuntu den Patch an Gnome zurücksendet, damit auch andere von dem Patch profitieren können, sendet Ubuntu diesen Patch aufwärts .

Wenn Ubuntu beschließt, diesen Patch nicht als Upstream zu senden, oder das Upstream-Projekt den Patch ablehnt (Ubuntu jedoch beschließt, den Patch weiterhin zu behalten), hat Ubuntu das Projekt technisch gegabelt .

Das Gegenteil von Upstream wäre Downstream, Ubuntu ist Downstream von Gnome. Ich höre / lese diesen oft verwendeten Begriff nicht.

Siehe auch den Artikel über Upstream in Wikipedia.

Lesmana
quelle