While learning about Ubuntu development & packaging, there's one part that's not quite clear to me. So, let's say we're in the middle of active development (e.g. Raring) before feature freeze and I want to work on improving a program packaged for Ubuntu - e.g. Guake. I would like to fix a bug, add a new feature etc. Now, I see two ways of doing this:
- working on the upstream trunk lp:guake, submitting a merge proposal and requesting the package maintainer for Ubuntu to resync the package
- working on the package branch ubuntu:guake, submitting my fix there and letting the project or package maintainer worry about forwarding this fix upstream or creating a guake-ubuntu0 patched version for the package repo
Is one of these two approaches better? Does it depend on the situation (e.g. type of contribution - bug fix or a new feature; development phase) and if so, how? It would be great if someone experienced could give some more guidelines and advice on this topic.
When working in the GitHub ecosystem, it always seems very clear - everything is centered around the latest development version and all pull requests are submitted for it (at least I never bumped into anybody submitting stuff for some old version 0.7 of project X), while on Launchpad this disparity between package and upstream branches kind of confuses me. I'm not sure if it's better to run the latest Ubuntu development build and dig into the source that's available there (through apt-get source <package>
) or should I just get the latest trunk code into my stable Ubuntu, make the change and see if I can somehow get maintainers to forward this change towards the package (resyncing, checking if the builds still work against other Ubuntu libraries etc.)
I read both the old and the new packaging guides, but it still left me puzzling about these questions.