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