2 Answers
2

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.

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.