The gNewSense distribution build process is currently a very manual process and it's mostly done by a single person. We need to automate this more so that we can have quicker updates and share the responsibility between more people.
The preferred communication channel is the gnewsense-dev mailing list. For meetings we can use #gnewsense-dev.
Plan of approach
- Set up VCS repo.
- Push Builder code back to Savannah.
- Announce on gnewsense-dev and assemble interested contributors.
- Give contributors write access to VCS repo.
- Create branch for every contributor. Sam acts as gatekeeper to master.
- Builder acts on a single distribution. Find a way to merge multiple distributions into 1.
- Update Builder to Debian.
- Strip down Builder to its core (remove gen scripts etc.)
- Update Builder for Debian without -security.
- Update Builder for Debian with security.
- Write package modifiers.
- Use Builder's packages/ mechanism (so we can have packages-ucclia style development) or use gen-scripts?
- Go live with new repo.
- Make Builder deb package.
Go back to Builder style of development?
- Upstream updates to modified packages don't need manual handling (unless update breaks helper script).
Our changelog entry is always at the top, even if upstream updates came after our modification (example).
- Code repository contains helper scripts instead of patches.
- Could only be used for 1 distro at a time.
- Sed scripts are more complicated than manual edits.
- Packages that need changes to binary content (like openoffice.org in gNewSense 2) are very hard or impossible to handle.
Check how Trisquel does it.
Or find a way to automate gNewSense 4 development method:
- Have 1 repo with Debian code and 1 with gNS code (initially branched from Debian code). Merge Debian repo from upstream packages, then merge gNS repo from Debian repo.
- Automatic merges to gNS repo probably don't work when package modifications are invasive (e.g. when converting non-quilt to quilt package).
- Can we use dpkg-mergechangelog for debian/changelog?
- Have debian/changelog.gNewSense with only gNewSense entries and merge that with each update.
- Reprepro wants the name of the receiving distro in the latest changelog entry, so that would need updating after merge. Or can we add Debian distro as alias in reprepro config?
- Debmirror deletes packages from repo for distros that are not provided in parameter list. How can we mirror current Debian distros and still keep the old ones in the repo? How can we keep our own old distros (e.g. Parkes) when the upstream repo is gone?