Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit e4c970c

Browse filesBrowse files
Update the contributing guide (rust-gamedev#638)
1 parent ac4b73b commit e4c970c
Copy full SHA for e4c970c

File tree

1 file changed

+110
-197
lines changed
Filter options

1 file changed

+110
-197
lines changed

‎CONTRIBUTING.md

Copy file name to clipboard
+110-197Lines changed: 110 additions & 197 deletions
Original file line numberDiff line numberDiff line change
@@ -1,234 +1,147 @@
11
# Contributing Guide
22

3-
## Workflow Overview
3+
Thank you for contributing to the newsletter! 💖
44

5-
- In the last week of the month, a [coordination issue][coordination]
6-
with an initial outline of this month's news is created by a coordinator.
5+
- [Writing Newsletter Sections](#writing-newsletter-sections)
6+
- [Templates](#templates)
7+
- [Style Guidelines](#style-guidelines)
8+
- [Becoming an Editor](#becoming-an-editor)
79

8-
News are mostly collected from [/r/rust_gamedev], [@rust_gamedev] on Twitter,
9-
and the "\#showcase-only" [Rust GameDev channel on Discord][gd-discord].
10-
Feel free to suggest sections if something cool isn't listed.
10+
## Writing Newsletter Sections
1111

12-
- During the following few days, contributors take "🆓 **free**" sections
13-
and submit corresponding PRs.
12+
At the end of each month, a [coordination issue] will be created by one of
13+
the newsletter editors. This signals that it's time to start writing and
14+
submitting sections!
1415

15-
Leave a comment like "Taking {section\_name\_1} and {section\_name\_2}"
16-
in the coordination issue to claim free sections you are interested in.
17-
Claimed sections are marked as "🚧 WIP by @nickname" in the plan.
18-
This is done to avoid work duplication.
16+
The coordination issue will contain the deadlines for submissions, as well
17+
as an initial outline for the newsletter's content. Each item in the outline
18+
will have a marker showing whether it is free for someone to pick up, and a
19+
suggested author.
1920

20-
You aren't required to be a project's author to write about it.
21+
> This outline is just a first draft - feel free to submit sections that
22+
aren't listed!
2123

22-
Some free sections have a nickname with a question mark in brackets
23-
(like "🆓 **free** (@nickname?)") -
24-
it's just an invitation to write the corresponding section if you want,
25-
but anyone is free to take it.
24+
If you would like to write a section for the newsletter, leave a comment on
25+
the coordination issue stating what you're planning to write about. This
26+
allows the editors to keep track of what's in progress, and prevents
27+
duplicated work.
2628

27-
- Submitted PRs are reviewed, tweaked if needed, and merged.
29+
Next, make your changes to the newsletter's main Markdown file - this is
30+
located in [`/content/news/{N}/index.md`][newsletter-source], where `{N}` is
31+
the newsletter's issue number. You can either do this by forking the repo,
32+
or by using GitHub's built-in editor. If you're picking up a section from
33+
the coordination issue's outline, use the provided links as a starting
34+
point.
2835

29-
Feel free to help with reviews.
36+
> **Please follow the [templates](#templates) and
37+
[style guidelines](#style-guidelines) provided below when writing your
38+
section, for consistency with the rest of the newsletter!**
3039

31-
- After all the contributors' PRs are processed, coordinators
32-
take and write all sections that no one has submitted.
40+
Once your edits are done, send a PR against the `source` branch (not
41+
`master`). Make sure that you mention the coordination issue in the PR
42+
description, and tick the 'Allow edits from maintainers' box to make it
43+
easier for editors to fix any issues.
3344

34-
- In the first week of the next month, the final draft is reviewed and merged.
45+
Upon submitting your PR, a CI build will run, checking that your changes
46+
meet the style guidelines. Please double check that this passes, and watch
47+
your GitHub notifications for any further review comments from the editors.
3548

36-
- A small PR that adds links to discussions
37-
(see the comment at the bottom of the draft) is made.
49+
### Templates
3850

39-
- A draft of the next newsletter is added to the repo.
51+
#### Games, Apps or Libraries
4052

41-
## PRs
53+
```md
54+
### [Game name]
4255

43-
- The current draft is `/posts/newsletter-{N}/index.md`,
44-
where `{N}` is this issue's number.
56+
![alt text](img)
57+
_optional image label_
4558

46-
- Place the sections accordingly to how they're ordered
47-
in the coordination issue.
59+
[Game name] ([GitHub], [Discord], [Twitter]) by [@nickname]
60+
is... {short project description in one sentence}.
4861

49-
- PRs are sent against the `source` branch.
62+
{An overview of the recent updates with links to more details}.
5063

51-
- Mention the coordination issue in the PR's description to link it all together.
64+
_Discussions: [/r/rust_gamedev](link), [Twitter](link), [etc](link)_
5265

53-
- Don't send PRs from your main branch, create a unique branch
54-
(named like `n14_zemeroth`, `n12_veloren`, etc) for each PR.
55-
This allows sending multiple simultaneous PRs
56-
and simplifies the creation of the next PRs.
66+
[Game name]: http://example.com
67+
```
5768

58-
- Make sure that the "Allow edits from maintainers" box is checked
59-
([avoid using org accounts][gh-org] if possible)
60-
\- it makes updating/tweaking the PR easier for the coordinators.
69+
#### Articles, Blog Posts or Videos
6170

62-
- Don't bother resolving merge conflicts in your PR
63-
as they will likely to re-appear after yet another PR is merged.
64-
It easier for a coordinator to update the PR right before merging it.
71+
```md
72+
### [Article name]
6573

66-
- Don't worry about cleaning up the PR's commit history
67-
\- we're squashing the PR into one commit before the merge anyway.
74+
![alt text](img)
75+
_optional image label_
6876

69-
[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
70-
[@rust_gamedev]: https://twitter.com/rust_gamedev
71-
[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
72-
[gd-discord]: https://discord.gg/yNtPTb2
73-
[gh-org]: https://github.com/isaacs/github/issues/1681
74-
75-
## Style
76-
77-
Please, try to maintain a consistent style with the rest of the newsletter.
78-
79-
- In general, the sections are expected to have this structure:
80-
81-
```markdown
82-
### [Project]
83-
84-
![alt image description](image.jpeg)
85-
_image caption_
86-
87-
[Project] by [@Author] is an awesome Rust project.
88-
89-
A paragraph or two with a summary and [useful links][other-link].
90-
91-
_Discussions:
92-
[/r/rust](https://reddit.com/r/rust/123456),
93-
[twitter](https://twitter.com/todo/status/123456)_
94-
95-
[Project]: https://first.link
96-
[@Author]: https://author.link
97-
[other-link]: https://other.link
98-
```
99-
100-
It was decided to use an image + short TLDR-overview section scheme
101-
because people, in general, don't follow the links in digests.
102-
This way readers should get a general idea of what's going on
103-
just by scrolling through the issue.
104-
105-
But please don't make the sections too long/detailed,
106-
otherwise, the newsletter as a whole will become too bloated.
107-
It's not a strict limit, but please try to keep the sections under 200 words.
108-
109-
- Games are quite visual-oriented media
110-
so the default section structure includes one image before the text.
111-
One image is preferred, two images are usually the max.
112-
113-
Keep the file size in mind: GIFs should be <2MB in size
114-
([ezgif.com] is a nice online tool for quick editing/optimization),
115-
static images should be optimized too
116-
(prefer jpeg to png for complex screenshots, etc).
117-
118-
All images should have a short but meaningful and descriptive alt text
119-
(more info about alt text [here](https://moz.com/learn/seo/alt-text)
120-
and [here](https://webaim.org/techniques/alttext/)).
121-
122-
Image files should be placed in the same folder as the post
123-
and be named using "\-" to split the words, not "\_".
124-
125-
- Markdown doesn't natively support videos,
126-
so the usual workaround is to include a clickable screenshot of the video:
127-
[example 1](https://rust-gamedev.github.io/posts/newsletter-012/#ochre-4k-intro),
128-
[example 2](https://rust-gamedev.github.io/posts/newsletter-012/#rust-n-games-talk).
129-
130-
- Contributions should be written clearly and simply so that
131-
they are accessible to readers for whom English is not their first language.
77+
[@nickname] published an [article] about...
78+
{overview what the resource is about}.
13279

133-
- Keep in mind that more than half of readers consume the newsletter
134-
using mobile devices.
135-
So try to avoid things that don't work well with small screens:
136-
nested lists, long titles, images with important small details,
137-
code blocks with long lines, etc.
80+
_Discussions: [/r/rust_gamedev](link), [Twitter](link), [etc](link)_
13881

139-
- Don't use fourth-level headers.
140-
Divide a section into subsections using a `------` line if needed.
82+
[Article name]: http://example.com
83+
```
14184

142-
- Avoid using bold, italic, etc rich formatting if possible.
85+
### Style Guidelines
14386

144-
- Write from a third-person perspective even if you're writing
145-
about your project's updates.
87+
- Run [MarkdownLint] against your changes with [our config][md-config].
88+
- Most editors have a MarkdownLint plugin available
89+
(e.g. [VS Code][md-vscode], [Sublime Text][md-sublime],
90+
[Vim][md-vim]).
91+
- Write in third-person perspective.
92+
- Lines should be no more than 80 characters long.
93+
- The rendered text should be under 1000 characters, and under 6
94+
paragraphs - this doesn't include markup/links/etc.
95+
- Do not use rich formatting (bold, italics, etc).
96+
- Avoid having multiple/nested bullet points.
97+
- This guideline may be relaxed if your project has multiple parts that
98+
aren't independent enough for their own sections.
99+
- Only include one image (<300kb) or GIF (<2.5mb).
100+
- Images should be placed before text, with an optional caption and
101+
mandatory alternate text for accessibility.
102+
- Unless essential to demonstrating your project, prefer static images
103+
over GIFs, to keep the file size down.
104+
- Use singular 'they' if you’re not sure what someone's pronouns are.
105+
- If a project has been featured in previous newsletters, try to focus on
106+
what's new rather than repeating previous content.
107+
- Donation/sponsorship links are allowed, but should not be the focus of a
108+
section.
146109

147-
- Use singular "they" if you're not sure what the person's pronouns are.
148-
149-
- If the project was already featured in the newsletter,
150-
use a one-sentence description at the beginning of the section
151-
as a reminder for readers
152-
and describe only the updates next.
153-
154-
- It's ok to add a donation/sponsorship link,
155-
but avoid making it a central point of your section.
156-
157-
- Discussion links should be added at the end of the (sub)section only if
158-
they already contain some actual interesting discussions.
159-
160-
[ezgif.com]: https://ezgif.com
161-
162-
## Formatting
163-
164-
As with the style, keeping the MD formatting consistent over the newsletter
165-
is important too.
166-
So, please, try to follow the formatting guidelines
167-
but don't worry too much about them:
168-
they are easier to fix for coordinators than issues with the content itself.
169-
170-
- Some of the basic formatting rules are enforced on CI using [markdownlint].
171-
172-
If you're working on your PR locally, consider installing
173-
one of the markdownlint extensions for your editor
174-
([vscode][vscode-lint], [sublime][sublime-lint], [vim][vim-lint]),
175-
otherwise please check the results of the CI run.
176-
177-
- Insert line breaks ([softbreak]) at 80 chars.
178-
179-
- Use [reference-style links][md-reflinks] and group them into blocks
180-
at the end of the (sub)sections.
181-
182-
URLs in these references block can break the 80 chars rule:
183-
184-
```markdown
185-
[Rapier][rapier], a new pure-rust physics engine,
186-
released an [official Bevy plugin][bevy-rapier].
187-
188-
[rapier]: https://rapier.rs
189-
[bevy-rapier]: https://www.dimforge.com/blog/2020/08/25/announcing-the-rapier-physics-engine/#reaching-out-to-other-communities-bevy-and-javascript
190-
```
191-
192-
- Use only dashes (`-`) for list items, `**` for bold, and `_` for italic.
193-
194-
- Don't use double linebreaks and trailing whitespaces.
110+
[coordination issue]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
111+
[@rust_gamedev]: https://twitter.com/rust_gamedev
112+
[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
113+
[gd-discord]: https://discord.gg/yNtPTb2
114+
[newsletter-source]: https://github.com/rust-gamedev/rust-gamedev.github.io/tree/source/content/news
115+
[markdownlint]: https://github.com/DavidAnson/markdownlint
116+
[md-config]: https://github.com/rust-gamedev/rust-gamedev.github.io/blob/source/.markdownlint.json
117+
[md-vscode]: https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint
118+
[md-sublime]: https://packagecontrol.io/packages/SublimeLinter-contrib-markdownlint
119+
[md-vim]: https://github.com/fannheyward/coc-markdownlint
195120

196-
- Only use inline code formatting ("\`mycrate\`") for crate names
197-
if this helps to avoid confusion.
121+
## Becoming an Editor
198122

199-
- Don't use GitHub shortcodes (like `:tada:`) - they won't be rendered
200-
by normal MD renderers. Use plain Unicode emojis instead.
123+
The newsletter is organized by a small volunteer group of editors. If you
124+
have some time to spare each month and want to help out, please get in
125+
touch, either via the [issue tracker][issues] or the
126+
[gamedev working group's Discord channel][wg-discord]. We'd be happy to have
127+
you!
201128

202-
- Consequent list item lines are indented with two spaces. Example:
129+
Editors have two main responsibilities:
203130

204-
```markdown
205-
- Aaaaaaaa aaaaaaa aaaaaaaaaa (Aaaaaaa) aaaaaaaa aaaa
206-
aaaaaa aaaa. Aaaaaa aaaa aa'a aaaaaaaa aaaaaa aaa aaaaaaa.
207-
aaaaa aaaaa aa aaaaaaaaa, aaaaaaa.
208-
- Aaaaaaaaaaaaa aaaaaaaaaaa aaa aaaaaaa aaaaa.
209-
- Aaaaaaaaaaaaaa aaaaaaa aaaaaaaa AaaAA aaaa aaa aaa'a
210-
aaaa aaaaa aaaaa `aaa_aaaaa` aaaa, aaaa `aaaa_aaaaa_aaa`,
211-
aaaaa.
212-
- Aaaaaaa aaaaa aaaaaa (aaaaaaa aaaaaaa).
213-
```
131+
- Gathering news and links over the course of the month
132+
- Reviewing, fixing and merging PRs
214133

215-
- Try to strip unneeded parts of URLs.
216-
For example, remove `www.`, `old.`, and description parts of Reddit links:
134+
Each month, one of the editors will be designated as the 'lead editor'. Their additional
135+
responsibilities are:
217136

218-
- `https://old.reddit.com/r/rust/comments/i7bcwu/introducing_bevy_a_refreshingly_simple_datadriven`
219-
- `https://reddit.com/r/rust/comments/i7bcwu/introducing_bevy`
137+
- Creating and maintaining the coordination issue
138+
- Preparing the final draft
139+
- Publishing the newsletter
140+
- Linking to the newsletter on social media
141+
- Creating the files for next month's newsletter
220142

221-
- Use a consistent list item termination
222-
(don't mix items ending with ";", ",", ".", etc).
143+
The lead editor role rotates every month, to spread the workload fairly, but
144+
you can opt out if you want.
223145

224-
[markdownlint]: https://github.com/DavidAnson/markdownlint
225-
[vscode-lint]: https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint
226-
[sublime-lint]: https://packagecontrol.io/packages/SublimeLinter-contrib-markdownlint
227-
[vim-lint]: https://github.com/fannheyward/coc-markdownlint
228-
[softbreak]: https://spec.commonmark.org/0.29/#soft-line-breaks
229-
[md-reflinks]: https://www.markdownguide.org/basic-syntax/#reference-style-links
230-
231-
Ping the coordinators in the current coordination issue
232-
or WG's Discord channel if there are any questions.
233-
If something in this guide is unclear file an issue
234-
and we'll try to improve it.
146+
[issues]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues
147+
[wg-discord]: https://discord.gg/DACMGKM5en

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.