openSUSE:Build Service Concept Source branching
Working together on packages
One of the major targets of the Build Service is to foster collaboration of community members on all levels. The most natural way of working together in the open source world is to work on code together.
While that is a known field on source code level, it is quite new in the package building area. People want to improve existing projects and packages. That is great, but still there should be a powerful maintainership for projects to guarantee a high quality of large projects. As a result, the privacy concepts of the Build Service does not allow that changes go directly to projects where one does not have write permission.
We want to encourage collaboration in the way that everybody can branch all packages from all projects and do work on it in a private branch.
When the package is better than before, a request can be posted to take over the changes to the original project. That asks the owner of the original project to consider the changes.
The developer who wants to create an improved version (=branched project) of a project (=base project) calls the 'improve this package' functionality (how ever that looks like, depends on the client) in the client. The client checks if the user has write permission in the project, if so, the client enters the normal edit mode.
In case the user does not have write permission to the project, a branch of the base project is created by the API. The branched project can now be worked on, built and tested. If the branched package works as required the person maintaining the branch can set up a Submit Request.
Requests are a generic feature of the Buildservice to help to support collaboration between people.
The Submit Request can either be accepted or declined by the maintainer of the based project or canceled by the requester. If the merge request is accepted, the base package is patched with the diffs from the branch project and the merge requests state is set to accepted.
Find more details about the Submit Request.
To make it possible that a Buildservice Project can have different maintainers for all the packages but still a central maintainership for the project there is the concept of Devel Projects . These help to prevent a request flood on the maintainer of large Buildservice projects such as Factory.