electron/docs/development
electron-roller[bot] f3e0517b6e
chore: bump chromium to 102.0.4999.0 (main) (#33731)
* chore: bump chromium in DEPS to 102.0.4999.0

* 3576640: Set OOM handler during V8 initialization

https://chromium-review.googlesource.com/c/chromium/src/+/3576640

* 3574964: Remove deprecated base::Value usage in print_settings_conversion code.

https://chromium-review.googlesource.com/c/chromium/src/+/3574964

* 3570062: Replicate Active state to render process for all RenderViews.

https://chromium-review.googlesource.com/c/chromium/src/+/3570062

* chore: fixup patch indices

* 3380402: Remove legacy SwiftShader

https://chromium-review.googlesource.com/c/chromium/src/+/3380402

* 3570254: [Local Fonts] Rename permission name from FONT_ACCESS to LOCAL_FONTS.

https://chromium-review.googlesource.com/c/chromium/src/+/3570254

* 3572172: Rename or remove several parameters involved in creation of MimeHandler streams

https://chromium-review.googlesource.com/c/chromium/src/+/3572172

* fix: add missing base/bits include

* chore: fix lint

* chore: remove ia32 Linux support

* chore: patch out swift-format cipd dep on macOS

* build: apply patch better

* build: reset all caches

* build: update zip manifests to remove swiftshared libraries

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/3380402

* Revert "build: update zip manifests to remove swiftshared libraries"

This reverts commit 6aeec01ef1a79425a7b7d8c1cfb131a26b91c494.

* Revert "3380402: Remove legacy SwiftShader"

This reverts commit 4c7eebbbf2d0a459cc192959e17ae20f970c2da2.

* build: remove unused swiftshader egl libraries

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: Samuel Attard <sattard@salesforce.com>
2022-04-22 15:36:22 -07:00
..
azure-vm-setup.md docs: Update Branch Name (#31106) 2021-09-27 11:35:56 -04:00
build-instructions-gn.md docs: update links to Chromium source (#33309) 2022-03-17 13:45:55 +01:00
build-instructions-linux.md chore: bump chromium to 102.0.4999.0 (main) (#33731) 2022-04-22 15:36:22 -07:00
build-instructions-macos.md build: use python3 to lint (#33627) 2022-04-11 16:05:21 -07:00
build-instructions-windows.md docs: remove pywin32 from Windows build instructions (#33402) 2022-03-24 09:09:12 -04:00
chromium-development.md docs: update development-related documentation (#31043) 2021-10-27 10:18:38 +09:00
clang-tidy.md docs: fix typos in clang-tidy examples (#29327) 2021-05-27 09:45:37 +09:00
coding-style.md build: use python3 to lint (#33627) 2022-04-11 16:05:21 -07:00
creating-api.md chore: add ELECTRON_ prefix to C++ include guards (#31925) 2021-11-22 16:34:31 +09:00
debugging-on-macos.md docs: update development-related documentation (#31043) 2021-10-27 10:18:38 +09:00
debugging-on-windows.md docs: update development-related documentation (#31043) 2021-10-27 10:18:38 +09:00
debugging-with-symbol-server.md docs: fix broken images for symbol server setup (#32485) 2022-01-18 12:14:48 -05:00
debugging-with-xcode.md docs: update development-related documentation (#31043) 2021-10-27 10:18:38 +09:00
debugging.md docs: add debug build (#31979) 2021-11-30 16:40:58 -05:00
goma.md docs: update development-related documentation (#31043) 2021-10-27 10:18:38 +09:00
issues.md docs: consolidate info docs (#32964) 2022-02-28 11:46:52 -08:00
patches.md chore: cleanup whitespace in docs (#26356) 2020-11-05 14:12:43 -08:00
pull-requests.md docs: fix relative link in developer documentation (#32844) 2022-02-15 13:54:28 -08:00
README.md docs: update development-related documentation (#31043) 2021-10-27 10:18:38 +09:00
source-code-directory-structure.md build: remove the vendor directory (#28883) 2021-04-28 00:38:08 -07:00
testing.md docs: fix wording on testing documentation (#32279) 2022-01-06 09:24:52 +09:00
v8-development.md docs: tidy up links (#26292) 2020-11-02 18:58:14 +09:00

Developing Electron

These guides are intended for people working on the Electron project itself. For guides on Electron app development, see /docs/README.md.

Table of Contents

Getting Started

In order to contribute to Electron, the first thing you'll want to do is get the code.

Electron's build-tools automate much of the setup for compiling Electron from source with different configurations and build targets.

If you would prefer to build Electron manually, see the build instructions.

Once you've checked out and built the code, you may want to take a look around the source tree to get a better idea of what each directory is responsible for. The source code directory structure gives a good overview of the purpose of each directory.

Opening Issues on Electron

For any issue, there are generally three ways an individual can contribute:

  1. By opening the issue for discussion
  2. By helping to triage the issue
    • You can do this either by providing assistive details (a reproducible test case that demonstrates a bug) or by providing suggestions to address the issue.
  3. By helping to resolve the issue
    • This can be done by demonstrating that the issue is not a bug or is fixed; but more often, by opening a pull request that changes the source in electron/electron in a concrete and reviewable manner.

See issues for more information.

Making a Pull Request to Electron

Most pull requests opened against the electron/electron repository include changes to either the C/C++ code in the shell/ folder, the TypeScript code in the lib/ folder, the documentation in docs/, or tests in the spec/ and spec-main/ folders.

See pull requests for more information.

If you want to add a new API module to Electron, you'll want to look in creating API.

Governance

Electron has a fully-fledged governance system that oversees activity in Electron and whose working groups are responsible for areas like APIs, releases, and upgrades to Electron's dependencies including Chromium and Node.js. Depending on how frequently and to what end you want to contribute, you may want to consider joining a working group.

Details about each group and their reponsibilities can be found in the governance repo.

Patches in Electron

Electron is built on two major upstream projects: Chromium and Node.js. Each of these projects has several of their own dependencies, too. We try our best to use these dependencies exactly as they are but sometimes we can't achieve our goals without patching those upstream dependencies to fit our use cases.

As such, we maintain a collection of patches as part of our source tree. The process for adding or altering one of these patches to Electron's source tree via a pull request can be found in patches.

Debugging

There are many different approaches to debugging issues and bugs in Electron, many of which are platform specific.

For an overview of information related to debugging Electron itself (and not an app built with Electron), see debugging.