Documentation: Contributing testcases
[oweals/gnunet.git] / doc / documentation / chapters / contributing.texi
1 @node GNUnet Contributors Handbook
2 @chapter GNUnet Contributors Handbook
3
4 @menu
5 * Contributing to GNUnet::
6 * Licenses of contributions::
7 * Copyright Assignment::
8 * Contributing to the Reference Manual::
9 * Contributing testcases::
10 @end menu
11
12 @node Contributing to GNUnet
13 @section Contributing to GNUnet
14
15 @cindex licenses
16 @cindex licenses of contributions
17 @node Licenses of contributions
18 @section Licenses of contributions
19
20 GNUnet is a @uref{https://www.gnu.org/, GNU} package.
21 All code contributions must thus be put under the
22 @uref{https://www.gnu.org/licenses/agpl.html, GNU Affero Public License (AGPL)}.
23 All documentation should be put under FSF approved licenses
24 (see @uref{https://www.gnu.org/copyleft/fdl.html, fdl}).
25
26 By submitting documentation, translations, and other content to GNUnet
27 you automatically grant the right to publish code under the
28 GNU Public License and documentation under either or both the
29 GNU Public License or the GNU Free Documentation License.
30 When contributing to the GNUnet project, GNU standards and the
31 @uref{https://www.gnu.org/philosophy/philosophy.html, GNU philosophy}
32 should be adhered to.
33
34 @cindex copyright assignment
35 @node Copyright Assignment
36 @section Copyright Assignment
37 We require a formal copyright assignment for GNUnet contributors
38 to GNUnet e.V.; nevertheless, we do allow pseudonymous contributions.
39 By signing the copyright agreement and submitting your code (or
40 documentation) to us, you agree to share the rights to your code
41 with GNUnet e.V.; GNUnet e.V. receives non-exclusive ownership
42 rights, and in particular is allowed to dual-license the code. You
43 retain non-exclusive rights to your contributions, so you can also
44 share your contributions freely with other projects.
45
46 GNUnet e.V. will publish all accepted contributions under the AGPLv3
47 or any later version. The association may decide to publish
48 contributions under additional licenses (dual-licensing).
49
50 We do not intentionally remove your name from your contributions;
51 however, due to extensive editing it is not always trivial to
52 attribute contributors properly. If you find that you significantly
53 contributed to a file (or the project as a whole) and are not listed
54 in the respective authors file or section, please do let us know.
55
56 @node Contributing to the Reference Manual
57 @section Contributing to the Reference Manual
58
59 @itemize @bullet
60
61 @item When writing documentation, please use
62 @uref{https://en.wikipedia.org/wiki/Singular_they, gender-neutral wording}
63 when referring to people, such as singular “they”, “their”, “them”, and so
64 forth.
65
66 @item Keep line length below 74 characters, except for URLs.
67 URLs break in the PDF output when they contain linebreaks.
68
69 @item Do not use tab characters (see chapter 2.1 texinfo manual)
70
71 @item Write texts in the third person perspective.
72
73 @c FIXME: This is questionable, it feels like bike shed painging to do
74 @c this for several k lines. It only helps to jump between sentences in
75 @c editors afaik.
76 @c @item Use 2 spaces between sentences, so instead of:
77
78 @c @example
79 @c We do this and the other thing. This is done by foo.
80 @c @end example
81
82 @c Write:
83
84 @c @example
85 @c We do this and the other thing.  This is done by foo.
86 @c @end example
87
88 @item Use @@footnote@{@} instead of putting an @@*ref@{@} to the
89 footnote on a collected footnote-page.
90 In a 200+ pages handbook it's better to have footnotes accessible
91 without having to skip over to the end.
92
93 @end itemize
94
95 @node Contributing testcases
96 @section Contributing testcases
97
98 In the core of gnunet, we restrict new testcases to a small subset
99 of languages, in order of preference:
100 @enumerate
101 @item C
102 @item Bash (preferable portable without too much specifics to Bash)
103 @item Python (@gt{} 3.6)
104 @end enumerate
105
106 We welcome efforts to remove our existing python-2.7 scripts to
107 replace them either with Bash or, at your choice, python-3.6+.
108
109 If you contribute new python based testcases, we advise you to
110 not repeat our past misfortunes and write the tests in a standard
111 test framework like for example pytest.