HACKING (1855B)
1 **************** 2 * CONTRIBUTING * 3 **************** 4 5 Thanks for your interest in contributing! Here a few rules and stuff to keep 6 the project consistent and (relatively) easy to mantain. 7 8 SETUP 9 ===== 10 11 1. Clone the project 12 2. Make a new branch: 13 ~~~ 14 git checkout -b ft/feature-name 15 ~~~ 16 3. Do your changes 17 4. Send patches 18 19 SOURCE 20 ====== 21 22 Project is written in POSIX-compliant (non-GNU) C99, and Slash itself. If 23 justified, it can be ok to add a new language. Languages that are NOT gonna be 24 merged: 25 26 * C++ 27 * C# 28 * Rust 29 * Zig 30 * Underdocumented dialects of languages 31 32 CONVENTIONS 33 =========== 34 35 You shall use hard tabs, equivalent to eight characters. You also must limit 36 your column count to 80 characters HARD, although messages must not be cut out, 37 as that would make them impossible to grep for. A function implementation's 38 type must be in the line before the name, and functions not taking anything 39 must still fill in the prototype with void. All comments must be in C-style /* 40 and */ (the use of // is forbidden). Data shall be separated from code except 41 on `for` loops. This rule must be applied recursively to each scope. 42 43 AI 44 == 45 46 With the rising use of AI, it has became sensible to restrict the use of AI. 47 48 AI can be used to generate code, or help debug, but the user must have plenty 49 of knowledge about the generated source(s), a good way is trying to read the 50 code after you paste it, or to type it out yourself. 51 52 When debugging, AI will often leave comments like // FIX: or similar. These 53 clutter the codebase with comment only a single programmer understands. 54 55 Of course, if a bug on this codebase becomes infamous, you can always leave a 56 note like: 57 58 /* fixes the $BUG bug 59 * - your name 60 */ 61 62 AI is completely forbidden for documentation. 63