-
Couldn't load subscription status.
- Fork 476
Engine-Gecko: Create variants for "beta" and "nightly" #246
Description
Current state
Currently we build against GeckoView Nightlies. At some point we want to build against Release versions - so that we can ship stable products based on the engine component.
Problems
Even though we want to use release builds in shipping products, we still want to be able to use beta or nightly builds too:
- (A) We want to implement and test new APIs as they become available and not wait until release.
- (B) We want to ship preview/beta-builds of products that may use a beta/nightly version of GeckoView.
- (C) We want to switch to a release build as fast as possible so that apps can make use of the new version that usually includes security fixes.
Release trains
GeckoView follows the release trains of mozilla-central:
Roughly every six weeks Nightly becomes Beta and Beta becomes Release. In theory it would be possible to let the components follow those trains and always build against mozilla-central and branch simultanously. But we do not want this:
- We want to go fast and release whenever we want to.
- We do not want the overhead of multiple branches and uplifting.
Proposal
What if we duplicate the engine-gecko component so that we end up with:
- engine-gecko (tracking release)
- engine-gecko-beta (tracking beta)
- engine-gecko-nightly (tracking nightly)
This would allow us to:
- (A) Add new GeckoView APIs to
engine-gecko-nightlyas soon as they become available. - (B) Use different GeckoView channels in product variants (e.g. Fenix Nightly vs. Fenix Release)
- (C) Do the integration work early and not wait until release day.
In this model every 6 week, when there is a new GeckoView release, engine-gecko-nightly would become engine-gecko-beta and engine-gecko-beta becomes engine-gecko.
Our engine abstraction would make it possible to hide the actual GeckoView version. Of course some Nightly features would not be implemented / throw an "not supported in this version" in the release version of the component.
Also: Could we automate updating the (pinned) Nightly versions in engine-gecko-nightly so that a "bot" opens PRs if no integration work is needed (and file an issue if it needs to be done manually).
┆Issue is synchronized with this Jira Task
