Griffin is Brave's version of Google's Finch - A backend for Chromium's variation service. This repository contains resources to compile, publish and inspect the so called seed file, which contains definitions for all variations.
See the Wiki to learn more about what variations are and how to use them for (1) staged rollouts, (2) parameter updates and (3) experiments.
A continuous integration server (CI) serializes and signs the updated seed file before publishing it to a CDN endpoint at https://variations.brave.com/seed. To browse the contents of the seed file a dashboard is hosted at https://griffin.brave.com. The repo is organized as follows:
/crypto contains a util to create key pairs and sign the seed file./seed contains a deprecated JSON seed definition and serialisation code./src contains the web dashboard to browse the seed contents, the tracker code to track seed changes and the current seed generator. See src/README.md for details./studies contains the studies used to generate the seed.studiespnpm install after checking out the repository.studies directory, following the protobuf schema in src/proto/study.proto.pnpm seed_tools lint -- --fix and address found issues.main branch.On initial deployment and subsequent key rotations a new key pair has to be generated. The public key is exchanged by patching the hard-coded public key bytes in variations_seed_store.cc:
$ go run ./crypto/crypto_util.go keygen.The following steps are performed by CI to publish the updated seed file:
$ pnpm seed_tools create to compile the protobuf.$ go run /crypto/crypto_util.go sign.X-Seed-Signature response header.serialnumber.Content-Encoding: gzip response header.Constraints:
--variations-server-url=https://variations.bravesoftware.com/seed.brave://flags--disable-features="..." --enable-features="...", e.g. enable feature FooBar with parameters param1=2 and param3=4 via --enable-features=FooBar:param1/2/param3/4seedbase::feature defaultsX-Country response header and is inferred from the source IP by the CDN but can be faked with e.g. --variations-override-country=US--fake-variations-channel=beta to override the channel of your build.--vmodule="*/variations/*"=1 or inspect brave://version/?show-variations-cmd under the "Variations" section.--vmodule="*/variations/*"=1 or higherTo build the dashboard:
$ pnpm install$ pnpm build