Usando Ubuntu come esempio.
Ubuntu è una distribuzione che riunisce molti software insieme, piccoli e grandi. Ci sono driver grafici, il server X e Gnome, tra gli altri. Ubuntu stesso non sta sviluppando quel software. Ubuntu sta "solo" mettendo insieme il software, assicurandosi che i singoli componenti funzionino insieme. Tutto quel software che Ubuntu sta mettendo insieme è chiamato upstream dal punto di vista di Ubuntu.
Nel processo di combinazione di tutto quel software insieme potrebbero apparire dei bug. Il bug potrebbe essere in uno dei componenti del software, ad esempio gnome, oppure potrebbe essere nel modo molto speciale in cui Ubuntu sta facendo le cose. Dopotutto, una distribuzione è una distribuzione perché fa alcune cose nel suo modo molto speciale.
Se il bug è causato dal modo in cui Ubuntu sta facendo le cose, allora Ubuntu dovrà risolvere quel bug da solo. Se il bug si trova in effetti in uno dei componenti software, ad esempio Gnome, Ubuntu dovrà correggere Gnome. Quando Ubuntu rinvia la patch a Gnome, così anche altri possono trarre vantaggio dalla patch, quindi Ubuntu sta inviando quella patch a monte .
Se Ubuntu decide di non inviare quella patch a monte, o se il progetto upstream rifiuta la patch (ma ubuntu decide di mantenere ancora la patch), Ubuntu ha tecnicamente biforcuto il progetto.
L'opposto dell'upstream sarebbe a valle, Ubuntu è a valle di Gnome. Non sento / leggo quel termine usato spesso.
Vedi anche l' articolo sull'upstream in Wikipedia.