👍🎉 First off, thanks for taking the time to contribute! 🎉👍
The following is a set of guidelines for contributing to linter. These are just guidelines, not rules, use your best judgment and feel free to propose changes to this document in a pull request.
This project adheres to the Open Code of Conduct. By participating, you are expected to uphold this code.
- You can create an issue here, but before doing that please read the notes below on collecting information and submitting issues. Include as many details as possible with your report.
- Include the version of Atom you are using and the OS.
- Include screenshots and animated GIFs whenever possible; they are immensely helpful.
- Include the behavior you expected and other places you've seen that behavior such as Emacs, vi, Xcode, etc.
- Check the dev tools (
alt-cmd-i
) for errors to include. If the dev tools are open before the error is triggered, a full stack trace for the error will be logged. If you can reproduce the error, use this approach to get the full stack trace and include it in the issue. - On Mac, check Console.app for stack traces to include if reporting a crash.
- Perform a cursory search to see if a similar issue has already been submitted.
- Please setup a profile picture to make yourself recognizable and so we can all get to know each other better.
- We prefer small, focused, single-responsibility pull requests that include tests where possible. These can be contrasted with large pull requests, pull requests with multiple unrelated concerns, and pull requests which have no tests.
- Include screenshots and animated GIFs in your pull request whenever possible.
- Please ensure that your pull request has no lint errors. This is a project for linters after all, so please ensure you have the linter-eslint package installed in Atom.
- Include thoughtfully-worded, well-structured
Jasmine specs in the
./spec
folder. Run them usingapm test
. See the Specs Styleguide below. - Document new code based on the Documentation Styleguide
- End files with a newline.
- Place requires in the following order:
- Built in Node Modules (such as
path
) - Built in Atom and Atom Shell Modules (such as
atom
,shell
) - Local Modules (using relative paths)
- Built in Node Modules (such as
- Place class properties in the following order:
- Class methods and properties (methods starting with a
@
) - Instance methods and properties
- Class methods and properties (methods starting with a
- Avoid platform-dependent code:
- Use
require('fs-plus').getHomeDirectory()
to get the home directory. - Use
path.join()
to concatenate filenames. - Use
os.tmpdir()
rather than/tmp
when you need to reference the temporary directory.
- Use
- Using a plain
return
when returning explicitly at the end of a function.- Not
return null
,return undefined
,null
, orundefined
- Not
- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit the first line to 72 characters or less
- Reference issues and pull requests liberally
- Consider starting the commit message with an applicable emoji:
- 🎨
:art:
when improving the format/structure of the code - 🐎
:racehorse:
when improving performance - 🚱
:non-potable_water:
when plugging memory leaks - 📝
:memo:
when writing docs - 🐧
:penguin:
when fixing something on Linux - 🍎
:apple:
when fixing something on Mac OS - 🏁
:checkered_flag:
when fixing something on Windows - 🐛
:bug:
when fixing a bug - 🔥
:fire:
when removing code or files - 💚
:green_heart:
when fixing the CI build - ✅
:white_check_mark:
when adding tests - 🔒
:lock:
when dealing with security - ⬆️
:arrow_up:
when upgrading dependencies - ⬇️
:arrow_down:
when downgrading dependencies - 👕
:shirt:
when removing linter warnings
- 🎨
- Include thoughtfully-worded, well-structured
Jasmine 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.
describe 'a dog', ->
it 'barks', ->
# spec here
describe 'when the dog is happy', ->
it 'wags its tail', ->
# spec here
- Commit rights may be given to a contributor who has shown prior history of submitting high quality pull requests.
- Commit rights may be taken away from a contributor that has repeatedly or willfully disregarded the code of conduct.
Committers are expected to submit non-trivial changes via pull request, and receive 👍 / 👎 votes from two other contributors. Use your best judgement on what constitutes a "trivial" change.