👍🎉 First off, thanks for taking the time to contribute! 🎉👍
This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to electron@github.com.
The following is a set of guidelines for contributing to Electron. These are just guidelines, not rules, use your best judgment and feel free to propose changes to this document in a pull request.
- You can create an issue here,
but before doing that please read the notes below and include as many details as
possible with your report. If you can, please include:
- The version of Electron you are using
- The operating system you are using
- If applicable, what you were doing when the issue arose and what you expected to happen
- Other things that will help resolve your issue:
- Screenshots and animated GIFs
- Error output that appears in your terminal, dev tools or as an alert
- Perform a cursory search to see if a similar issue has already been submitted
- If an issue is inactive for 45 days (no activity of any kind), it will be
marked for closure with
stale
. - If after this label is applied, no further activity occurs in the next 7 days,
the issue will be closed.
- If an issue has been closed and you still feel it's relevant, feel free to ping a maintainer or add a comment!
- Build instructions can be found in docs/development.
- Include screenshots and animated GIFs in your pull request whenever possible.
- Follow the JavaScript, C++, and Python coding style defined in docs.
- Write documentation in Markdown. See the Documentation Styleguide.
- Use short, present tense commit messages. See Commit Message Styleguide.
- End files with a newline.
- Place requires in the following order:
- Built in Node Modules (such as
path
) - Built in Electron Modules (such as
ipc
,app
) - 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
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
- When only changing documentation, include
[ci skip]
in the commit description - 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 macOS - 🏁
: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
- 🎨