123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- @node GNUnet Contributors Handbook
- @chapter GNUnet Contributors Handbook
- @menu
- * Contributing to GNUnet::
- * Licenses of contributions::
- * Copyright Assignment::
- * Contributing to the Reference Manual::
- * Contributing testcases::
- @end menu
- @node Contributing to GNUnet
- @section Contributing to GNUnet
- @cindex licenses
- @cindex licenses of contributions
- @node Licenses of contributions
- @section Licenses of contributions
- GNUnet is a @uref{https://www.gnu.org/, GNU} package.
- All code contributions must thus be put under the
- @uref{https://www.gnu.org/licenses/agpl.html, GNU Affero Public License (AGPL)}.
- All documentation should be put under FSF approved licenses
- (see @uref{https://www.gnu.org/copyleft/fdl.html, fdl}).
- By submitting documentation, translations, and other content to GNUnet
- you automatically grant the right to publish code under the
- GNU Public License and documentation under either or both the
- GNU Public License or the GNU Free Documentation License.
- When contributing to the GNUnet project, GNU standards and the
- @uref{https://www.gnu.org/philosophy/philosophy.html, GNU philosophy}
- should be adhered to.
- @cindex copyright assignment
- @node Copyright Assignment
- @section Copyright Assignment
- We require a formal copyright assignment for GNUnet contributors
- to GNUnet e.V.; nevertheless, we do allow pseudonymous contributions.
- By signing the copyright agreement and submitting your code (or
- documentation) to us, you agree to share the rights to your code
- with GNUnet e.V.; GNUnet e.V. receives non-exclusive ownership
- rights, and in particular is allowed to dual-license the code. You
- retain non-exclusive rights to your contributions, so you can also
- share your contributions freely with other projects.
- GNUnet e.V. will publish all accepted contributions under the AGPLv3
- or any later version. The association may decide to publish
- contributions under additional licenses (dual-licensing).
- We do not intentionally remove your name from your contributions;
- however, due to extensive editing it is not always trivial to
- attribute contributors properly. If you find that you significantly
- contributed to a file (or the project as a whole) and are not listed
- in the respective authors file or section, please do let us know.
- @node Contributing to the Reference Manual
- @section Contributing to the Reference Manual
- @itemize @bullet
- @item When writing documentation, please use
- @uref{https://en.wikipedia.org/wiki/Singular_they, gender-neutral wording}
- when referring to people, such as singular “they”, “their”, “them”, and so
- forth.
- @item Keep line length below 74 characters, except for URLs.
- URLs break in the PDF output when they contain linebreaks.
- @item Do not use tab characters (see chapter 2.1 texinfo manual)
- @item Write texts in the third person perspective.
- @c FIXME: This is questionable, it feels like bike shed painging to do
- @c this for several k lines. It only helps to jump between sentences in
- @c editors afaik.
- @c @item Use 2 spaces between sentences, so instead of:
- @c @example
- @c We do this and the other thing. This is done by foo.
- @c @end example
- @c Write:
- @c @example
- @c We do this and the other thing. This is done by foo.
- @c @end example
- @end itemize
- @node Contributing testcases
- @section Contributing testcases
- In the core of gnunet, we restrict new testcases to a small subset
- of languages, in order of preference:
- @enumerate
- @item C
- @item Portable Shell Scripts
- @item Python (3.7 or later)
- @end enumerate
- We welcome efforts to remove our existing python-2.7 scripts to
- replace them either with portable shell scripts or,
- at your choice, python-3.7+.
- If you contribute new python based testcases, we advise you to
- not repeat our past misfortunes and write the tests in a standard
- test framework like for example pytest.
- For writing portable shell scripts, these tools are useful:
- @uref{https://github.com/koalaman/shellcheck, Shellcheck},
- @uref{https://salsa.debian.org/debian/devscripts/blob/master/scripts/checkbashisms.pl, checkbashisms},
- @uref{http://www.etalabs.net/sh_tricks.html},
- @uref{https://wiki.ubuntu.com/DashAsBinSh},
- and @uref{https://mywiki.wooledge.org/Bashism}
- @c You could also run "bin/check_shell_script" (which we still have
- @c to write).
|