What is upstream and downstream?
Contents
What is upstream and downstream?¶
Upstream:¶
Within information technology, the term upstream refers to the flow of data.
An upstream in open source is the source repository and project where contributions happen and releases are made.
When talking about an upstream, it’s usually the precursor to other projects and products.
One of the best-known examples is the Linux kernel, which is an upstream project for many Linux distributions.
Distributors like Red Hat take the unmodified (often referred to as “vanilla”) kernel source and then add patches, add an opinionated configuration, and build the kernel with the options they want to offer their users.
In some cases, a project or product might have more than one upstream.
Red Hat Enterprise Linux (RHEL) releases are based on Fedora Linux releases.
The Fedora Project, in turn, pulls from many upstream projects to create Fedora Linux, like the Linux kernel, GNOME, systemd, Podman, various GNU utilities and projects, the Wayland and X.org display servers, and many more.
From upstream projects to downstream products:¶
Much of the time, users don’t want to get code directly from the upstream.
Organizations generally don’t want to, they want to rely on certified products that they can vet for their environment and get support for.
This is why enterprise open source exists. Users and organizations count on vendors to turn upstreams into coherent downstream products that meet their needs.
In turn, vendors like Red Hat learn from customer requests and feedback about what features they need and want. -
That, then, benefits the upstream project in the form of new features and bugfixes, etc., and ultimately finds its way into products and the cycle continues.