Utiliser Ubuntu comme exemple.
Ubuntu est une distribution qui regroupe de nombreux logiciels ensemble, petits et grands. Il existe des pilotes graphiques, le serveur X et Gnome, entre autres. Ubuntu lui-même ne développe pas ces logiciels. Ubuntu rassemble «simplement» le logiciel, en s'assurant que les composants individuels fonctionnent ensemble. Tous les logiciels qu'Ubuntu assemble sont appelés en amont du point de vue d'Ubuntu.
Dans le processus de combinaison de tous ces logiciels, des bugs peuvent apparaître. Le bogue peut être dans l'un des composants logiciels, par exemple gnome, ou il peut être lié à la manière très particulière dont Ubuntu fait les choses. Après tout, une distribution est une distribution parce qu'elle fait certaines choses à sa manière très spéciale.
Si le bogue est causé par la façon dont Ubuntu fait les choses, alors Ubuntu devra le corriger lui-même. Si le bogue se trouve en fait dans l'un des composants logiciels, par exemple Gnome, alors Ubuntu devra patcher Gnome. Lorsque Ubuntu renvoie le correctif à Gnome, afin que d'autres puissent également bénéficier du correctif, Ubuntu envoie ce correctif en amont .
Si Ubuntu décide de ne pas envoyer ce correctif en amont, ou si le projet en amont rejette le correctif (mais ubuntu décide de conserver le correctif), Ubuntu a techniquement bifurqué le projet.
L'opposé de l'amont serait en aval, Ubuntu est en aval de Gnome. Je n'entends pas / ne lis pas ce terme souvent utilisé.
Voir aussi l' article sur l'amont dans Wikipedia.