From a1dc9d10a889758055ba2b4f424fc01c27162937 Mon Sep 17 00:00:00 2001 From: Cem Keylan Date: Wed, 9 Sep 2020 19:15:02 +0300 Subject: add contribution --- contribution.texi | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 contribution.texi (limited to 'contribution.texi') diff --git a/contribution.texi b/contribution.texi new file mode 100644 index 0000000..a34291e --- /dev/null +++ b/contribution.texi @@ -0,0 +1,72 @@ +@macro contid{id} +[@anchor{\id\}\id\] +@end macro + +@node Contribution Guidelines +@chapter Contribution Guidelines + +Thanks for taking your time to contribute! To maintain stylistic behaviour +throughout the repositories, one must adhere to these guidelines. Exceptions and +changes may occur with good reasoning. + +@section General Conventions -- GN + +These apply to each and every file on the repositories. + +@itemize +@item +Try to keep the file readable. @contid{GN0010} +@itemize +@item +Characters on a line shouldn't exceed 100 characters excluding indentation. @contid{GN0011} +@item +Make sure you don't have code commented out during commit. Uncomment them +or remove them completely. @contid{GN0012} +@item +Do not add comments following the code, add them to the top of the code. It +makes it harder to read, and lines longer. @contid{GN0013} +Here is an example: +@example +# Good way of commenting. +your code goes here + +your code goes here # Avoid this way of commenting. +@end example +@end itemize +@end itemize + +@section Shell conventions -- SH + +Shell is central to Carbs Linux projects. Most of the tools and packages are +written in POSIX sh. + +@itemize +@item +Use 4 spaces for indentation, instead of tabs. @contid{SH0010} +@item +Make sure you don't use bash-specific code. @contid{SH0020} +@item +Make sure you lint your code with @command{shellcheck} and if you are new to +POSIX sh, use @command{checkbashisms}. @contid{SH0030} +@item +Don't spawn new processes if you don't absolutely need to, especially during +string manipulation. @contid{SH0040} +@itemize +@item +Never use a program for text manupilation that isn't defined in the POSIX +standard. This includes @command{gawk} and @command{perl}. @contid{SH0041} +@item +Instead of @code{$(basename $file)}, use @code{$@{file##*@}}. @contid{SH0042} +@item +Instead of @code{$(dirname $file)}, use @code{$@{file%/*@}}. @contid{SH0043} +@end itemize +@example +# This is the same thing as @code{basename /path/to/test.asc .asc} + +$ file=/path/to/test.asc file=$@{file##*/@} file=$@{file%.asc@} +$ echo $file +test +@end example +@item +Instead of backticks, use @verb{|$(..)|}. @contid{SH0050} +@end itemize -- cgit v1.2.3