openSUSE:Как внести вклад в Factory

Перейти к: навигация, поиск
Localize.png Эта статья содержит фрагменты на иностранном языке. Вы можете помочь переведя её до конца. (cм. руководство по переводу)
This article will give you a view from the packager perspective on Factory, such as concepts, commands, people to talk to and so on. It is meant as a starting point for packagers of Factory, but does not intent to replace in depth documentation of things like the openSUSE Build Service, its interfaces or RPM packaging, etc. You are expected to know that already.

How Factory development is organized

Factory development is being split into devel projects organized by topic areas, such as KDE, GNOME, Education, Java, and so on. Devel projects are responsible for sets of packages and organize themselves rather than following a top-down model of management. Bug fixes and new features have to be first commmitted to the devel project and from there submit requests will forward them to the main openSUSE:Factory project.

An easy way to start contributing is to submit patches for failing package builds, those are summarized on this Factory Status page. Submissions happen following the Build Service Collaboration process. The two blog entries Fixing Packages and Package Review in the Build Service detail it further.


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


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

osc meta pkg openSUSE:Factory aaa_base

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.

Список проектов из которых принимаются пакеты в Factory доступен на этой странице.

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 mailinglist. 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 mailing list with some specific subject like

Subject: [YOUR DEVEL PROJECT] Update to FOO 2.0

or tell and he creates your own list like

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 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.

osc linkpac openSUSE:Factory aaa_base Base:System

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>
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 Please
report bugs to the respective bugowners as set.


openSUSE:Factory служит основным проектом для всех разрабатываемых проектов. Данные в openSUSE:Factory авторитетны. Поскольку Вы не можете ничего изменить в openSUSE:Factory, все работает по запросам в osc.

Добавление пакета в Factory репозитории

После того, как Ваш новый пакет был добавлен в разрабатываемый проект, как описано выше, Вы можете создать запрос на включение этого пакета в репозитории openSUSE:Factory. Запрос должен содержать примечание с информацией о пакете. Предпочтительнее предоставить эту информацию в рассылке opensuse-factory и укажите на это в своем запросе.

Примечание должно включать в себя следующую информацию:

  • имя и предназначение программы
  • как долго существует эта программа?
  • как хорошо программа протестирована?
  • what is the upstream project?
  • does it have a track record of security issues?
  • почему эта программа должна быть включена в состав дистрибутива?
  • кто пользуется этой программой?
  • на основе какой лицензии распространяется?

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.

osc submitrequest Base:System aaa_base openSUSE:Factory

Delete a package

If you want to delete a package from the openSUSE:Factory distribution you need to send a delete request with osc.

osc deleterequest openSUSE:Factory aaa_base

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.

osc changedevelrequest openSUSE:Factory aaa_base Base:Build

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.