Home/About
About the project
Browser Engine Patcher is a small open tool for people who build browser engines from source and then change them a little. It is maintained by three people in their spare time and funded by the studio that first needed it.
Why it exists
In 2025 our team maintained four fork branches of the same content engine. Every rebase took two days, every branch had its own debug switch, and nobody could say which combination of changes had produced the build a tester was running. We replaced the branches with a directory of diffs and a lockfile. The first version of that idea shipped in March 2025 as BEP 1.2.0, and the format has grown carefully since: the last two breaking changes were in 2.0.0, and both came with a migration command.
How we work
- Small patches, one purpose. A patch that does two things is two patches. Review gets easier, conflicts get local, and a failed patch can be dropped without rewriting history.
- Pinned inputs. Upstream revision, patch order and file hashes live in
bep.lock. If the lockfile and the working tree disagree, the tool stops and says so. - No silent fallbacks. An optional patch that cannot apply is reported, never skipped quietly. A missing compiler is an error, not a warning.
- No telemetry. The CLI makes no network request except the initial source fetch, which uses the transport you configure. See the privacy page.
The team
Three roles, occasionally shared by the same person, and no photographs on this page because there is nothing to look at that helps you use the tool:
Build engineering
Owns the fetch, apply and verify pipeline, the cache layout, and the reproducibility tests. Reviews every change to bep.lock and to the build system glue.
Engine patches
Maintains the built-in catalogue and the Gecko-family preview. Decides when a patch is too invasive to keep in the default profile.
Documentation
Writes the guides, keeps the CLI reference honest, and runs the install path on a clean virtual machine before every release.
Versioning and support
Versions follow semantic versioning with one extra rule: the patch format counts as public API. A patch that loads in 2.8 must load in 2.9. The current minor line receives fixes for three months after the next one starts; the current major line receives security fixes until the following major ships. Support means the issue tracker in the project repository and the monthly office hour described on the community page.
Licence and independence
The source is published under the Mozilla Public License 2.0: file-level copyleft, so your own patches and presets can stay under whatever licence you like as long as changes to BEP's own files remain MPL-2.0. BEP is an independent project. It is not affiliated with, endorsed by, or supported by any browser vendor, and the engine names used in this documentation only describe the source trees the tool knows how to patch.
Credits
The command-line conventions follow the git and cargo traditions, the three-way apply logic borrows its terminology from patch(1), and the reproducible-build checklist was written after reading twenty postmortems of builds that could not be repeated. Errors in this documentation are ours; reports about them are welcome on the community page.