diff --git a/README.md b/README.md index f0af41e5940b3..00bb29edb3c9f 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,17 @@ For more installation options and troubleshooting tips, see [installation](docs/tutorial/installation.md). For info on how to manage Electron versions in your apps, see [Electron versioning](docs/tutorial/electron-versioning.md). +## Platform support + +Each Electron release provides binaries for macOS, Windows, and Linux. + +* macOS (El Capitan and up): Electron provides 64-bit Intel and ARM binaries for macOS. Apple Silicon support was added in Electron 11. +* Windows (Windows 7 and up): Electron provides `ia32` (`x86`), `x64` (`amd64`), and `arm64` binaries for Windows. Windows on ARM support was added in Electron 5.0.8. +* Linux: The prebuilt binaries of Electron are built on Ubuntu 18.04. They have also been verified to work on: + * Ubuntu 14.04 and newer + * Fedora 24 and newer + * Debian 8 and newer + ## Quick start & Electron Fiddle Use [`Electron Fiddle`](https://github.com/electron/fiddle) @@ -54,12 +65,10 @@ npm start ## Resources for learning Electron -- [electronjs.org/docs](https://electronjs.org/docs) - All of Electron's documentation -- [electron/fiddle](https://github.com/electron/fiddle) - A tool to build, run, and package small Electron experiments -- [electron/electron-quick-start](https://github.com/electron/electron-quick-start) - A very basic starter Electron app -- [electronjs.org/community#boilerplates](https://electronjs.org/community#boilerplates) - Sample starter apps created by the community -- [electron/simple-samples](https://github.com/electron/simple-samples) - Small applications with ideas for taking them further -- [electron/electron-api-demos](https://github.com/electron/electron-api-demos) - An Electron app that teaches you how to use Electron +* [electronjs.org/docs](https://electronjs.org/docs) - All of Electron's documentation +* [electron/fiddle](https://github.com/electron/fiddle) - A tool to build, run, and package small Electron experiments +* [electron/electron-quick-start](https://github.com/electron/electron-quick-start) - A very basic starter Electron app +* [electronjs.org/community#boilerplates](https://electronjs.org/community#boilerplates) - Sample starter apps created by the community ## Programmatic usage @@ -80,11 +89,15 @@ const child = proc.spawn(electron) ### Mirrors -- [China](https://npmmirror.com/mirrors/electron) +* [China](https://npm.taobao.org/mirrors/electron) + +See the [Advanced Installation Instructions](https://www.electronjs.org/docs/latest/tutorial/installation#mirror) to learn how to use a custom mirror. -## Documentation Translations +## Documentation translations -Find documentation translations in [electron/i18n](https://github.com/electron/i18n). +We crowdsource translations for our documentation via [Crowdin](https://crowdin.com/project/electron). +We currently accept translations for Chinese (Simplified), French, German, Japanese, Portuguese, +Russian, and Spanish. ## Contributing @@ -93,10 +106,10 @@ If you are interested in reporting/fixing issues and contributing directly to th ## Community Info on reporting bugs, getting help, finding third-party tools and sample apps, -and more can be found in the [support document](docs/tutorial/support.md#finding-support). +and more can be found on the [Community page](https://www.electronjs.org/community). ## License [MIT](https://github.com/electron/electron/blob/main/LICENSE) -When using the Electron or other GitHub logos, be sure to follow the [GitHub logo guidelines](https://github.com/logos). +When using Electron logos, make sure to follow [OpenJS Foundation Trademark Policy](https://openjsf.org/wp-content/uploads/sites/84/2021/01/OpenJS-Foundation-Trademark-Policy-2021-01-12.docx.pdf). diff --git a/docs/README.md b/docs/README.md index 261c67c5941ce..5e5f763ccdf7d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -64,7 +64,6 @@ an issue: * [Automated Testing](tutorial/automated-testing.md) * [REPL](tutorial/repl.md) * [Distribution](tutorial/application-distribution.md) - * [Supported Platforms](tutorial/support.md#supported-platforms) * [Code Signing](tutorial/code-signing.md) * [Mac App Store](tutorial/mac-app-store-submission-guide.md) * [Windows Store](tutorial/windows-store-guide.md) diff --git a/docs/development/issues.md b/docs/development/issues.md index ec0ad5dc04f36..1eb530111c7a8 100644 --- a/docs/development/issues.md +++ b/docs/development/issues.md @@ -24,7 +24,7 @@ contribute: ## Asking for General Help -["Finding Support"](../tutorial/support.md#finding-support) has a +[The Electron website](https://electronjs.org/community) has a list of resources for getting programming help, reporting security issues, contributing, and more. Please use the issue tracker for bugs only! diff --git a/docs/tutorial/electron-timelines.md b/docs/tutorial/electron-timelines.md index 16418ab398c51..80ac4ca66eeb4 100644 --- a/docs/tutorial/electron-timelines.md +++ b/docs/tutorial/electron-timelines.md @@ -1,30 +1,100 @@ -# Electron Release Timelines +# Electron Releases -Special notes: +Electron frequently releases major versions alongside every other Chromium release. +This document focuses on the release cadence and version support policy. +For a more in-depth guide on our git branches and how Electron uses semantic versions, +check out our [Electron Versioning](./electron-versioning.md) doc. + +## Timeline + +| Electron | Alpha | Beta | Stable | Chrome | Node | Supported | +| ------- | ----- | ------- | ------ | ------ | ---- | ---- | +| 2.0.0 | -- | 2018-Feb-21 | 2018-May-01 | M61 | v8.9 | 🚫 | +| 3.0.0 | -- | 2018-Jun-21 | 2018-Sep-18 | M66 | v10.2 | 🚫 | +| 4.0.0 | -- | 2018-Oct-11 | 2018-Dec-20 | M69 | v10.11 | 🚫 | +| 5.0.0 | -- | 2019-Jan-22 | 2019-Apr-24 | M73 | v12.0 | 🚫 | +| 6.0.0 | -- | 2019-May-01 | 2019-Jul-30 | M76 | v12.4 | 🚫 | +| 7.0.0 | -- | 2019-Aug-01 | 2019-Oct-22 | M78 | v12.8 | 🚫 | +| 8.0.0 | -- | 2019-Oct-24 | 2020-Feb-04 | M80 | v12.13 | 🚫 | +| 9.0.0 | -- | 2020-Feb-06 | 2020-May-19 | M83 | v12.14 | 🚫 | +| 10.0.0 | -- | 2020-May-21 | 2020-Aug-25 | M85 | v12.16 | 🚫 | +| 11.0.0 | -- | 2020-Aug-27 | 2020-Nov-17 | M87 | v12.18 | 🚫 | +| 12.0.0 | -- | 2020-Nov-19 | 2021-Mar-02 | M89 | v14.16 | 🚫 | +| 13.0.0 | -- | 2021-Mar-04 | 2021-May-25 | M91 | v14.16 | 🚫 | +| 14.0.0 | -- | 2021-May-27 | 2021-Aug-31 | M93 | v14.17 | 🚫 | +| 15.0.0 | 2021-Jul-20 | 2021-Sep-01 | 2021-Sep-21 | M94 | v16.5 | 🚫 | +| 16.0.0 | 2021-Sep-23 | 2021-Oct-20 | 2021-Nov-16 | M96 | v16.9 | ✅ | +| 17.0.0 | 2021-Nov-18 | 2022-Jan-06 | 2022-Feb-01 | M98 | v16.13 | ✅ | +| 18.0.0 | 2022-Feb-03 | 2022-Mar-03 | 2022-Mar-29 | M100 | TBD | ✅ | +| 19.0.0 | 2022-Mar-31 | 2022-Apr-30 | 2022-May-24 | M102 | TBD | ✅ | + +**Notes:** * The `-beta.1` and `stable` dates are our solid release dates. -* We strive for weekly beta releases, however we often release more betas than scheduled. +* We strive for weekly beta releases, but we often release more betas than scheduled. * All dates are our goals but there may be reasons for adjusting the stable deadline, such as security bugs. -* Take a look at the [5.0.0 Timeline blog post](https://electronjs.org/blog/electron-5-0-timeline) for info about publicizing our release dates. -* Since Electron 6.0, we've been targeting every other Chromium version and releasing our stable on the same day as Chrome stable. You can reference Chromium's release schedule [here](https://chromiumdash.appspot.com/schedule). See [Electron's new release cadence blog post](https://www.electronjs.org/blog/12-week-cadence) for more details on our release schedule. -* Starting in Electron 16.0, we will release on an 8-week cadence. See [Electron's new 8-week cadence blog post](https://www.electronjs.org/blog/8-week-cadence) for more details. - -| Electron | Alpha | Beta | Stable | Chrome | Node | -| ------- | ----- | ------- | ------ | ------ | ---- | -| 2.0.0 | -- | 2018-Feb-21 | 2018-May-01 | M61 | v8.9 | -| 3.0.0 | -- | 2018-Jun-21 | 2018-Sep-18 | M66 | v10.2 | -| 4.0.0 | -- | 2018-Oct-11 | 2018-Dec-20 | M69 | v10.11 | -| 5.0.0 | -- | 2019-Jan-22 | 2019-Apr-24 | M73 | v12.0 | -| 6.0.0 | -- | 2019-May-01 | 2019-Jul-30 | M76 | v12.4 | -| 7.0.0 | -- | 2019-Aug-01 | 2019-Oct-22 | M78 | v12.8 | -| 8.0.0 | -- | 2019-Oct-24 | 2020-Feb-04 | M80 | v12.13 | -| 9.0.0 | -- | 2020-Feb-06 | 2020-May-19 | M83 | v12.14 | -| 10.0.0 | -- | 2020-May-21 | 2020-Aug-25 | M85 | v12.16 | -| 11.0.0 | -- | 2020-Aug-27 | 2020-Nov-17 | M87 | v12.18 | -| 12.0.0 | -- | 2020-Nov-19 | 2021-Mar-02 | M89 | v14.16 | -| 13.0.0 | -- | 2021-Mar-04 | 2021-May-25 | M91 | v14.16 | -| 14.0.0 | -- | 2021-May-27 | 2021-Aug-31 | M93 | v14.17 | -| 15.0.0 | 2021-Jul-20 | 2021-Sep-01 | 2021-Sep-21 | M94 | v16.5 | -| 16.0.0 | 2021-Sep-23 | 2021-Oct-20 | 2021-Nov-16 | M96 | v16.9 | -| 17.0.0 | 2021-Nov-18 | 2022-Jan-06 | 2022-Feb-01 | M98 | v16.13 | -| 18.0.0 | 2022-Feb-03 | 2022-Mar-03 | 2022-Mar-29 | M100 | TBD | + +**Historical changes:** + +* Since Electron 5, Electron has been publicizing its release dates ([see blog post](https://electronjs.org/blog/electron-5-0-timeline)). +* Since Electron 6, Electron major versions have been targeting every other Chromium major version. Each Electron stable should happen on the same day as Chrome stable ([see blog post](https://www.electronjs.org/blog/12-week-cadence)). When this was announced +* Since Electron 16, Electron has been releasing major versions on an 8-week cadence in accordance to Chrome's change to a 4-week release cadence ([see blog post](https://www.electronjs.org/blog/8-week-cadence). + +:::info Chrome release dates + +Chromium has the own public release schedule [here](https://chromiumdash.appspot.com/schedule). + +::: + +## Version support policy + +:::info + +Beginning in September 2021 (Electron 15), the Electron team +will temporarily support the latest **four** stable major versions. This +extended support is intended to help Electron developers transition to +the [new 8-week release cadence](https://electronjs.org/blog/8-week-cadence), +and will continue until the release of Electron 19. At that time, +the Electron team will drop support back to the latest three stable major versions. + +::: + +The latest three *stable* major versions are supported by the Electron team. +For example, if the latest release is 6.1.x, then the 5.0.x as well +as the 4.2.x series are supported. We only support the latest minor release +for each stable release series. This means that in the case of a security fix, +6.1.x will receive the fix, but we will not release a new version of 6.0.x. + +The latest stable release unilaterally receives all fixes from `main`, +and the version prior to that receives the vast majority of those fixes +as time and bandwidth warrants. The oldest supported release line will receive +only security fixes directly. + +### Breaking API changes + +When an API is changed or removed in a way that breaks existing functionality, the +previous functionality will be supported for a minimum of two major versions when +possible before being removed. For example, if a function takes three arguments, +and that number is reduced to two in major version 10, the three-argument version would +continue to work until, at minimum, major version 12. Past the minimum two-version +threshold, we will attempt to support backwards compatibility beyond two versions +until the maintainers feel the maintenance burden is too high to continue doing so. + +### End-of-life + +When a release branch reaches the end of its support cycle, the series +will be deprecated in NPM and a final end-of-support release will be +made. This release will add a warning to inform that an unsupported +version of Electron is in use. + +These steps are to help app developers learn when a branch they're +using becomes unsupported, but without being excessively intrusive +to end users. + +If an application has exceptional circumstances and needs to stay +on an unsupported series of Electron, developers can silence the +end-of-support warning by omitting the final release from the app's +`package.json` `devDependencies`. For example, since the 1-6-x series +ended with an end-of-support 1.6.18 release, developers could choose +to stay in the 1-6-x series without warnings with `devDependency` of +`"electron": 1.6.0 - 1.6.17`. diff --git a/docs/tutorial/electron-versioning.md b/docs/tutorial/electron-versioning.md index f450feeb1968d..7e473bffd3940 100644 --- a/docs/tutorial/electron-versioning.md +++ b/docs/tutorial/electron-versioning.md @@ -48,7 +48,7 @@ Stabilization branches are branches that run parallel to `main`, taking in only Since Electron 8, stabilization branches are always **major** version lines, and named against the following template `$MAJOR-x-y` e.g. `8-x-y`. Prior to that we used **minor** version lines and named them as `$MAJOR-$MINOR-x` e.g. `2-0-x`. -We allow for multiple stabilization branches to exist simultaneously, one for each supported version. For more details on which versions are supported, see our [Electron Release Timelines](./electron-timelines.md) doc. +We allow for multiple stabilization branches to exist simultaneously, one for each supported version. For more details on which versions are supported, see our [Electron Releases](./electron-timelines.md) doc. ![Multiple Stability Branches](../images/versioning-sketch-2.png) @@ -107,6 +107,15 @@ A few examples of how various SemVer ranges will pick up new releases: ![Semvers and Releases](../images/versioning-sketch-7.png) +### Backport request process + +All supported release lines will accept external pull requests to backport +fixes previously merged to `main`, though this may be on a case-by-case +basis for some older supported lines. All contested decisions around release +line backports will be resolved by the +[Releases Working Group](https://github.com/electron/governance/tree/main/wg-releases) +as an agenda item at their weekly meeting the week the backport PR is raised. + ## Feature flags Feature flags are a common practice in Chromium, and are well-established in the web-development ecosystem. In the context of Electron, a feature flag or **soft branch** must have the following properties: diff --git a/docs/tutorial/support.md b/docs/tutorial/support.md index d7a51f57140c4..fa48f555e5040 100644 --- a/docs/tutorial/support.md +++ b/docs/tutorial/support.md @@ -1,128 +1,5 @@ -# Electron Support +# This doc has moved! -## Finding Support - -If you have a security concern, -please see the [security document](https://github.com/electron/electron/tree/main/SECURITY.md). - -If you're looking for programming help, -for answers to questions, -or to join in discussion with other developers who use Electron, -you can interact with the community in these locations: - -* [Electron's Discord server](https://discord.com/invite/APGC3k5yaH) has channels for: - * Getting help - * Ecosystem apps like [Electron Forge](https://github.com/electron-userland/electron-forge) and [Electron Fiddle](https://github.com/electron/fiddle) - * Sharing ideas with other Electron app developers - * And more! -* [`electron`](https://discuss.atom.io/c/electron) category on the Atom forums -* `#electron` channel on [Atom's Slack](https://discuss.atom.io/t/join-us-on-slack/16638?source_topic_id=25406) -* [`electron-ru`](https://telegram.me/electron_ru) *(Russian)* -* [`electron-br`](https://electron-br.slack.com) *(Brazilian Portuguese)* -* [`electron-kr`](https://electron-kr.github.io/electron-kr) *(Korean)* -* [`electron-jp`](https://electron-jp.slack.com) *(Japanese)* -* [`electron-tr`](https://electron-tr.herokuapp.com) *(Turkish)* -* [`electron-id`](https://electron-id.slack.com) *(Indonesia)* -* [`electron-pl`](https://electronpl.github.io) *(Poland)* - -If you'd like to contribute to Electron, -see the [contributing document](https://github.com/electron/electron/blob/main/CONTRIBUTING.md). - -If you've found a bug in a [supported version](#supported-versions) of Electron, -please report it with the [issue tracker](../development/issues.md). - -[awesome-electron](https://github.com/sindresorhus/awesome-electron) -is a community-maintained list of useful example apps, -tools and resources. - -## Supported Versions - -_**Note:** Beginning in September 2021 with Electron 15, the Electron team -will temporarily support the latest **four** stable major versions. This -extended support is intended to help Electron developers transition to -the [new eight week release cadence](https://electronjs.org/blog/8-week-cadence), and will continue until May 2022, with -the release of Electron 19. At that time, the Electron team will drop support -back to the latest three stable major versions._ - -The latest three *stable* major versions are supported by the Electron team. -For example, if the latest release is 6.1.x, then the 5.0.x as well -as the 4.2.x series are supported. We only support the latest minor release -for each stable release series. This means that in the case of a security fix -6.1.x will receive the fix, but we will not release a new version of 6.0.x. - -The latest stable release unilaterally receives all fixes from `main`, -and the version prior to that receives the vast majority of those fixes -as time and bandwidth warrants. The oldest supported release line will receive -only security fixes directly. - -All supported release lines will accept external pull requests to backport -fixes previously merged to `main`, though this may be on a case-by-case -basis for some older supported lines. All contested decisions around release -line backports will be resolved by the [Releases Working Group](https://github.com/electron/governance/tree/main/wg-releases) as an agenda item at their weekly meeting the week the backport PR is raised. - -When an API is changed or removed in a way that breaks existing functionality, the -previous functionality will be supported for a minimum of two major versions when -possible before being removed. For example, if a function takes three arguments, -and that number is reduced to two in major version 10, the three-argument version would -continue to work until, at minimum, major version 12. Past the minimum two-version -threshold, we will attempt to support backwards compatibility beyond two versions -until the maintainers feel the maintenance burden is too high to continue doing so. - -### Currently supported versions - -* 19.x.y -* 18.x.y -* 17.x.y -* 16.x.y - -### End-of-life - -When a release branch reaches the end of its support cycle, the series -will be deprecated in NPM and a final end-of-support release will be -made. This release will add a warning to inform that an unsupported -version of Electron is in use. - -These steps are to help app developers learn when a branch they're -using becomes unsupported, but without being excessively intrusive -to end users. - -If an application has exceptional circumstances and needs to stay -on an unsupported series of Electron, developers can silence the -end-of-support warning by omitting the final release from the app's -`package.json` `devDependencies`. For example, since the 1-6-x series -ended with an end-of-support 1.6.18 release, developers could choose -to stay in the 1-6-x series without warnings with `devDependency` of -`"electron": 1.6.0 - 1.6.17`. - -## Supported Platforms - -Following platforms are supported by Electron: - -### macOS - -Only 64bit binaries are provided for macOS, and the minimum macOS version -supported is macOS 10.11 (El Capitan). - -Native support for Apple Silicon (`arm64`) devices was added in Electron 11.0.0. - -### Windows - -Windows 7 and later are supported, older operating systems are not supported -(and do not work). - -Both `ia32` (`x86`) and `x64` (`amd64`) binaries are provided for Windows. -[Native support for Windows on Arm (`arm64`) devices was added in Electron 6.0.8.](windows-arm.md). -Running apps packaged with previous versions is possible using the ia32 binary. - -### Linux - -The prebuilt binaries of Electron are built on Ubuntu 18.04. - -Whether the prebuilt binary can run on a distribution depends on whether the -distribution includes the libraries that Electron is linked to on the building -platform, so only Ubuntu 18.04 is guaranteed to work, but following platforms -are also verified to be able to run the prebuilt binaries of Electron: - -* Ubuntu 14.04 and newer -* Fedora 24 and newer -* Debian 8 and newer +* For information on supported releases, see the [Electron Releases](./electron-timelines.md) doc. +* For community support on Electron, see the [Community page](https://www.electronjs.org/community). +* For platform support info, see the [README](https://github.com/electron/electron/blob/main/README.md).