whats-new: link to announcement blog post
[lttng-docs.git] / contrib-guide.md
CommitLineData
5e0cbfb0
PP
1Contributor's guide
2===================
3
4This guide presents the structure and conventions of the LTTng
5Documentation's source. Make sure you read it thoroughly before
6contributing a change.
7
8
e70fc4f4 9Branches
89415a66
PP
10--------
11
12The online documentation published at <http://lttng.org/docs/> is always
13compiled from the sources of this repository's latest stable branch.
14The `master` branch contains the current documentation of the upcoming
15LTTng release.
16
17
e70fc4f4 18Structure of sources
89415a66 19--------------------
5e0cbfb0
PP
20
21`toc/docs.yml` is a YAML tree of all chapters, sections and subsections.
22It indicates which unique ID is linked to which position in the
23hierarchy and its true title.
24
25In the `contents` directory, the `preface.md` file is the preface contents.
26Each chapter has its own directory (directory names are not significant).
27Within those, `intro.md` files are partial introductions and then each
28section has its own directory, and so on, unless a section has no
29subsections, in which case all its contents is in a single Markdown file
30named _more or less_ like its ID.
31
32Each Markdown file begins with a YAML front matter which only contains
33the unique ID of this chapter/section:
34
35```yaml
36---
37id: unique-id-goes-here
38---
39
40First paragraph goes here.
41```
42
43Editable image sources are placed in `images/src` and their rendered
44equivalents are located in `images/export`.
45
46`tools/checkdocs.py` is a Python 3 script which may be used to find
47typical errors in the whole documentation (dead internal links,
48common grammar mistakes, etc.). It needs the
49[`termcolor`](https://pypi.python.org/pypi/termcolor) Python package.
50Run it from the repository's root:
51
52 tools/checkdocs.py
53
54and it will potentially output a list of errors and warnings.
55
56
e70fc4f4 57Format of sources
5e0cbfb0
PP
58-----------------
59
60The sources are made of a fusion of Markdown and HTML processed by
61[kramdown](http://kramdown.gettalong.org/). Markdown is preferred,
62HTML being only used for specific cases that need special formatting
63not available using plain Markdown. The kramdown processor is clever
64enough to support both languages in the same file, even in the same
65paragraph!
66
67
68### HTML specifics
69
70Here's a list of HTML blocks and inline code used throughout the
71document. If you need to contribute, please use them when needed to
72preserve the document's visual consistency.
73
74
e70fc4f4 75#### Tip/note/warning/error blocks
5e0cbfb0
PP
76
77Tip/note block:
78
79```html
80<div class="tip">
81 <p>
82 <span class="t">Title goes here followed by colon:</span>Text goes
83 here; plain HTML.
84 </p>
85 <p>
86 Multiple paragraphs is allowed.
87 </p>
88</div>
89```
90
1c13c8bd
PP
91Replace the `tip` class with `warn` for a warning block, and with `err`
92for an error message block (when JavaScript is needed but is disabled, etc.).
5e0cbfb0 93
1c13c8bd
PP
94Title should be `Tip:` for a tip, `Note:` for a note, `Warning:` for a
95warning, and `Error:` for an error.
5e0cbfb0 96
e70fc4f4
PP
97
98#### External links
5e0cbfb0
PP
99
100Internal links should always use Markdown
101(`[caption](#doc-section)`). External links, however, need a special
102style and must use the `<a>` tag with the `ext` CSS class:
103
104```html
105The LTTng Documentation is
106<a href="https://github.com/lttng/lttng-docs" class="ext">public</a>.
107```
108
cc3ab47f
PP
109Sometimes, however, it is necessary to write internal links in plain
110HTML, for example in tip blocks, since Markdown code is not processed.
111In these cases, add the `int` CSS class as a hint to prevent the static
112analyzer from complaining (`tools/checkdocs.py`).
113
5e0cbfb0 114
e70fc4f4 115#### Abbreviations
5e0cbfb0
PP
116
117Use `<abbr>` for describing abbreviations. This should only be used
118for the first use of the abbreviation:
119
120```html
121The <abbr title="Linux Trace Toolkit: next generation">LTTng</abbr>
122project is an open source system software package [...]
123```
124
125
e70fc4f4 126#### Non-breaking spaces
5e0cbfb0
PP
127
128Sometimes, a non-breaking space HTML entity (`&nbsp;`) needs to be
129explicitly written.
130
131Examples:
132
133```html
134The size of this file is 1039&nbsp;bytes.
135
136This integer is displayed in base&nbsp;16.
137
138A check is performed every 3000&nbsp;ms.
139```
140
141
e70fc4f4 142#### Placeholders in inline code
5e0cbfb0
PP
143
144You must use `<em>` to emphasize a placeholder within a `<code>` tag
145because Markdown backticks (<code>`</code>) always render their
146content literally:
147
148```html
149Name your file <code>something_<em>sys</em>.c</code>, where
150<code><em>sys</em></code> is your system name.
151```
152
153
e70fc4f4 154#### Terminal boxes
5e0cbfb0
PP
155
156A terminal box, where command lines are shown, is a simple `<pre>`
157with the `term` class:
158
159```html
160<pre class="term">
161echo This is a terminal box
162</pre>
163```
164
165Do not prefix command lines with prompts (`$`/`#`) since this makes
166copy/paste operations painful.
167
168You may use `<strong>` tags to emphasize a part of the command line:
169
170```html
171<pre class="term">
172echo This is a <strong>terminal</strong> box
173</pre>
174```
175
176Results of commands, if needed, should be presented in a simple
177`text` kramdown code block:
178
179<pre>
180~~~ text
181[15:30:34.835895035] (+?.?????????) hostname hello_world: { cpu_id = 1 }, { my_int = 8, char0 = 68, char1 = 97, product = "DataTraveler 2.0" }
182[15:30:42.262781421] (+7.426886386) hostname hello_world: { cpu_id = 1 }, { my_int = 9, char0 = 80, char1 = 97, product = "Patriot Memory" }
183[15:30:48.175621778] (+5.912840357) hostname hello_world: { cpu_id = 1 }, { my_int = 10, char0 = 68, char1 = 97, product = "DataTraveler 2.0" }
184~~~
185</pre>
186
187
e70fc4f4 188#### Images
5e0cbfb0
PP
189
190Use
191
192```html
18729dbb 193<figure class="img img-70">
4280f592 194 <img src="/images/docs26/image-name.png" alt="Short description">
18729dbb 195</figure>
5e0cbfb0
PP
196```
197
18729dbb
PP
198Replace `docs26` with the appropriate version tag depending on the
199checked out branch.
200
5e0cbfb0
PP
201to display an image. Change `img-70` to `img-` followed by the
202width percentage you wish.
203
5e0cbfb0 204
e70fc4f4 205Convention
5e0cbfb0
PP
206----------
207
208A few rules to comply with in order to keep the text as
209consistent as possible:
210
211 * Use _user space_, not _userspace_ nor _user-space_.
212 (neither _user land_).
213 * Use _file system_, not _filesystem_.
214 * Use _use case_, not _use-case_ nor _usecase_.
215 * Use _the C standard library_, not _libc_.
216 * Use _log level_, not _loglevel_.
217 * Use complete LTTng project names: _LTTng-modules_, _LTTng-UST_ and
218 _LTTng-tools_, not _modules_, _UST_ and _tools_.
219 * All code snippets should use 4 spaces for indentation (even C)
220 so that they are not too large.
221 * Prefer emphasis (Markdown: `_something_`, HTML: `<em>something</em>`)
222 to strong (Markdown: `**something**`, HTML: `<strong>something</strong>`)
223 for emphasizing text.
224 * Try to stay behind the 72th column mark if possible, and behind
225 the 80th column otherwise.
226 * Do not end directory paths with a forward slash
227 (good: `include/trace/events`, bad: `include/trace/events/`).
228 * Keep the text as impersonal as possible (minimize the use of
229 _I_, _we_, _us_, etc.), except for user guides/tutorials where
89325d86
PP
230 _we_ have an ongoing example with _you_.
231 * Minimize the use of the future tense (_will_).
c4e2d038 232 * Do not use Latin abbreviations (_e.g._, _i.e._, _etc._).
7d603874
PP
233
234
e70fc4f4 235Committing
7d603874
PP
236----------
237
238If you make a change to a single contents file, prefix your Git commit
239message's first line with the file ID followed by `: `, e.g:
240
241 archlinux: minor fix
This page took 0.031696 seconds and 4 git commands to generate.