What is the difference between Debian contrib & non-free and how do they correspond to Ubuntu repositories?

In a nutshell, these are what Ubuntu's archive divisions mean:

1) main: Free software, officially supported by Canonical

2) universe: Free software, NOT supported by Canonical

3) restricted: Non-free software officially supported by Canonical (includes device drivers mainly, amongst others)

4) multiverse: Non-free software NOT supported by Canonical (flashplugin-nonfree comes over here)

Debian has these divisions:

1) main: All free software that follows the DFSG (Debian Free Software Guidelines)

2) contrib: Free software that follows DFSG but depends on software in non-free.

3) non-free: All kinds of non-free software that doesn't follow the DFSG.

Since Debian doesn't differentiate among packages on the basis of support (since all packages are supported by the Debian community), contrib and non-free packages correspond to Restricted/Multiverse in Ubuntu. By default, all contrib and non-free packages enter Multiverse when they are synced. If Canonical intends to support them, they are moved to restricted.


non-free is for packages which are straight-up not free. The only requirement is that they are redistributable. The Debian project considers that non-free is not a part of Debian, and is only provided as a convenience for users.

contrib is for packages which are themselves free but depend on packages that are in non-free. It's also not considered a part of Debian.

As Debian doesn't have the main/restricted and universe/multiverse distinction (and Ubuntu doesn't have the non-free and contrib distinction), the union of non-free and contrib corresponds roughly to the union of restricted and multiverse.