| 1 | -*- mode: org; coding: utf-8; -*- |
| 2 | |
| 3 | #+TITLE: Hacking GNU Guix and Its Incredible Distro |
| 4 | |
| 5 | Copyright © 2012, 2013, 2014, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org> |
| 6 | Copyright © 2015, 2017 Mathieu Lirzin <mthl@gnu.org> |
| 7 | Copyright © 2017 Leo Famulari <leo@famulari.name> |
| 8 | Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> |
| 9 | |
| 10 | Copying and distribution of this file, with or without modification, |
| 11 | are permitted in any medium without royalty provided the copyright |
| 12 | notice and this notice are preserved. |
| 13 | |
| 14 | * Contributing |
| 15 | |
| 16 | See the manual for useful hacking informations, either by running |
| 17 | |
| 18 | info -f doc/guix.info "Contributing" |
| 19 | |
| 20 | or by checking the [[http://www.gnu.org/software/guix/manual/guix.html#Contributing][web copy of the manual]]. |
| 21 | |
| 22 | * Commit Access |
| 23 | |
| 24 | For frequent contributors, having write access to the repository is |
| 25 | convenient. When you deem it necessary, feel free to ask for it on the |
| 26 | mailing list. When you get commit access, please make sure to follow the |
| 27 | policy below (discussions of the policy can take place on guix-devel@gnu.org.) |
| 28 | |
| 29 | Non-trivial patches should always be posted to guix-patches@gnu.org (trivial |
| 30 | patches include fixing typos, etc.). This mailing list fills the |
| 31 | patch-tracking database at [[https://bugs.gnu.org/guix-patches]]; see |
| 32 | "Contributing" in the manual for details. |
| 33 | |
| 34 | For patches that just add a new package, and a simple one, it’s OK to commit, |
| 35 | if you’re confident (which means you successfully built it in a chroot setup, |
| 36 | and have done a reasonable copyright and license auditing.) Likewise for |
| 37 | package upgrades, except upgrades that trigger a lot of rebuilds (for example, |
| 38 | upgrading GnuTLS or GLib.) We have a mailing list for commit notifications |
| 39 | (guix-commits@gnu.org), so people can notice. Before pushing your changes, |
| 40 | make sure to run ‘git pull --rebase’. |
| 41 | |
| 42 | All commits that are pushed to the central repository on Savannah must be |
| 43 | signed with an OpenPGP key, and the public key should be uploaded to your user |
| 44 | account on Savannah and to public key servers, such as |
| 45 | ‘keys.openpgp.org’. To configure Git to automatically sign commits, |
| 46 | run: |
| 47 | |
| 48 | git config commit.gpgsign true |
| 49 | git config user.signingkey CABBA6EA1DC0FF33 |
| 50 | |
| 51 | You can prevent yourself from accidentally pushing unsigned commits to |
| 52 | Savannah by using the pre-push Git hook called located at ‘etc/git/pre-push’: |
| 53 | |
| 54 | cp etc/git/pre-push .git/hooks/pre-push |
| 55 | |
| 56 | When pushing a commit on behalf of somebody else, please add a Signed-off-by |
| 57 | line at the end of the commit log message (e.g. with ‘git am --signoff’). |
| 58 | This improves tracking of who did what. |
| 59 | |
| 60 | For anything else, please post to guix-patches@gnu.org and leave time for a |
| 61 | review, without committing anything. If you didn’t receive any reply |
| 62 | after two weeks, and if you’re confident, it’s OK to commit. |
| 63 | |
| 64 | That last part is subject to being adjusted, allowing individuals to commit |
| 65 | directly on non-controversial changes on parts they’re familiar with. |
| 66 | |
| 67 | * Using emacs-debbugs |
| 68 | |
| 69 | Bug reports and patches are tracked using debbugs. If you are on emacs, you |
| 70 | can use emacs-debbugs. |
| 71 | |
| 72 | List all open bug reports on guix-patches with |
| 73 | |
| 74 | C-u M-x debbugs-gnu <RET> <RET> guix-patches <RET> n y |