Open Source Insider

Jul 6 2015   11:09AM GMT

What is upstream & downstream software?

Adrian Bridgwater Adrian Bridgwater Profile: Adrian Bridgwater

Open source
Red Hat

It’s a simple question, but one that we don’t ask out loud enough, perhaps?

What is upstream software?


This question came up during conversations with Red Hat’s Chris Wright, a Linux kernel developer and a principal software engineer with the company.

Of course, in non-tech business speak, upstream tends to refer to production processes that involves searching for (and extracting) raw materials — in software, this is not the case.

In software application development and programming, upstream refers to source code that has been posted/hosted into/onto the code repository.

Upstream code can be complete code blocks, or patches and/or bug fixes.

Shamefully, we find a good comment on Wikipedia here, “For example, a patch sent upstream is offered to the original authors or maintainers of the software. If accepted, the authors or maintainers will include the patch in their software, either immediately or in a future release. If rejected, the person who submitted the patch will have to maintain his or her own distribution of the author’s software.”

What is downstream?

Downstream, in contrast, is code that has been deployed – and so, with reference to the above quote, downstream may be diverging away as some forked tributary (Ed – nice, I see what you did there with the river analogy) which needs to be separately considered and maintained.

Augmentations that will be available for all coders should be performed on the upstream code, the water-source (Ed – nice, another one) if you like.

 Comment on this Post

There was an error processing your information. Please try again later.
Thanks. We'll let you know when a new response is added.
Send me notifications when other members comment.

Forgot Password

No problem! Submit your e-mail address below. We'll send you an e-mail containing your password.

Your password has been sent to:

Share this item with your network: