Thank you for volunteering to maintain a image! Here are some tips on how to do it well. Your responsibilities are:

  1. Adding new build images as the upstream vendor provides updates
  2. Deprecating old build images as they fall out of upstream support
  3. Maintaining the integration and docs for this image
  4. First-line support for user issues for this build image
Releasing new versions

When a new version of your distribution is released upstream, you should prepare a patch for which makes the new version available to SourceHut users. You must test new image versions.

To test new versions, create a clone of with the patch applied on, then update your image's build.yml file to point to your git repository, and remove the deploy task. Submit this build to to test-build your new image version from an earlier version which is already available, and address any problems that arise during testing.

If you use symlinks (e.g. for the "latest" version of your distribution), submit separate patches to add new images and to update symlinks, so that we can build the named image (e.g. "debian/trixie") before we update the symlinks (so that "debian/latest" doesn't point to a yet-to-be-deployed trixie image).

Submit your patch(es) to, including at least the following:

  • A patch for adding the new version, with the URL for your successful test build provided in the timely commentary
  • A patch for updating symbolic links, if necessary for your image
  • A patch for updating the compatibility matricies
  • An update for contrib/crontab to schedule rebuilds of the new release
  • Any special instructions for deploying the image that require manual intervention from the patch integrator
Deprecating old versions

We remove distribution releases from SourceHut once they are deprecated by upstream, following a 2-week notice period for anyone who has used the deprecated image within the 30 days prior to its deprecation.

To remove a deprecated release for your distribution, prepare patches according to the following criteria:

  • Update to drop the image. If you use symlinks, prepare two patches, one updating the symlinks (first patch), and one dropping the named release (second patch)
  • Update the compatibility matrix in
  • Update contrib/crontab to unschedule rebuilds of the depreacted release
  • Do not mix the changes in with patches which introduce a new release

We will apply patches which update any symbolic links, update the compatiblity matrix, then email affected users and wait to apply the patch removing the named release until the 2-week notice period expires.

Introduction of a new distribution

To introduce a new distribution or operating system, you need to prepare a patch for which updates the images/ directory appropriately. This should include a "functions" file, which gives the build workers information on how to boot your image; a "genimg" script which, when run from within your target operating system, produces the image as a qcow2 file; and a build manifest which will automate this process.

It is recommended that you reference existing build images to get an idea of how the system can be applied to your target.

Submit your patch to and include the following:

  • Detailed instructions for bootstrapping the image from scratch for the reviewers and patch integrators, such as how to set up a virtual machine appropriately to run the genimg script. We cannot accept binaries provided by the patch submitter; we will run through the entire bootstrapping procedure independently using upstream sources.
  • An update to contrib/crontab which adds your image to the rebuild schedule.
  • A patch for adding your image's release details, including details on the upstream deprecation lifecycle and other details pertinent to users of this distribution.

You are strongly advised to set up a local instance of for testing against; we will have very little patience for reviewing untested patches of this scale.

About this wiki

commit a290ce243e74f89fc35cd4e3467a580edbc35399
Author: Drew DeVault <>
Date:   2024-05-27T14:24:11+02:00 add link to joinup chooser
Clone this wiki (read-only) (read/write)