[evince] Add contribution guidelines
- From: Germán Poo-Caamaño <gpoo src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evince] Add contribution guidelines
- Date: Sun, 21 Jun 2020 19:34:36 +0000 (UTC)
commit 11a2040366cbc9ae51015363df2162274aabb2c1
Author: Germán Poo-Caamaño <gpoo gnome org>
Date: Sun Jun 21 15:33:34 2020 -0400
Add contribution guidelines
Based on libdazzle, gtk, and kernel ones.
CONTRIBUTING.md | 188 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 188 insertions(+)
---
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 00000000..64a942db
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,188 @@
+# Contributing
+
+## Licensing
+
+Your work is considered a derivative work of the Evince codebase, and
+therefore must be licensed as GPLv2+.
+
+You do not need to assign us copyright attribution.
+It is our belief that you should always retain copyright on your own work.
+
+## Troubleshooting
+
+To enable the debug messages, set the environment variable for the section
+you want to debug or set `EV_DEBUG` to enable debug messages for all sections.
+
+The following sections are available:
+
+```c
+EV_DEBUG_JOBS
+EV_DEBUG_SHOW_BORDERS
+```
+
+#### Example
+```c
+EV_DEBUG_JOBS=1 evince document.pdf
+```
+
+### ‘Show borders’ debugging hint
+
+Evince can show a border around the following graphical elements:
+
+ * text characters
+ * links
+ * form elements
+ * annotations
+ * images
+ * media elements
+ * selections
+
+this can be very helpful when debugging display issues related to those
+elements, to activate it you just need to set two env vars when calling
+Evince from a terminal, e.g. to show annotation borders:
+
+```sh
+EV_DEBUG=borders EV_DEBUG_SHOW_BORDERS=annots evince
+```
+
+where `EV_DEBUG_SHOW_BORDERS` can be set to any of the following values:
+`chars` `links` `forms` `annots` `images` `media` `selections`.
+
+If you need to add additional tracing macros to debug a problem, it is
+probably a good idea to submit a patch to add them. Chances are someone
+else will need to debug stuff in the future.
+
+### Debug Poppler messages
+
+Poppler is the library used by Evince to render PDF documents. When a document
+presents error, or there are issues in Poppler to handle it, the output can be
+seen by setting `G_MESSAGES_DEBUG` to enable debug messages for Poppler.
+
+#### Example
+
+```
+G_MESSAGES_DEBUG=Poppler evince document.pdf
+```
+
+or
+
+```
+G_MESSAGES_DEBUG=all evince document.pdf
+```
+
+
+## Code Style
+
+Evince follows the Linux coding style (K&R), with some mix of GObject
+and Gtk coding style. However, the code has not evolved organically, and
+there is a mix and match of coding style with respect to indentation.
+
+```c
+static gboolean
+this_is_a_function (GtkWidget *param,
+ const gchar *another_param,
+ guint third_param,
+ GError **error)
+{
+ g_return_val_if_fail (GTK_IS_WIDGET (param), FALSE);
+ g_return_val_if_fail (third_param > 10, FALSE);
+
+ /*
+ * This is the preferred style for multi-line
+ * comments. Please use it consistently, and do not use
+ * C++ comment style.
+ */
+ if (!do_some_more_work ()) {
+ g_set_error (error,
+ G_IO_ERROR,
+ G_IO_ERROR_FAILED,
+ "Something failed");
+ return FALSE;
+ }
+
+ if (another_param != NULL)
+ return FALSE;
+ else
+ return TRUE;
+}
+```
+
+```c
+void do_something_one (GtkWidget *widget);
+void do_something_two (GtkWidget *widget,
+ GError **error);
+gchar *do_something_three (GtkWidget *widget);
+gboolean do_something_four (GtkWidget *widget);
+```
+
+ * Notice that we use 8-space indention.
+ * We do not use braces for one line blocks. For main blocks, the
+ opening brace is its own line, for other statements, right after
+ the statement.
+ * Spaces before braces and parenthesis.
+ * No tabs, spaces only.
+ * Always compare against `NULL` rather than implicit comparisons.
+ This eases ports to other languages and readability.
+ * Use #define for constants. Try to avoid “magic constants” or
+ “magic numbers”.
+ * Align function parameters.
+ * Align blocks of function declarations in the header. This
+ vastly improves readability and scanning to find what you want.
+
+If in doubt, look for examples elsewhere in the codebase, especially
+in the same file you are editing. Also, the Linux kernel coding style
+in https://www.kernel.org/doc/html/latest/process/coding-style.html
+
+### Commit messages
+
+The expected format for git commit messages is as follows:
+
+```plain
+Short explanation of the commit
+
+Longer explanation explaining exactly what's changed, whether any
+external or private interfaces changed, what bugs were fixed (with bug
+tracker reference if applicable) and so forth. Be concise but not too
+brief.
+
+Closes #1234
+```
+
+ - Always add a brief description of the commit to the _first_ line of
+ the commit and terminate by two newlines (it will work without the
+ second newline, but that is not nice for the interfaces).
+
+ - Whenever possible, the first line should include the subsystem of
+ the evince the commit belongs: `shell`, `libdocument`, libview`,
+ `libmisc`, `backends`, `cut-n-paste`, `build`, `flatpak`.
+ e.g. “flatpak: bump version of poppler”
+
+ - First line (the brief description) must only be one sentence and
+ should start with a capital letter unless it starts with a lowercase
+ symbol or identifier. Don't use a trailing period either. Aim to not
+ exceed 72 characters.
+
+ - The main description (the body) is normal prose and should use normal
+ punctuation and capital letters where appropriate. Consider the commit
+ message as an email sent to the developers (or yourself, six months
+ down the line) detailing **why** you changed something. There's no need
+ to specify the **how**: the changes can be inlined.
+
+ - When committing code on behalf of others use the `--author` option, e.g.
+ `git commit -a --author "Joe Coder <joe coder org>"` and `--signoff`.
+
+ - If your commit is addressing an issue, use the
+ [GitLab syntax](https://docs.gitlab.com/ce/user/project/issues/automatic_issue_closing.html)
+ to automatically close the issue when merging the commit with the upstream
+ repository:
+
+```plain
+Closes #1234
+Fixes #1234
+Closes: https://gitlab.gnome.org/GNOME/gtk/issues/1234
+```
+
+ - If you have a merge request with multiple commits and none of them
+ completely fixes an issue, you should add a reference to the issue in
+ the commit message, e.g. `Bug: #1234`, and use the automatic issue
+ closing syntax in the description of the merge request.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]