Factory/Packaging
From openSUSE
Contents |
What this article is
This article will give you a view from the packager perspective on Factory. Concepts, commands, people to talk to and so on. It is meant as a starting point for packagers of Factory. It will not replace in depth documentation of things like the openSUSE Build Service, its interfaces or RPM packaging and things like that. You are expected to know that already.
Workflow
Factory is built in the openSUSE Build Service. It has its own project openSUSE:Factory. As you can see it's just a huge repository of packages. Development does not happen directly in openSUSE:Factory but in the so called devel projects. Devel projects are, as the name might suggest, projects where development happens for a specific topic. Like multimedia or GNOME or Kernel. The relation of packages in the openSUSE:Factory project to packages in the devel projects is expressed in the meta data of the packages inside openSUSE:Factory. So a package you see in Factory has always gone this way:
Modification => Devel Project => Factory
Modifications
As you can imagine the first part is open for everybody. Everyone can checkout packages from the devel projects and do local modifications. And everyone can submit his change back to the devel project as submitrequest via the Build Service command line client osc. How to do this in general is described on the Build_Service/Collaboration page.
Devel Projects
Permissions and processes come into play once you want to be responsible for a package in the distribution. As explained above, openSUSE package maintainers work together in devel projects. Each devel project has its own set of processes, rules and communication channels that fits them best. The reference point for this information is the project description of their Build Service project. So if you want to become part of a devel project you should head over to the openSUSE Build Service project you are interested in and see how to do that. If you want to find out which devel project a package belongs to, use the command
Devel projects are subjects to change because the world of FOSS software is not standing still. Software evolves, becomes obsolete or standards/defaults change and so on. So devel projects can change names, get dropped, be newly created, or change content and direction, as can packages in devel projects.
Getting a Devel Project for a new package
Before you can submit a new package to the Factory, your package needs to have a devel project. This project can't be your home project or its subprojects. The easiest way to get one is to take a look at list of projects and choose the topic your package belongs to. If you have found a good project, try to contact its maintainers (sending your package via submitrequest seems like a good way to start communication), figure out how this project works and try to join this project. If you can't find a corresponding topic, you may need to create a new devel project.
Creating a new Devel Project
First you need to propose a new devel project on opensuse-factory@opensuse.org (see Mailinglists). There are also people on that mailinglist that can create top level projects in the build service. Once there is agreement about this new devel project, there are a couple of things you should take care of.
Communication Channel
First of all, you should establish some line of communication with the other maintainers. I suggest you either use the opensuse-factory@opensuse.org mailing list with some specific subject like
Subject: [YOUR DEVEL PROJECT] Update to FOO 2.0
or tell ml-admin@opensuse.org and he creates your own list like
opensuse-factory-YOUR-DEVEL-PROJECT@opensuse.org
Devel Project Rules
After you are able to talk to each other, you should think of your rules to maintain the project. You are free to do this in any way you like. You can just use a maintainer<->package relation or you can have this less strict and work as a group.
Copy packages
It's advisable to use osc linkpac to link your packages from openSUSE:Factory into your devel project. This way you a couple of features like osc branch or osc submitrequest work best. You can of course also use osc copypack to copy packages from other projects.
Document your project
Once you have done those things, you have to document them in your project's description in the build service. You can use this template:
<title>YOUR DEVEL PROJECT</title> <description> This is the FOOBAR project. Its main purpose is to serve as development project for packages around the topic of FOOBAR in the openSUSE:Factory distribution. If you want to participate you can contact us individually or use our mailinglist opensuse-factory-foobar@opensuse.org. Please report bugs to the respective bugowners as set. </description>
Factory
openSUSE:Factory serves as the master project for all devel projects. Data in openSUSE:Factory is authoritative. As you can't change anything in openSUSE:Factory directly everything works over requests with osc.
Adding a package to Factory
After your new package was added to a fitting devel project as described above you can submitrequest it for inclusion to openSUSE:Factory. The submitrequest 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.
The introduction must contain information like this:
- the name and purpose
- how long has it been around?
- how well has it been tested?
- what is the upstream project?
- does it have a track record of security issues?
- what is the purpose of having it in the distribution?
- what are its users?
- what is the license?
Change the source of a package
To change the source of a package you have to make the changes in the devel project and then submit them from there with the osc submitreq command.
Delete a package
If you want to delete a package from the openSUSE:Factory distribution you need to send a delete request with osc.
If you want to rename a package you would first send a delete request and then a submitreq with the new package
Change the devel project of a package
If you want to move a single package or a group of packages to another devel project you can issue a change devel request.
Factory Maintenance
Factory is maintained by the openSUSE Distribution Project Manager. Currently this is Stephan Kulow. The Project Manager has the last say about the technical changes to the openSUSE distribution.
The requests to change things in Factory, like changing the source of a package or dropping a package, are handled by the Factory Cabal. This group currently consists solely of Markus Rueckert.

