commit - 2eeb2038cc96d36e04eb0e2b08c69ca2eab9ab79
commit + eef198e34b20ceaa9968f48b215595b23afd9ac5
blob - /dev/null
blob + f7d61992275455745565edd69479f39a950acfb5 (mode 644)
--- /dev/null
+++ maintenance/README.md
+# Maintaining telescope
+
+## Making releases
+
+To create a "chain of trust" for signify keys, we when doing the
+release N we also generate the keys for N+1 and include the public key
+in the repo, under the `keys/` directory.
+
+Tags should be signed with a known ssh key. We don't usually use GPG
+nor sign every commit, as it makes little sense.
+
+Before making a release it's better to double-check that everything is
+in order. The ChangeLog file should be up-to-date and used as a base
+to create the release notes. Release notes should be useful both for
+the end users and for packagers: breaking changes, new or changed
+dependencies, bug fixes and new features needs to be clearly stated.
+
+It goes without sayng that before making a release all known bugs must
+be fixed.
+
+Every release so far was named after an Italian song. It started by
+trying to keep the "space" theme, but then I (op) started to just use
+a song I was listening to many times in the release period. There may
+or may not be any meaning behind the chosen song. The "limitation"
+that songs are from italian groups is not meant to exclude the rest of
+the world, it's just an arbitrary choice done by me (op). Other
+projects that I maintain (gmid) use song as a release name, so I just
+wanted to differentiate a bit (and maybe advertise some Italian indie
+music.)
+
+When everything is in place, remove `-current` from `configure.ac` and
+bump the version, then run
+
+ $ make release PUBKEY=... PRIVKEY=...
+
+signify(1) will then prompt for the password to unlock the private
+key. It will also try to check the signed tarball against the public
+key, as a safety measure.
+
+Note to op: on OpenBSD I'm using an `obj` directory for the build, and
+`make release` needs to be run after cd'ing there.
+
+Then upload the tarballs, make the tag (and sign it!), and add
+`-current` to the version in `configure.ac`. Finally, make the
+release on Codeberg and GitHub, and remember to upload the generated
+tarballs there as well.