diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index eb48e4785049cf76ab210f68af16f9d051aed637..c00eafba0527c4fb872d01908ddcf3423a05a0a7 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -9,11 +9,18 @@ When submitting merge requests to existing files, unless you have prior agreemen
 * Do not include changes that are not relevant to the merge request description/message
 * Keep merge requests to a single topical change (e.g. don't combine new features with bug fixes with typo-fixes and style changes)
 
+### Commit content
 In general, if it's a large set of changes, your best bet of getting it accepted and merged into the repo would be to discuss the concept of the change with the developers in the [Synchronet Programming conference](http://web.synchro.net/?page=001-forum.ssjs&sub=syncprog) **first**.
 
 When modifying the C/C++ source files:
-* Do not call functions from `ctype.h` (e.g. `isprint`, `isspace`, `isdigit`, etc.) - use the `gen_defs.h IS_*` macros instead.
+* Do not call functions from `ctype.h` (e.g. `isprint()`, `isspace()`, `isdigit()`, etc.) - use the `gen_defs.h IS_*` macros instead.
+* Use safe string handling (e.g. `SAFECOPY()` instead of `strcpy()`, `SAFEPRINTF()` or `safe_snprintf()` instead of `sprintf()`).
 
+### Commit messages
+* Try to keep the commit title (first line) to 70 characters or less.
+* When a comment is related to an [issue](https://gitlab.synchro.net/main/sbbs/-/issues), use the proper commit message syntax foir automatic issue management as documented [here](https://docs.gitlab.com/ce/user/project/issues/managing_issues.html#closing-issues-automatically).
+
+### Other types of contributions
 If you were interested in contributing money, not code, then paypal to rob at synchro dot net.
 
 Thank you for contributing!
\ No newline at end of file