Annotation of embedaddon/pimd/CONTRIBUTING.md, revision 1.1.1.1
1.1 misho 1: Contributing to pimd
2: ====================
3:
4: pimd is an old project. As such it has a lot of history that sometimes
5: creep up through the cracks. Bugs!
6:
7: Bugs can be missing or unclear documentation, faulty legacy behavior,
8: missing key features or support for a new cool operating system. Or
9: simple things, like speling errors or too frequent, or missing logs.
10:
11: pimd exists on [GitHub][github] for this exact purpose -- to fix bugs,
12: collaboratively.
13:
14: We welcome any and all help in the form of bug reports, fixes, patches
15: for new features -- *preferably as GitHub pull requests*, submitting a
16: pull request practically guarantees inclusion ... other methods are of
17: course also possible: emailing the maintainer a patch or even a raw
18: file, or simply emailing a feature request or an alert for a problem.
19: For email questions/requests/alerts there is always the risk of memory
20: exhaustion on the part of the maintainer.
21:
22:
23: Coding Style
24: ------------
25:
26: > **Tip:** Adapt your code to what the surrounding code looks like!
27:
28: pimd is written in C. C is an old language and sometimes that age is
29: clearly visible. The current maintainer has tried to (re)enforce a
30: consistent and more modern C style, without having to completly
31: re-indent the whole code base.
32:
33: First of all, lines are allowed to be longer than 72 characters these
34: days. In fact, there exist no enforced maximum, but keeping it around
35: 100 chars is OK.
36:
37: pimd use leading four spaces in functions and structs. The next level
38: use eight spaces, but the original authors used tab for that level. A
39: `switch()` has its `case` statements indented four spaces ... but then
40: it is more or less [KNF][].
41:
42: In Emacs this coding style can be achieved by using the following
43: footer applied to a C file:
44:
45: /**
46: * Local Variables:
47: * version-control: t
48: * indent-tabs-mode: t
49: * c-file-style: "ellemtel"
50: * c-basic-offset: 4
51: * End:
52: */
53:
54: The current maintainer has considered shifting the original coding
55: style to FULL [KNF][] several times.
56:
57:
58: GIT Submodules
59: --------------
60:
61: pimd is maintained using the GIT version control system. It also use a
62: Git submodule, [libite][], to provide several utilities functions, like
63: `pidfile()` and the OpenBSD `strlcpy()` family of functions.
64:
65: Make sure to `git submodule update` after a `git pull`, in addition to
66: `git submodule update --init` when you clone the repository initially.
67:
68:
69: Commit Messages
70: ---------------
71:
72: Commit messages exist to track *why* a change was made. Try to be as
73: clear and concise as possible in your commit messages. Example from
74: the [Pro Git][gitbook] online book:
75:
76: Brief, but clear and concise summary of changes
77:
78: More detailed explanatory text, if necessary. Wrap it to about 72
79: characters or so. In some contexts, the first line is treated as
80: the subject of an email and the rest of the text as the body. The
81: blank line separating the ummary from the body is critical (unless
82: you omit the body entirely); tools like rebase can get confused if
83: you run the two together.
84:
85: Further paragraphs come after blank lines.
86:
87: - Bullet points are okay, too
88:
89: - Typically a hyphen or asterisk is used for the bullet, preceded
90: by a single space, with blank lines in between, but conventions
91: vary here
92:
93: Another good *counter* example [is this][rambling] ...
94:
95:
96: Target Systems
97: --------------
98:
99: pimd mainly targets modern UNIX systems and we semi-regularly test it on
100: both Debian and Ubuntu for Linux, FreeBSD, NetBSD, and OpenBSD. Please
101: consider these targets when submitting new features. If you cannot test
102: on other operating systems yourself, be prepared that your feature/fix
103: will likely be delayed by the maintaier, who will attempt to test and in
104: some cases port the feature for you.
105:
106:
107: Code of Conduct
108: ---------------
109:
110: It is expected of everyone engaging in the project to, in the words of
111: Bill & Ted; [be excellent to each other][conduct].
112:
113:
114: [github]: https://github.com/troglobit/pimd/
115: [KNF]: https://en.wikipedia.org/wiki/Kernel_Normal_Form
116: [libite]: https://github.com/troglobit/libite
117: [gitbook]: https://git-scm.com/book/ch5-2.html
118: [rambling]: http://stopwritingramblingcommitmessages.com/
119: [conduct]: https://github.com/troglobit/pimd/blob/master/CODE-OF-CONDUCT.md
120:
121: <!--
122: -- Local Variables:
123: -- mode: markdown
124: -- End:
125: -->
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>