CONTRIBUTING.md 2.74 KB
Newer Older
Eugen Rochko's avatar
Eugen Rochko committed
1
Contributing
Eugen Rochko's avatar
Eugen Rochko committed
2 3
============

4
Thank you for considering contributing to Mastodon 🐘
Eugen Rochko's avatar
Eugen Rochko committed
5

Eugen Rochko's avatar
Eugen Rochko committed
6
You can contribute in the following ways:
Eugen Rochko's avatar
Eugen Rochko committed
7

Eugen Rochko's avatar
Eugen Rochko committed
8 9 10 11
- Finding and reporting bugs
- Translating the Mastodon interface into various languages
- Contributing code to Mastodon by fixing bugs or implementing features
- Improving the documentation
12

13 14
If your contributions are accepted into Mastodon, you can request to be paid through [our OpenCollective](https://opencollective.com/mastodon).

Eugen Rochko's avatar
Eugen Rochko committed
15
## Bug reports
Eugen Rochko's avatar
Eugen Rochko committed
16

sclaire-1's avatar
sclaire-1 committed
17
Bug reports and feature suggestions must use descriptive and concise titles and be submitted to [GitHub Issues](https://github.com/tootsuite/mastodon/issues). Please use the search function to make sure that you are not submitting duplicates, and that a similar report or request has not already been resolved or rejected.
Eugen Rochko's avatar
Eugen Rochko committed
18

Eugen Rochko's avatar
Eugen Rochko committed
19
## Translations
Eugen Rochko's avatar
Eugen Rochko committed
20

21 22
You can submit translations via [Crowdin](https://crowdin.com/project/mastodon). They are periodically merged into the codebase.

23
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/mastodon/localized.svg)](https://crowdin.com/project/mastodon)
Eugen Rochko's avatar
Eugen Rochko committed
24

Eugen Rochko's avatar
Eugen Rochko committed
25
## Pull requests
Eugen Rochko's avatar
Eugen Rochko committed
26

27
**Please use clean, concise titles for your pull requests.** Unless the pull request is about refactoring code, updating dependencies or other internal tasks, assume that the person reading the pull request title is not a programmer or Mastodon developer, but instead a Mastodon user or server administrator, and **try to describe your change or fix from their perspective**. We use commit squashing, so the final commit in the main branch will carry the title of the pull request, and commits from the main branch are fed into the changelog. The changelog is separated into [keepachangelog.com categories](https://keepachangelog.com/en/1.0.0/), and while that spec does not prescribe how the entries ought to be named, for easier sorting, start your pull request titles using one of the verbs "Add", "Change", "Deprecate", "Remove", or "Fix" (present tense).
Eugen Rochko's avatar
Eugen Rochko committed
28

29 30 31 32 33 34 35 36 37
Example:

|Not ideal|Better|
|---|----|
|Fixed NoMethodError in RemovalWorker|Fix nil error when removing statuses caused by race condition|

It is not always possible to phrase every change in such a manner, but it is desired.

**The smaller the set of changes in the pull request is, the quicker it can be reviewed and merged.** Splitting tasks into multiple smaller pull requests is often preferable.
Eugen Rochko's avatar
Eugen Rochko committed
38

Eugen Rochko's avatar
Eugen Rochko committed
39
**Pull requests that do not pass automated checks may not be reviewed**. In particular, you need to keep in mind:
Eugen Rochko's avatar
Eugen Rochko committed
40

Eugen Rochko's avatar
Eugen Rochko committed
41 42 43
- Unit and integration tests (rspec, jest)
- Code style rules (rubocop, eslint)
- Normalization of locale files (i18n-tasks)
44

Eugen Rochko's avatar
Eugen Rochko committed
45
## Documentation
46

Joe's avatar
Joe committed
47
The [Mastodon documentation](https://docs.joinmastodon.org) is a statically generated site. You can [submit merge requests to tootsuite/documentation](https://github.com/tootsuite/documentation).