Development of the Shepherd is a volunteer effort and you can contribute: through code, documentation, user support, translation, or any other activity that helps users and contributors.

Getting in touch

The first way to get involved is by joining the project’s communication channels to learn about it and to help others. Communication channels for the Shepherd are those of the Guix project.

We pledge to make participation in the Shepherd and Guix projects a welcoming and harassment-free experience for all. By participating in discussions on these channels, you agree to follow the Code of Conduct of the Guix project.

The #guix IRC channel on Libera.Chat is a good place to discuss informally any questions you may have about the Shepherd.

The guix-devel mailing list is used to discuss most aspects of the Shepherd, including development and enhancement requests.

Guix-commits receives notifications of commits to the version control repository.

Reporting bugs

Report bugs by email to the bug-guix mailing list, which has an associated issue tracker.

Make sure to include information about the Shepherd version you’re using, the operating system, and anything that can help reproduce the problem you observe.

Getting the code

Browse the source and get a copy of its Git repository:

git clone https://git.savannah.gnu.org/git/shepherd.git
guix git authenticate \
      788a6d6f1d5c170db68aa4bbfb77024fdc468ed3 \
      3CE464558A84FDC69DB40CFB090B11993D9AEBB5

The second command authenticates your Git checkout and installs Git hook such that future uses of git pull and git push will automatically authenticate new commits.

For additional information, see the project page at Savannah.

Setting up a development environment

The easiest way to set up a development environment once you have cloned the repository is with Guix, by running this command from the checkout:

guix shell -CP

From this development shell, run:

autoreconf -vfi
./configure && make && make check

You’re all set!

Or almost: for a pleasing development environment, we recommend (but do not require!) Emacs with Geiser, which will let you navigate the code, view on-line documentation, explore it through live programming, and more.

Proposing changes

The project welcomes modifications by all and everyone, under the same license as the Shepherd, the GPL (version 3 or any later version).

Currently, the preferred method to propose changes is by sending patches by email to guix-patches@gnu.org, with Shepherd in the subject. Patches are tracked on the Guix issue tracker.

Check out the Guix coding style and documentation on service internals for guidelines.

Translating

Code is not the only way you can help: translation of user messages is another way to contribute that we value.

To contribute translations, see instructions at the Translation Project.

Organization

The Shepherd is organized as follows:

  • Contributors send changes to the code (under the same license) or support the project in other ways.
  • Developers, in addition to the above, have commit access and can commit or reject changes submitted by others, following an effort to reach consensus with both the contributor and other developers. They are responsible for processing bug reports and submitted changes.
  • Maintainers (currently Ludovic Courtès) can appoint new developers and new maintainers when consensus exists among maintainers and developers for the new appointment.

Please reach out on the mailing list or IRC channels for any questions.