CONTRIBUTING.md 8.09 KB
Newer Older
1
2
# CONTRIBUTING GUIDELINES

3
Oh-My-Zsh is a community-driven project. Contribution is welcome, encouraged, and appreciated.
ncanceill's avatar
ncanceill committed
4
It is also essential for the development of the project.
5

6
7
First, please take a moment to review our [code of conduct](CODE_OF_CONDUCT.md).

8
These guidelines are an attempt at better addressing the huge amount of pending
ncanceill's avatar
ncanceill committed
9
issues and pull requests. Please read them closely.
10

11
Foremost, be so kind as to [search](#use-the-search-luke). This ensures any contribution
ncanceill's avatar
ncanceill committed
12
you would make is not already covered.
13

14
15
16
17
18
19
20
21
22
<!-- TOC updateonsave:true depthfrom:2 -->

- [Reporting Issues](#reporting-issues)
  - [You have a problem](#you-have-a-problem)
  - [You have a suggestion](#you-have-a-suggestion)
- [Submitting Pull Requests](#submitting-pull-requests)
  - [Getting started](#getting-started)
  - [You have a solution](#you-have-a-solution)
  - [You have an addition](#you-have-an-addition)
Marc Cornellà's avatar
Marc Cornellà committed
23
24
25
26
27
28
- [Use the Search, Luke](#use-the-search-luke)
- [Commit Guidelines](#commit-guidelines)
  - [Format](#format)
  - [Style](#style)
- [Volunteer](#volunteer)

29
<!-- /TOC -->
30

ncanceill's avatar
ncanceill committed
31
## Reporting Issues
32

ncanceill's avatar
ncanceill committed
33
34
35
36
### You have a problem

Please be so kind as to [search](#use-the-search-luke) for any open issue already covering
your problem.
37

ncanceill's avatar
ncanceill committed
38
If you find one, comment on it so we can know there are more people experiencing it.
39

40
If not, look at the [Troubleshooting](https://github.com/ohmyzsh/ohmyzsh/wiki/Troubleshooting)
ncanceill's avatar
ncanceill committed
41
page for instructions on how to gather data to better debug your problem.
42

ncanceill's avatar
ncanceill committed
43
44
Then, you can go ahead and create an issue with as much detail as you can provide.
It should include the data gathered as indicated above, along with:
45

ncanceill's avatar
ncanceill committed
46
47
48
1. How to reproduce the problem
2. What the correct behavior should be
3. What the actual behavior is
49

ncanceill's avatar
ncanceill committed
50
51
Please copy to anyone relevant (_eg_ plugin maintainers) by mentioning their GitHub handle
(starting with `@`) in your message.
52

ncanceill's avatar
ncanceill committed
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
We will do our very best to help you.

### You have a suggestion

Please be so kind as to [search](#use-the-search-luke) for any open issue already covering
your suggestion.

If you find one, comment on it so we can know there are more people supporting it.

If not, you can go ahead and create an issue. Please copy to anyone relevant (_eg_ plugin
maintainers) by mentioning their GitHub handle (starting with `@`) in your message.

## Submitting Pull Requests

### Getting started
68

ncanceill's avatar
ncanceill committed
69
70
You should be familiar with the basics of
[contributing on GitHub](https://help.github.com/articles/using-pull-requests) and have a fork
71
[properly set up](https://github.com/ohmyzsh/ohmyzsh/wiki/Contribution-Technical-Practices).
72

ncanceill's avatar
ncanceill committed
73
You MUST always create PRs with _a dedicated branch_ based on the latest upstream tree.
74

ncanceill's avatar
ncanceill committed
75
76
77
78
If you create your own PR, please make sure you do it right. Also be so kind as to reference
any issue that would be solved in the PR description body,
[for instance](https://help.github.com/articles/closing-issues-via-commit-messages/)
_"Fixes #XXXX"_ for issue number XXXX.
79

ncanceill's avatar
ncanceill committed
80
### You have a solution
81

ncanceill's avatar
ncanceill committed
82
Please be so kind as to [search](#use-the-search-luke) for any open issue already covering
ncanceill's avatar
ncanceill committed
83
your [problem](#you-have-a-problem), and any pending/merged/rejected PR covering your solution.
84
85
86

If the solution is already reported, try it out and +1 the pull request if the
solution works ok. On the other hand, if you think your solution is better, post
ncanceill's avatar
ncanceill committed
87
it with a reference to the other one so we can have both solutions to compare.
88

89
If not, then go ahead and submit a PR. Please copy to anyone relevant (e.g. plugin
ncanceill's avatar
ncanceill committed
90
maintainers) by mentioning their GitHub handle (starting with `@`) in your message.
91

ncanceill's avatar
ncanceill committed
92
93
### You have an addition

94
Please [do not](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes#dont-send-us-your-theme-for-now)
ncanceill's avatar
ncanceill committed
95
96
send themes for now.

97
98
Please be so kind as to [search](#use-the-search-luke) for any pending, merged or rejected Pull Requests
covering or related to what you want to add.
ncanceill's avatar
ncanceill committed
99
100
101
102
103
104

If you find one, try it out and work with the author on a common solution.

If not, then go ahead and submit a PR. Please copy to anyone relevant (_eg_ plugin
maintainers) by mentioning their GitHub handle (starting with `@`) in your message.

ncanceill's avatar
ncanceill committed
105
106
For any extensive change, _eg_ a new plugin, you will have to find testers to +1 your PR.

ncanceill's avatar
ncanceill committed
107
108
109
110
----

## Use the Search, Luke

111
_May the Force (of past experiences) be with you_
ncanceill's avatar
ncanceill committed
112
113
114
115
116
117

GitHub offers [many search features](https://help.github.com/articles/searching-github/)
to help you check whether a similar contribution to yours already exists. Please search
before making any contribution, it avoids duplicates and eases maintenance. Trust me,
that works 90% of the time.

118
You can also take a look at the [FAQ](https://github.com/ohmyzsh/ohmyzsh/wiki/FAQ)
ncanceill's avatar
ncanceill committed
119
to be sure your contribution has not already come up.
120

ncanceill's avatar
ncanceill committed
121
122
If all fails, your thing has probably not been reported yet, so you can go ahead
and [create an issue](#reporting-issues) or [submit a PR](#submitting-pull-requests).
123
124
125

----

126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
## Commit Guidelines

Oh My Zsh uses the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)
specification. The automatic changelog tool uses these to automatically generate
a changelog based on the commit messages. Here's a guide to writing a commit message
to allow this:

### Format

```
type(scope)!: subject
```

- `type`: the type of the commit is one of the following:

  - `feat`: new features.
  - `fix`: bug fixes.
  - `docs`: documentation changes.
  - `refactor`: refactor of a particular code section without introducing
    new features or bug fixes.
  - `style`: code style improvements.
  - `perf`: performance improvements.
  - `test`: changes to the test suite.
  - `ci`: changes to the CI system.
  - `build`: changes to the build system (we don't yet have one so this shouldn't apply).
  - `chore`: for other changes that don't match previous types. This doesn't appear
    in the changelog.

- `scope`: section of the codebase that the commit makes changes to. If it makes changes to
  many sections, or if no section in particular is modified, leave blank without the parentheses.
  Examples:

  - Commit that changes the `git` plugin:
  ```
  feat(git): add alias for `git commit`
  ```

  - Commit that changes many plugins:
  ```
  style: fix inline declaration of arrays
  ```

  For changes to plugins or themes, the scope should be the plugin or theme name:

  -`fix(agnoster): commit subject`
  -`fix(theme/agnoster): commit subject`

- `!`: this goes after the `scope` (or the `type` if scope is empty), to indicate that the commit
  introduces breaking changes.

  Optionally, you can specify a message that the changelog tool will display to the user to indicate
  what's changed and what they can do to deal with it. You can use multiple lines to type this message;
  the changelog parser will keep reading until the end of the commit message or until it finds an empty
  line.

  Example (made up):

  ```
  style(agnoster)!: change dirty git repo glyph

  BREAKING CHANGE: the glyph to indicate when a git repository is dirty has
  changed from a Powerline character to a standard UTF-8 emoji. You can
  change it back by setting `ZSH_THEME_DIRTY_GLYPH`.

  Fixes #420

  Co-authored-by: Username <email>
  ```

- `subject`: a brief description of the changes. This will be displayed in the changelog. If you need
  to specify other details you can use the commit body but it won't be visible.

  Formatting tricks: the commit subject may contain:

  - Links to related issues or PRs by writing `#issue`. This will be highlighted by the changelog tool:
    ```
    feat(archlinux): add support for aura AUR helper (#9467)
    ```

  - Formatted inline code by using backticks: the text inbetween backticks will also be highlighted by
    the changelog tool:
    ```
    feat(shell-proxy): enable unexported `DEFAULT_PROXY` setting (#9774)
    ```

### Style

Try to keep the first commit line short. This is harder to do using this commit style but try to be
concise and if you need more space, you can use the commit body. Try to make sure that the commit
subject is clear and precise enough that users will know what change by just looking at the changelog.

----

## Volunteer
220
221
222

Very nice!! :)

223
Please have a look at the [Volunteer](https://github.com/ohmyzsh/ohmyzsh/wiki/Volunteers)
224
page for instructions on where to start and more.