Home Wiki > openSUSE:How to contribute to Factory
Sign up | Login

openSUSE:How to contribute to Factory

tagline: From openSUSE


This article will give you a view from the contributor perspective on openSUSE Factory, such as concepts, commands to execute, people to talk to and so on. It is meant as a starting point and does not intent to replace in depth documentation of things like programming languages, compilers, packaging or the Open Build Service. You are expected to know about those things already. This article will show that contribution to Factory is both easy and very welcome.

How to submit a fix to a package

The easiest and most convenient way to contribute to Factory is to just submit fixes. If you know why a package doesn't build or doesn't work correctly why don't you fix it? If the version of a package is outdated why don't you update it? To make this possible for everybody the openSUSE developers leverage the collaboration features of the Open Build Service for Factory contributions. That means that everyone can branch packages from openSUSE:Factory, do modifications and submit them back, it's as easy as checkers. First you need to checkout the package with osc

osc branch -m 'Fix XY' openSUSE:Factory aaa_base

As you can see the server created a copy of the package from the correct devel project in your home project now. Check it out to your local machine to do any changes.

osc checkout home:yourname:branches:Base:System/aaa_base

After you have changed what you want to fix and the package builds and works correctly you can check in your changes to your branch

osc checkin -m 'Added fix XY for problem Z'

Then submit them to the developer of the package for review

osc submitrequest -m 'Added fix XY for problem Z'

The developer of the package will then get notified about your submission and will review it. We call this BURPing.

  • Branch,
  • Update,
  • Request,
  • the Package

How to add a new package to Factory

If you've never created a package before, you may want to visit this tutorial before you begin submitting packages to OBS.

First and foremost your package needs to have a devel project. A devel project should be a top level project and not be in the home: namespace. Look which devel projects similar packages to yours are maintained in and when you have found a good project try to contact its maintainers and tell them that you want to maintain a package there. The easiest way is to simply send your package to the devel project.

osc submitrequest -m 'I want to maintain python-cerealizer in Factory and would like to use devel:languages:python as the devel project.' home:yourname/python-cerealizer devel:languages:python

A list of the current devel projects can be found in the drop-down menu on top of this page. Find a public list of all projects here. If you can't find a corresponding topic you need to use our catchall project devel:openSUSE:Factory. And if you have a completely new collection of packages that could form their own devel project you need to propose this new devel project to the factory mailinglist first. The Open Build Service maintainers will tell you what to do next.

After you have found a devel project you can submit-request your package to openSUSE:Factory. The submit-request must contain a note with information about the package. Preferably you introduce the package to the opensuse-factory list and point to that introduction in your submitrequest. A good introduction contains information on the state of the upstream project and how maintainable it is and what the purpose of having it in the distribution will be.

osc submitrequest -m 'New package see http://lists.opensuse.org/opensuse-factory/2011-05/msg00018.html ' devel:languages:python/python-cerealizer openSUSE:Factory

How to become a maintainer of a package in Factory

Just talk to the current developer if you want to help or take over responsibility and be aware of the duties and rights of a Factory maintainer

You determine the current maintainer by accessing build.opensuse.org or with this command:

osc maintainer openSUSE:Factory aaa_base

For many projects the maintainer listed currently is often just a name, not an email-address. You can try appending "@opensuse.org", "@suse.com" or "@suse.de" and see which one works.

Apart from just writing to the current maintainer, there are two more options:

  • osc requestmaintainership openSUSE:Factory aaa_base
  • go to build.opensuse.org, login, then search for the package you're interested in, then "Request role addition".

How to merge a fix for a package in a devel project

The Open Build Service will notify you about new requests via email. You also can also query it for all the new request.

osc request -s new

Merging the changes is as simple as accepting the request. Its a good idea to examine the changes first.

osc request show -d 12345

And if you like what you see you accept it

osc request accept 12345

How to submit a package to openSUSE:Factory

Once you are satisfied with the state of your package in your devel project simply submit it to openSUSE:Factory.

osc submitrequest devel:languages:python/python-cerealizer openSUSE:Factory

How to submit a package to a released product

If you want to fix a package in a released distribution, like openSUSE 11.4, you have to do some additional steps. They are described in the package maintenance guidelines.

How to drop a package

Warning If you are not the maintainer of the package, please talk to the maintainer before doing any of the steps below.

Before you drop any package please consider our drop policy for openSUSE:Factory. Thanks in advance.

Let's assume that we want to drop the oldstuff package from Factory, and that it's devel project is devel:openSUSE:Factory. You should first check that no other packages depend on oldstuff in Factory.

osc whatdependson openSUSE:Factory/vim standard i586

If some packages depend on it, you have several options:

  1. give up and accept to keep oldstuff
  2. drop those packages first
  3. change those packages to not depend on oldstuff

Once you have found a solution just file a drop request for oldstuff in openSUSE:Factory, explaining why you want to drop the package.

osc deleterequest -m "Dropping oldstuff because XXX" openSUSE:Factory oldstuff

When a package is removed from Factory, it is not automatically removed from the devel project. The reason is that the package could still be used outside of Factory, in the devel project for some other reasons. So depending on your needs, you might want to remove the package from the devel project too.

osc deleterequest -m "Dropping oldstuff because XXX" devel:openSUSE:Factory oldstuff

On removal of the package from openSUSE:Factory, a copy of the last version will be created in the openSUSE:Dropped project so that people can take the package again in the future, if needed.

How to restore a dropped package

It's simply a matter of restoring the package from openSUSE:Dropped. Follow the process described to add a package to Factory.