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.