Firefox/Kinto: Difference between revisions

import release instructions
(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
24

edits