What requirements does a VCS packaging tool have?
This is an initial brainstorm by James Westby, to which he says:
I do not believe this document will be entirely complete, please add anything else that you think is important. This is obviously also coloured by my own experience and views from developing a tool, so please help to remove those biases.
This is intentionally as vague as possible about how the final system < would look, as he thinks we need to keep the benefits that we are aiming for in mind.
Support Co-operation
There are many workflows which could be adopted, but we require that the any solution enhances our ability to co-operate.
There are many ways in which we should be able to co-operate
With upstream
- Submitting patches back in their preferred format.
- This will often be satisfied a plain patch that applies cleanly to the latest version or the tip of their development branch.
- Providing it in their VCS’s preferred format is another possibility that many upstreams may prefer. However I doubt that any would refuse a patch not delivered using their VCS.
- Taking individual patches from upstream in order to solve specific issues, for instance to fix a security bug in a stable release.
With other distros
- If one distro uses a patch then others may or may not want to use it. We should therefore have an easy way to see what patches are applied in another distribution, and then take the ones we want.
- We should also be able to modify patches from another distro to suit our own if needed, and then easily contribute the changes back if appropriate.
madduck: look at my blog post on cross-distro collaboration, where I talk about the different patch categories: per-distro, per-package-format, cross-distro stuff, and upstream.
With other people in the same distro
- The workflow should give everyone, not just one person, everything needed to work on the package.
- If the format is not mandated by the whole distribution then getting the changes in to and out of the other available systems should be straightforward. I mean that, for instance, normal Debian package source uploads are still permitted then the changes made by someone doing that should be easy to integrate.
- Also if there is more than approach used within a distro then in each it should be very easy for someone without experience with the system to make a simple change (consider security uploads).
Support common tasks
There are certain common tasks which should be made easy to do.
New upstream releases
- The process of incorporating a new upstream release, making the necessary changes to the packaging data, and updating any patches to apply to the new version should not be overly complicated.
Submitting patches to upstream
- The patches that are used in the package may not apply directly to the current upstream. If that is the case it should be as easy as possible to rectify that for sending them upstream.
Importing patches form other distros
- If this was easier, I think sharing patches across distros could be more common. More specifically, it could help the cooperation between Debian and Ubuntu.