Thank you for taking an interest in contributing to Gourmet! We appreciate that you're thinking about offering your time to improving the project, and it's our goal to respect your contribution accordingly.
Although this document focuses on code contributions, you can contribute in several ways:
- File a bug report.
- Add or improve documentation.
- Promote the project to others.
In general, the process for contributing code is:
- Pick or open an issue to work on
- Post a comment expressing your intent to make sure nobody else is already working on it
- Set up a development environment, as described below
- Hack the code, and when ready
- Push your changes to your forked repo and create a pull request.
Make sure to also check out our upcoming milestones.
You'll want to clone Gourmet to your computer and probably fork it as well.
Ensure your system has the necessary prerequisites installed:
- Python, which is what Gourmet is written in.
- PyGObject for GTK+ 3 and
other GNOME libraries. You may either install your system's
pygobject
package(s) or install the necessary system requirements to installpygobject
from PyPI withpip
. The latter method is recommended if you plan on doing development within a Python virtual environment. - intltool for internationalization.
- (optional) Enchant for spell-checking. At least one of the backends must be installed as well.
- (optional) GStreamer for sound. The GStreamer library itself and gst-plugins-base are required. Python bindings are provided through PyGObject, so GObject introspection data is also needed.
- (optional) poppler for exporting PDFs. Python bindings are provided through PyGObject, so install the GLIB bindings and associated GObject introspection data.
Note: Although some prerequisites are optional, the development install of Gourmet enables all plugins and features, so you probably want to install all prerequisites to avoid any issues.
You may want to setup a Python virtual environment. This is optional but highly recommended:
$ python -m venv --prompt gourmet env
$ source env/bin/activate
(gourmet) $ pip install -U pip setuptools wheel
Then install Gourmet itself:
(gourmet) $ pip install -r development.in
This installs the remaining Python dependencies and Gourmet itself in editable mode, which allows you to run Gourmet and see your changes without having to reinstall it.
Note: If you encounter an error during the installation of
pygtkspellcheck
, first install pyenchant
and pygobject
on their own:
(gourmet) $ pip install pyenchant pygobject
(gourmet) $ pip install -r development.in
You should now be able to launch and run Gourmet:
(gourmet) $ gourmet
Gourmet is an old code base, consequently its style is not always consistent or conformant to contemporary tastes. We are not interested in bikeshedding, but please follow PEP 8 when writing new code, and when working on old code, please tidy up as you go.
We welcome feedback and issue reporting. You can do so by browsing existing issues and commenting on them, or creating a new one.
When reporting an issue, please fill in the provided template.
For feedback or requests of features, please explain with details, and screenshots if possible, what you would like.