aboutsummaryrefslogtreecommitdiff
path: root/CONTRIBUTING.md
blob: c331bf9d41f19b9ce05ec595ee6bf97e4c4e275b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Contributing to MMOSMacs

Howdy, and welcome to the MMOSMacs git repository. This document
outlines the conventions and standards for the project.


## This is personal

Please understand that this is my personal Emacs configuration. MMOSMacs
is designed to meet my personal needs. I welcome any and all
contributions, and I will do my best to make MMOSMacs accessible to
others, but my needs and preferences ultimately take priority.

All contributors are listed at the end of this document. If you have
contributed and your name does not appear here, submit a PR or RFC Issue
for it to be added.


## Code of Conduct

I will reject all contributions from:
- people who abuse other contributors.
- people I know to be affiliated with any state agency.

Furthermore, individual items will be rejected because of:
- exceptionally vulgar language.
- ignorance or disregard of the `STYLE_GUIDE.md` or Issue templates.


## How to Contribute

There are several ways you can contribute.

The easiest way you can contribute is by taking part in the discussions
on the [GitHub Issues page](https://github.com/MountainMan1312/MMOSMacs/issues).
You can comment on topics that already have an existing Issue, or you
can submit your own if it does not already exist. Issues can take the
form of:
- **RFC**: discussion about making a change to MMOSMacs.
- **Bug Report**: discusion about a problem with the MMOSMacs code.
- **Feedback**: share your thoughts about MMOSMacs.

Before submitting a new issue, search for existing duplicate issues. If
it already exists, comment on the existing Issue instead of making a new
one. Duplicate issues will be removed and you will be asked to move your
post to the comment section of the existing post. It's not to be rude,
it's just for organization's sake.

To contribute code:
1. Make an RFC or find an existing one
2. Discuss your proposed changes
3. Create a branch
4. Make your changes
5. Submit a Pull Request


### RFC Issues, branches, commits, & Pull Requests

#### Writing an RFC

RFCs are the main form of project management for this repository. All
major changes to MMOSMacs should have an associated RFC. RFC Issues
should be named in the format `RFC: TITLE`, where title is a short
description of the proposed changes. For example, the RFC to modify a
few default Emacs things as a starting point for MMOSMacs is called
`RFC: Start with sensible defaults`.

The following template should be used when writing an RFC.

```markdown
# Summary

Provide a one-paragraph summary of the proposed changes


# Rationale and motivation

Explain why this change is necessary or desirable. Relate to any other
relevant RFCs, Bug Reports, or Feedback. Feel free to link to Issues
from other repositories as well.


# Details

Provide an in-depth description of your proposed changes. This should
get into specifics and corner-cases.


# Drawbacks and Alternatives (optional)

Why should these changes NOT be implemented? What other options are
there, and why are these changes better than the alternatives?


# Additional resources (optional)

Link to external resources such as research papers, images, etc.


# Unresolved questions (optional)

Ask any further questions you have.
```


#### Creating branches & committing changes

All changes made as part of an RFC should be made in an associated
branch. The branch should be named in the format `TYPE/#/TITLE`, where
TYPE is one of `RFC, BUG`, X is the Issue number, and TITLE is a short
summary of the RFC title. For example the branch for
`RFC: Start with sensible defaults` is named `RFC/2/sensible-defaults`.
Branch names should be short, with an absolute maximum of 72 characters
(preferrably shorter).

Commits should be small and nuclear. They should each do "one thing".
That said, multiple files could theoretically be affected by a single
commit. Commit messages should be brief, but not omit any necessary
detail.


#### Writing a Pull Request

Like RFCs, all major changes to MMOSMacs must have an associated Pull
Reqest, which explains in detail the changes that were made. Pull
Requests are reviewed before the changes are accepted into the stable
branch, and it is likely that the reviewer will reject your changes with
notes on what needs to be fixed.

Pull Requests should explain the specifics and nuances of the changes
contained therein.