Nothing to see here. Move along.
Fine. Suppose you want to know how to build, run, and contribute eh?
7 Easy steps (that might take a long time to do):
- Grab a chromium checkout. Some find that the git submodule flow is faster, but any method should work.
cd src && git clone https://github.com/slightlyoff/bravo- git apply --check bravo/chromium.patch # if clean, proceed, else ping for help
git apply bravo/chromium.patchgit runhooksorbuild/chromium_gypto include Bravo in the build- Build content shell or chrome, e.g.
ninja -C out/Release content_shell - Drive your freshly minted build to any bravo content you happen to have/find
Patches are only accepted from Chromium Contributors. If you're not yet a Chromium Contributor, please submit a CLA or CCLA and let us know about it with PR's.
Code health guidelines are straightforward: this is experimental, but to the greatest extent possible, we use Chromium style. When in doubt, ask.
Bravo, conceptually, is the lowest level of the web platform. To a web developer, that means that everything that's a "bravo API" is something that can't be reasonable self-hosted in JavaScript and which they shouldn't ever expect to be pluggable.
From an implementation perspective, bravo defines the interfaces to JavaScript for system-provided services. We are defining these APIs as we go and bootstrapping on top of the Pepper C API in the Chromium prototype.
Eventually all Bravo APIs (which need not resemble Pepper APIs) will be candidates for standardization. The runtime language -- JavaScript -- is already a web standard.
Libraries built on top of Bravo may implement other standards (such as HTML, DOM, etc.) or provide alternative forms which reduce legacy baggage.
To write Bravo content, it must be served with Content-Type: application/bravo. The exmaples/ directory includes a .htaccess file which shows how to enable this in Apache.
The simplest thing that can possibly invoke bravo is data:application/bravo,function main(b){b.log('oh hai')}.
All Bravo APIs are plumbed through the main function of the script. Also, all bravo scripts run in strict mode by default.