24
edits
(Fix title) |
(import release instructions) |
||
Line 1: | Line 1: | ||
= Kinto Integration in Firefox = | = Kinto Integration in Firefox = | ||
== Key features == | |||
* Data synchronization | |||
* Data integrity/signing | |||
* Offline persistence | |||
* Admin panel UI | |||
== Use Cases == | == Use Cases == | ||
* Certificates blocklist (OneCRL) | |||
* Addons/Plugins/Gfx blocklist | |||
* storage.sync API (Web Extensions) | |||
== Upgrade client libraries == | == Upgrade client libraries == | ||
Two client libraries are embedded in Firefox: | |||
* `Kinto/kinto-client.js`: for direct interactions with the Kinto HTTP API | |||
* `Kinto/kinto.js`: for offline persistence in internal SQLite | |||
=== Generate bundles === | |||
The libraries are developed independently on Github, using NPM packages. | |||
With the help of Babel and browsersify, a bundle is generated for Firefox with the minimum transpilation possible (eg. CommonJS require, ES7 decorators). | |||
==== kinto.js ==== | |||
From kinto.js repo, generate the `moz-kinto-offline-client.js` file: | |||
$ npm run dist-fx | |||
And overwrite it in the Firefox code base: | |||
$ cp dist/moz-kinto-offline-client.js ../mozilla-central/services/common/kinto-offline-client.js | |||
==== kinto-client.js ==== | |||
From kinto-client.js repo, generate the `moz-kinto-http-client.js` file: | |||
$ npm run dist-fx | |||
And overwrite it in the Firefox code base: | |||
$ cp dist/moz-kinto-http-client.js ../mozilla-central/services/common/kinto-http-client.js | |||
=== Run the tests === | |||
First, follow [https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions the instructions to build Firefox]. | |||
For JavaScript updates only, have a look at [https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Artifact_builds Artifacts Builds], trading bandwidth for compilation time. | |||
$ ./mach build faster | |||
$ ./mach xpcshell-test services/common/tests/unit/test_kinto.js | |||
$ ./mach xpcshell-test services/common/tests/unit/test_storage_adapter.js | |||
Or all tests related to Kinto: | |||
$ ./mach xpcshell-test services/common/tests/unit/*into* | |||
==== TDD mode ==== | |||
Using *inotify*, we will detect a file change in the `dist/` folder and run a series of commands to execute the tests automatically. | |||
First, install `inotify-tools`: | |||
sudo apt-get install inotify-tools | |||
Then start an infinite loop with `inotify-wait`: | |||
while true; do | |||
# Wait for a change | |||
inotifywait -q -e create,modify,delete -r ~/Code/Mozilla/kinto.js/dist | |||
# Execute these commands | |||
cp ~/Code/Mozilla/kinto.js/dist/moz-kinto-offline-client.js services/common/kinto-offline-client.js | |||
./mach xpcshell-test services/common/tests/unit/test_storage_adapter.js | |||
./mach xpcshell-test services/common/tests/unit/test_kinto.js | |||
done | |||
[http://makina-corpus.com/blog/metier/2013/utiliser-inotify-pour-tester-en-continu-son-code Source: Antoine Cezar] | |||
=== Submit patch === | |||
> Patch are contributed to kinto.js and kinto-client.js, which are first released on NPM. | |||
**DO NOT** land files that are not tagged officially on upstream repositories. | |||
==== Become a contributor ===== | |||
* Generate a SSH key | |||
* Open a bugzilla ticket to request Level-1 access | |||
* https://www.mozilla.org/en-US/about/governance/policies/commit/access-policy/ | |||
* Get a vouch (*optional for level1*) | |||
Configure SSH key for hg: | |||
Host hg.mozilla.org | |||
User user@server.com | |||
IdentityFile ~/.ssh/contrib_moz | |||
==== Run integration tests: «Try» ==== | |||
See https://wiki.mozilla.org/ReleaseEngineering/TryServer | |||
Or use a *gecko-dev* fork from Github, and with install [moz git tools](https://github.com/mozilla/moz-git-tools) | |||
git push-to-try -t --rev master..HEAD ~/hg/mozilla-central/ -b do -p linux,linux64,macosx64,win32,win64 -u xpcshell -t none | |||
==== Submit for review ==== | |||
# Commit with link to Bugzilla | |||
hg commit -m "Bug XXXXX - Upgrade <lib> to X.Y.Z" | |||
# Submit to MozReview | |||
hg push review | |||
# Keep a bookmark of your branch to address review. | |||
hg bookmark bug-XXXXX | |||
# Go back to «master» | |||
hg update central |
edits