contributing.texi 4.1 KB

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