Используя Ubuntu в качестве примера.
Ubuntu - это дистрибутив, который объединяет множество программ, маленьких и больших. Среди прочих графические драйверы, X-сервер и Gnome. Сама Ubuntu не разрабатывает эти программы. Ubuntu «просто» упаковывает программное обеспечение вместе, обеспечивая совместную работу отдельных компонентов. Все то программное обеспечение, которое Ubuntu собирает вместе, называется восходящим с точки зрения Ubuntu.
В процессе объединения всего этого программного обеспечения могут появляться ошибки. Ошибка может быть в одном из компонентов программного обеспечения, например, в gnome, или в особом способе Ubuntu. В конце концов, дистрибутив - это дистрибутив, потому что он делает некоторые вещи по-своему.
Если ошибка вызвана тем, как Ubuntu делает что-то, то Ubuntu придется исправить эту ошибку для себя. Если ошибка действительно присутствует в одном из компонентов программного обеспечения, например, в Gnome, то Ubuntu придется исправлять Gnome. Когда Ubuntu отправляет патч обратно в Gnome, чтобы другие также могли воспользоваться патчем, тогда Ubuntu отправляет этот патч в восходящем направлении .
Если Ubuntu решает не отправлять это исправление в восходящем направлении, или вышестоящий проект отклоняет исправление (но Ubuntu решает сохранить исправление), то Ubuntu технически разветвил проект.
Противоположность вверх по течению будет вниз по течению, Ubuntu находится ниже по течению от Gnome. Я не слышу / не читаю этот термин, используемый часто.
Смотрите также статью об апстриме в Википедии.