24

Although I like Debian for various reasons, it is not always easy to find some documentation on specific aspects of this distribution and its policies.

My question is: what is the difference between contrib and non-free packages repositories?

From the little explanations I could find, if I am not mistaken:

  • non-free is for packages whose licences are not free
  • contrib for dependencies of non-free packages (which make them not part of Debian)

But it seems odd to me to have two repositories for, so to speak, the same purpose, which is making available non free software inside Debian.

I would like to know if I am missing something here.

3 Answers 3

35

non-free packages are packages not complying to the Debian Free Software Guidelines definition. E.g.:

nvidia-driver which provides a proprietary driver.

contrib packages are packages that do comply with the DFSG, but depend on non-free packages, or which depend on some non-free software downloaded (by the package or having to be downloaded manually) to work properly. So they don't end up in main. E.g.:

bumblebee-nvidia which while DFSG compliant, isn't really useful without the non-free package nvidia-driver, so it's put in the contrib section, or

vice which requires to download (while respecting copyrights and laws) ROMs to work properly.

If somebody doesn't want to or can't use non-free software, that person most probably doesn't need or won't be able to use software depending on it, so it's more useful to put them separately in a contrib section. That person won't even have to download the contrib section.

UPDATE: the software in contrib, and its sources are still available for free use. Interesting parts could be reused in an other project, or the non-free (or non available) parts it depends upon could be replaced (e.g.: replace graphics, music etc. assets for a game engine in contrib). Having it separate from non-free helps to know which parts can be reused.

trivia: the Open Source Definition was initially created by removing any mention of Debian in DFSG.

7
  • 3
    I don't really understand the benefit to either Debian or its users of seperating non-free and contrib. What is the actual advantage gained? As an end-user who doesn't care if a program contains non-free code, both non-free and contrib are fine by me. As an end-user who does care, both are off-limits for me. What is the actual advantage?
    – MechMK1
    Apr 2, 2019 at 8:40
  • 1
    Like MechMK1, I am puzzled by this, and, even if I should have maybe have it written clearer in my question, that is also an aspect I would like to an answer to.
    – Paradox
    Apr 2, 2019 at 9:12
  • 1
    You can reuse and modify code from contrib to adapt it to an other project, because the source is available as any source from "main". You probably can't do this when it's from non-free, either the source licence doesn't let you do enough, or there is no source at all. If the end user is a "normal" end user who doesn't attempt to do anything beside what is distributed, I can imagine contrib and non-free would look the same
    – A.B
    Apr 2, 2019 at 10:18
  • 3
    Also sometimes you can replace the non-free parts by free parts. The kind of thing that could be done in theory with some game engines in contrib and their assets (graphics, music...) in non-free or nowhere. The split made it clear it was possible to do this.
    – A.B
    Apr 2, 2019 at 10:31
  • so how come the package torbrowser-launcher is part of contrib? All of its dependencies are entirely in Main. It was moved to contrib because torbrowser executes code outside of its source, and that violates DFSG. But if it violates DFSG, how can it be in contrib (which is only for DFSG-compliant packages). The condtition it broke: "must not require or recommend a package outside of main for compilation or execution" but by fact, it doesn't require a 'package', and if we say 'any code' instead of package, then it cant be in contrib and should be in non-free Feb 1, 2022 at 1:23
9

Defined on the Debian Policy Manual:

2.2.2. The contrib archive area

The contrib archive area contains supplemental packages intended to work with the Debian distribution, but which require software outside of the distribution to either build or function.

Every package in contrib must comply with the DFSG.

In addition, the packages in contrib

  • must not be so buggy that we refuse to support them, and

  • must meet all policy requirements presented in this manual.

Examples of packages which would be included in contrib are:

free packages which require contrib, non-free packages or packages which are not in our archive at all for compilation or execution, and

wrapper packages or other sorts of free accessories for non-free programs.

2.2.3. The non-free archive area

The non-free archive area contains supplemental packages intended to work with the Debian distribution that do not comply with the DFSG or have other problems that make their distribution problematic. They may not comply with all of the policy requirements in this manual due to restrictions on modifications or other limitations.

Packages must be placed in non-free if they are not compliant with the DFSG or are encumbered by patents or other legal issues that make their distribution problematic.

In addition, the packages in non-free

  • must not be so buggy that we refuse to support them, and

  • must meet all policy requirements presented in this manual that it is possible for them to meet.

Further reading:

2

https://www.debian.org/doc/debian-policy/ch-archive#s-contrib

The contrib archive area contains supplemental packages intended to work with the Debian distribution, but which require software outside of the distribution to either build or function.

This software could very well be software that is not available in main despite being free. You just can't get it from debian.

1
  • It's not that you "cannot get it from Debian", it's just not part of the Debian distribution per se.
    – Paradox
    Apr 4, 2019 at 12:01

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .