electron/CONTRIBUTING.md

3.9 KiB

Contributing to Electron

👍🎉 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.

Submitting Issues

Creating Issues

  • 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

Issue Maintenance and Closure

  • 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!

Submitting Pull Requests

Styleguides

General Code

  • 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)
  • Place class properties in the following order:
    • Class methods and properties (methods starting with a @)
    • Instance methods and properties
  • Avoid platform-dependent code:
    • Use path.join() to concatenate filenames.
    • Use os.tmpdir() rather than /tmp when you need to reference the temporary directory.
  • Using a plain return when returning explicitly at the end of a function.
    • Not return null, return undefined, null, or undefined

Git Commit Messages

  • 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