The upstream kernels (referred, when we provide them, as mainline kernels) are simply the upstream kernel for the specified version, with a very few minor configuration changes added so that there is minimal issue using them on an Ubuntu Install.
The difference between these kernels and the one released for an Ubuntu version are numerous other configuration changes, source patches* and, in some cases, compiled in modules and hardware support.
Very little of the underlying code is different from upstream other than that noted above.
*: source patches are, in most cases, changes to the default behavior of the kernel. These are not limited to: blacklists, video quirks tables, built in modules, source changes that are not yet in Linus' tree or the stable queue quite yet etc.
Source patches are what the team uses to introduce configuration options that are required to support the vast array of released software for a specific version of Ubuntu. In many cases they are necessary for those applications to work properly. The fundamental difference between this and the upstream kernel is that the pure upstream kernel is not distribution specific.
Therefore, the configurations are not geared toward ensuring that certain applications work as expected. These configs exist to provide that level of changeability to the kernel for specific things. Additionally, the use of quirks allows us to identify hardware that requires specific things from the kernel that we can set once we detect them.
This is one of the major features of Linux and it is one of the reasons we have been able to run on so many diverse platforms over the years. There are times when the quirks and source patches cause issues between each other. During these times, we work to mitigate the problems with changes to underlying kernel behavior. In many cases these changes don't make it upstream until after the release due in very large part to the need to properly code the fix, document what was done, test the changes and conduct various other tests and stress testing.
In these cases, patches that are headed for upstream are carried as source patches in much the same way pre-stable and patches that are not yet in Linus' tree do. The link to the delta review spec should serve as a reference for what was reviewed for the current Natty release of the Ubuntu kernel.
These packages do not contain actual software, they simply depend on other packages to be installed.
It is important to note that removing a meta package does NOT remove the packages it installed:
when a metapackage is automatically removed by the removal or purging of any one, or more, of its underlying dependencies, all of the other packages that were in the metapackage's depends list are still installed on the system.
You can look at the structure of a typical meta package by pulling (for example) ubuntu-desktop:
apt-get source ubuntu-desktop
and then looking at the structure, you'll find the list of packages each meta-package recommends, as well as the structure of putting it all together in debian/rules
.
References:
Best Answer
Think of it as a great river, with the people who write the software as the source of the river. They would be the upstream, futher downstream would be your distribution, and at the end of the river would be the user. Ubuntu is in the middle of the river.
Upstream would be the software that Ubuntu packages and ships to users. Things like GNOME, Firefox, X.org, the Linux kernel, and many more applications. This is the bulk of the things that are in the archive, as they represent a collection of upstream projects.
Ubuntu has one special upstream, Debian, which Ubuntu derives from. So, they are Ubuntu's upstream for many packages, though for some packages, like the kernel, Ubuntu packages directly from the upstream project, though for the majority of packages Debian is the upstream to Ubuntu, and the project that is packaged is upstream to Debian.
Downstreams of Ubuntu would be Ubuntu derived distributions, like Linux Mint.
Examples of usage of this term depends on the context. So for example if you have a bug with Firefox that Ubuntu didn't introduce then you might hear the term "Make sure you're reporting that bug upstream". The person means reporting the bug directly to Firefox in this case.
In the case of Ubuntu, getting the right feedback from users to the upstream developers is an important thing we do. Here are some links of what we do:
To better answer your question here are some examples of how someone would tell you to talk to an upstream: