Skip to content
This repository was archived by the owner on Nov 1, 2022. It is now read-only.
This repository was archived by the owner on Nov 1, 2022. It is now read-only.

Engine-Gecko: Create variants for "beta" and "nightly"  #246

@pocmo

Description

@pocmo

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:

image

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-nightly as 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

Metadata

Metadata

Assignees

Labels

<engine-gecko>Component: browser-engine-gecko🔬 ResearchProblems without a solution that need research.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions