-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
151 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,151 @@ | ||
# Contributing to Keymash | ||
|
||
:+1::tada: First off, thanks for taking the time to contribute! :tada::+1: | ||
|
||
The following is a set of guidelines for contributing to this packages. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request. | ||
|
||
This was modified from [Atom's Contributing guidelines](https://github.com/atom/atom/blob/master/CONTRIBUTING.md) with some edits for my own preferences and trimming out things that will never apply to my smaller projects. | ||
|
||
#### Table Of Contents | ||
|
||
[Code of Conduct](#code-of-conduct) | ||
|
||
[How Can I Contribute?](#how-can-i-contribute) | ||
* [Bugs/Suggestions/Enhancements](#bugs-suggestions-enhancements) | ||
* [Pull Requests](#pull-requests) | ||
|
||
[Styleguides](#styleguides) | ||
* [Git Commit Messages](#git-commit-messages) | ||
* [JavaScript Styleguide](#javascript-styleguide) | ||
* [CoffeeScript Styleguide](#coffeescript-styleguide) | ||
* [Documentation Styleguide](#documentation-styleguide) | ||
|
||
[Additional Notes](#additional-notes) | ||
* [Issue and Pull Request Labels](#issue-and-pull-request-labels) | ||
|
||
## Code of Conduct | ||
|
||
Be awesome to each other. See the [Code of Conduct](CODE_OF_CONDUCT.md). | ||
|
||
## How Can I Contribute? | ||
|
||
### Bugs/Suggestions/Questions? | ||
|
||
Bugs, enhancements, and questions and comments are tracked as [GitHub issues](https://guides.github.com/features/issues/). | ||
|
||
Simply fill in [the relevant template](.github/ISSUE_TEMPLATE). | ||
|
||
### Pull Requests | ||
|
||
The process described here has several goals: | ||
|
||
- Maintain code quality and style | ||
|
||
Please follow these steps to have your contribution considered: | ||
|
||
1. Follow all instructions in [the template](PULL_REQUEST_TEMPLATE.md) | ||
2. Follow the [styleguides](#styleguides) | ||
3. Submit a pull request and await triage! | ||
|
||
## Styleguides | ||
|
||
### Git Commit Messages | ||
|
||
* Commit messages are sentences, using the commit itself as the subject of the first sentence. | ||
* Use the present tense, indicative mood: ("Moves files around", not "Move..." or "Moved...") | ||
* Limit the first line to 72 characters or less | ||
* Reference issues and pull requests liberally after the first line | ||
* Consider starting the commit message with an applicable emoji: | ||
* :art: `:art:` when improving the format/structure of the code | ||
* :racehorse: `:racehorse:` when improving performance | ||
* :non-potable_water: `:non-potable_water:` when plugging memory leaks | ||
* :memo: `:memo:` when writing docs | ||
* :bug: `:bug:` when fixing a bug | ||
* :fire: `:fire:` when removing code or files | ||
* :white_check_mark: `:white_check_mark:` when adding tests | ||
* :lock: `:lock:` when dealing with security | ||
* :arrow_up: `:arrow_up:` when upgrading dependencies | ||
* :arrow_down: `:arrow_down:` when downgrading dependencies | ||
* :shirt: `:shirt:` when removing linter warnings | ||
|
||
### JavaScript Styleguide | ||
|
||
All JavaScript must adhere to [JavaScript Standard Style](https://standardjs.com/). | ||
|
||
* Prefer the object spread operator (`{...anotherObj}`) to `Object.assign()` | ||
* Inline `export`s with expressions whenever possible | ||
```js | ||
// Use this: | ||
export default class ClassName { | ||
|
||
} | ||
|
||
// Instead of: | ||
class ClassName { | ||
|
||
} | ||
export default ClassName | ||
``` | ||
* Place requires in the following order: | ||
* Built in Node Modules (such as `path`) | ||
* Built in Atom and Electron Modules (such as `atom`, `remote`) | ||
* Local Modules (using relative paths) | ||
* Place class properties in the following order: | ||
* Class methods and properties (methods starting with `static`) | ||
* Instance methods and properties | ||
|
||
### CoffeeScript Styleguide | ||
|
||
* Set parameter defaults without spaces around the equal sign | ||
* `clear = (count=1) ->` instead of `clear = (count = 1) ->` | ||
* Use spaces around operators | ||
* `count + 1` instead of `count+1` | ||
* Use spaces after commas (unless separated by newlines) | ||
* Use parentheses if it improves code clarity. | ||
* Prefer alphabetic keywords to symbolic keywords: | ||
* `a is b` instead of `a == b` | ||
* Avoid spaces inside the curly-braces of hash literals: | ||
* `{a: 1, b: 2}` instead of `{ a: 1, b: 2 }` | ||
* Include a single line of whitespace between methods. | ||
* Capitalize initialisms and acronyms in names, except for the first word, which | ||
should be lower-case: | ||
* `getURI` instead of `getUri` | ||
* `uriToOpen` instead of `URIToOpen` | ||
* Use `slice()` to copy an array | ||
* Add an explicit `return` when your function ends with a `for`/`while` loop and | ||
you don't want it to return a collected array. | ||
* Use `this` instead of a standalone `@` | ||
* `return this` instead of `return @` | ||
* Place requires in the following order: | ||
* Built in Node Modules (such as `path`) | ||
* Built in Atom and Electron Modules (such as `atom`, `remote`) | ||
* Local Modules (using relative paths) | ||
* Place class properties in the following order: | ||
* Class methods and properties (methods starting with a `@`) | ||
* Instance methods and properties | ||
|
||
### Specs Styleguide | ||
|
||
- Include thoughtfully-worded, well-structured [Jasmine](https://jasmine.github.io/) specs in the `./spec` folder. | ||
- Treat `describe` as a noun or situation. | ||
- Treat `it` as a statement about state or how an operation changes state. | ||
|
||
#### Example | ||
|
||
```coffee | ||
describe 'a dog', -> | ||
it 'barks', -> | ||
# spec here | ||
describe 'when the dog is happy', -> | ||
it 'wags its tail', -> | ||
# spec here | ||
``` | ||
|
||
### Documentation Styleguide | ||
|
||
* Use [AtomDoc](https://github.com/atom/atomdoc). | ||
* Use [Markdown](https://daringfireball.net/projects/markdown). | ||
* Reference methods and classes in markdown with the custom `{}` notation: | ||
* Reference classes with `{ClassName}` | ||
* Reference instance methods with `{ClassName::methodName}` | ||
* Reference class methods with `{ClassName.methodName}` |