This wiki was updated to MediaWiki 1.37. If you notice any issues, please report them to admin[at]


Jump to: navigation, search

Contrib: the universal openSUSE repository for third-party packages



Please note that from the openSUSE 12.1 release onwards, the Contrib repository is deprecated!

If you are a user, rest assured that the vast majority of these packages is now integrated in the main repository of openSUSE. Some of them are available on the build service and you can find them using the [ software search].

If you're a developer, please push your packages to Factory! This is not complicated and gets your package to all openSUSE users out there!

Historic reasons for Contrib

The model of third-party packages in the Build Service was complicated to use.

There were lots of packages across hundreds of Build Service projects, which brought problems: repositories were not easy to navigate; there were duplicate packages; repositories were not tested for compatibility with other repositories. The real solution would be to get all packages into Factory and this was the long-term goal. However, in the mean time, the Contrib repository provided an lower-barrier, universal repository for third-party packages. This repository was viewed as a community-driven extension of Factory, with all it's standards and limitations applied.

Now, the vast majority of packages once in Contrib has been integrated in Factory or one of the few specialized repositories on the Build Service. See for a list the Package Repositories page.

Rules or what do we do

In general Contrib has the same rules as Factory, like the release deadlines etc.

Rules for the repository

  • Everything is built against the openSUSE base or packages from this repository
  • No duplication of packages from Factory
  • The repository is branched at openSUSE release time (openSUSE:Factory:Contrib -> openSUSE:<version>:Contrib)
    • After the branch no version updates are allowed anymore, unless explicitly allowed by openSUSE:<version>:Contrib maintainers.
    • Bugfixes happen as patches to the packages

Rules for the packages

  • Packages have to have a package maintainer that cares for:
    • Package Updates
    • Maintenance for packages (fixing bugs, working with upstream on bugs, etc.)
    • Security Updates (SuSE Security Team will help with that)
    • Beta Testing during the openSUSE beta phase
  • Packages need to go through the contrib review process
  • no (file) conflicts with Factory packages

Permissions or who does what

To ensure that we follow the above stated rules we need to have a set of permissions for the repository and the packages in it. Therefore we need 2 roles involved. The maintainer who is responsible for one or more packages and the reviewers who are responsible for the repository itself.


  • Repository is owned by reviewers
    • Submission of new packages happens trough osc submitreq and goes trough an initial review.
    • Repo bugowner is
  • Packages are owned by maintainers
    • Development on packages just happens, no additional review.
    • Package bugowner is the maintainer


  • Repository is owned by reviewers
    • No new packages
  • Packages are owned by reviewers
    • Everything is handled by osc submitreq and goes trough a review
    • Package bugowner is the maintainer

Processes or how do we do it

There's also an alternative approach: osc-contrib command.

New packages to openSUSE:Factory:Contrib

Please do not submit new packages to Contrib, submit them to Factory instead. See How to contribute to Factory for details.

Bugfixes for packages in openSUSE:Factory:Contrib

  • Joe Packager checks out the package from openSUSE:Factory:Contrib

 $ osc co openSUSE:Factory:Contrib blackbox

  • Joe Packagers does his changes and checks the package back in

 $ osc ci -m 'fixed bug in init script'

Bugfixes for packages in openSUSE:<version>:Contrib

  • Joe Packager branches the package from openSUSE:<version>:Contrib

 $ osc branch openSUSE:11.1:Contrib blackbox

  • Joe Packager can now check out the package from his branch area and work on the package

 $ osc co home:jpack:branches:openSUSE:11.1:Contrib/blackbox

  • Once Joe Packager thinks that he has fixed the issue he submits the package

 $ osc ci -m "fixed serious bug"

  • after everything is building Joe creates a submitrequest for openSUSE:<version>:Contrib again

 $ osc sr create -m 'fixed serious bug'

 $ osc submitreq accept 6002 --message="reviewed ok. Update is released"

or declines it

 $ osc submitreq decline 6002 --message="Sorry. Declined. There is another buffer overflow in main.c line 155"

Similar procedure is also used if Joe Packager wants to modify a package in openSUSE:Factory:Contrib, but if he does not have maintainer permissions for this package (it is maintained by somebody else). The submitrequest should be handled by the package maintainer.

Security bugs for packages in openSUSE:<version>:Contrib

  • The same as above only that the bugreporter will be the security team.

Mailing list or whom to talk to

See the mailing lists page to learn how to subscribe and how to handle openSUSE mainling lists in general

Frequently asked questions

  • Q: Do we want to have a contrib-(staging|beta|unstable|experimental|testing) repository where packages have to undergo some reported tests before they end up in contrib ?
  • A: Generally I prefer to keep unstable/experimental stuff either upstream or in user's OBS, not in contrib. After package becomes stable, request for integration can be sent.
  • Q: Please define the release cycle (freezing, announcing, etc...)
  • A: "Contrib" will be in sync with Factory release cycles. It will develop during openSUSE Milestone cycle during openSUSE development cycle, together with it. Freezing of Factory will also affect "Contrib".
  • Q: How to add the Factory:Contrib repository in to my openSUSE ?
  • A: For openSUSE 11.2 use:
     zypper ar -f openSUSE:Factory:Contrib:openSUSE_11.2 
  • A: For openSUSE 11.3 use:
     zypper ar -f openSUSE:Factory:Contrib:openSUSE_11.3 
  • A: For openSUSE Factory use:
     zypper ar -f openSUSE:Factory:Contrib 
  • Q: How to add the openSUSE:11.2:Contrib repository to my openSUSE ?
  • A: Use:
     zypper ar 

or use yast2->Software Repositories->Add->select Community Repositories->Next->select Contrib->OK.

  • Q: But I don't like a Factory, it's so much updates. Aren't here a backports?
  • A: Yes, the Contrib is built for openSUSE 11.3, because we want to allow an easier adoption and testing of Contrib. But consider Factory is a main target, so this is not a "backport", just another build target.