permalink |
---|
/contributing/ |
All contributors must abide by our Code of Conduct.
This project uses [Martha's Rules][marthas-rules] Minahan1986 for consensus decision making:
-
Before each meeting, anyone who wishes may sponsor a proposal by filing an issue in the GitHub repository tagged "proposal". Proposals must be filed at least 24 hours before a meeting in order to be considered at that meeting, and must include:
- a one-line summary (the subject line of the issue)
- the full text of the proposal
- any required background information
- pros and cons
- possible alternatives
-
A quorum is established in a meeting if half or more of voting members are present.
-
Once a person has sponsored a proposal, they are responsible for it. The group may not discuss or vote on the issue unless the sponsor or their delegate is present. The sponsor is also responsible for presenting the item to the group.
-
After the sponsor presents the proposal, a "sense" vote is cast for the proposal prior to any discussion:
- Who likes the proposal?
- Who can live with the proposal?
- Who is uncomfortable with the proposal?
-
If all of the group likes or can live with the proposal, it passes immediately.
-
If most of the group is uncomfortable with the proposal, it is postponed for further rework by the sponsor.
-
Otherwise, members who are uncomfortable can briefly state their objections. A timer is then set for a brief discussion moderated by the facilitator. After 10 minutes or when no one has anything further to add (whichever comes first), the facilitator calls for a yes-or-no vote on the question: "Should we implement this decision over the stated objections?" If a majority votes "yes" the proposal is implemented. Otherwise, the proposal is returned to the sponsor for further work.
-
The commands to rebuild the site, run a server, produce the PDF version, and check internal consistency are stored in
Makefile
and use the tools inbin/
. Runmake
on its own to get a list of available actions. -
Each chapter or appendix is identified by a slug such as
some-topic
. Its text lives inslug/index.md
, and there is an entry under thechapters
key in_config.yml
with its slug and its title. This list controls ordering. -
Use only level-2 headings within chapters and appendices and use "Title Case" the titles.
-
To create cross-references:
- Use
{% raw %}<span g="key">some text</span>{% endraw %}
for glossary entries. The key must appear in_data/glossary.yml
. - Use
{% raw %}<span x="slug"/>{% endraw %}
to cross-reference a chapter or appendix. The slugs must appear in_config.yml
. - Use
{% raw %}<span f="key"/>{% endraw %}
to cross-reference a figure and{% raw %}<span t="key"/>{% endraw %}
to cross-reference a table. - Use
{% raw %}<cite>key,key</cite>{% endraw %}
for bibliography citations. The keys must appear inbibliography/index.md
.
- Use
-
Use
{% raw %}<span i="term">text</span>{% endraw %}
to add an index entry. This can be combined with a glossary reference, as in{% raw %}<span i="term" g="key">text</span>{% endraw %}
. -
To include a code sample use
{% raw %}{% include code file="name.ext" %}{% endraw %}
. The path to the file must be relative to the including file. in most cases it will be in the same directory as the chapter or appendix. -
To continue a paragraph that has been interrupted by a code sample or something else, use:
{: .continue} text of paragraph
This has no effect on the appearance of the HTML, but prevents an unwanted paragraph indent in the PDF version.
-
To create a callout box, use:
<div class="callout" markdown="1"> ### Title of callout text of callout </div>
Use "Sentence case" for the callout's title, and please put blank lines before and after the opening and closing
<div>
markers. -
To insert an external link, use
{% raw %}[text][tag]{% endraw %}
in the body, then add the link to the Kramdownlink_defs
section in_config.yml
. The clumsy syntax is necessary to get around [this bug][jekyll-bug]. -
To create a figure, put the image file in the same directory as the chapter or appendix and use this to include it:
{% raw %}{% include figure id="label" img="file.svg" alt="short text" cap="full caption" %}{% endraw %}
where
label
ischapter-slug-image-slug
,alt
is just a few words long (plain text), andcap
is the full caption that will appear inline (Markdown). -
Use [diagrams.net][diagrams] to create SVG diagrams. Avoid screenshots when possible, since getting them to display correctly in print is a pain.
Note: you will need LaTeX in order to build the PDF version of this book. After installing it, you will need these packages:
babel-english
babel-greek
cbfonts
enumitem
greek-fontenc
keystroke
listings
textgreek
tocbibind