shield-study-utils's People
shield-study-utils's Issues
REname this thing
Claim: this is intended to be the source repo for ShieldStudy.jsm
along with examples for doing embedded webExtension addons.
Living Post-Jetpack
Problem Statement
Jetpack[1] (in particular, Jetpack's require
, and jpm
) as NOT THE PATH FORWARD.
Jetpack Problem Claims:
jetpack
as a library is Dead (or close to it) (especially in 57+). Therequire
- webExtensions aren't Enough to do (ad-hoc) Instrumented studies, for these reasons.
a. no window-chrome general case modification
b. telemetry pings
c. telemetry enviroment - Bootstrap.js (Restartless) addons aren't going away, for PRIVILEGED AUTHORS. They are needed for system addons, etc.
Implications and engineering solution:
- Embedded webExtension AND pure restartless are VIABLE PATHS forward.
- The core STUDY functionality will be provided by a SINGLE-FILE
cu.import
jsm
module. - CORE SHIELD FUNCTIONALITY is listed below
- GOTCHAS/WARTS of
bootstrap.js
is listed below.
CORE SHIELD FUNCTIONALITY
Status: Proposed for Argument
- Variations - Choosing variations
a. deterministically, given clientId, variation names and proportions
b. at Random, given names and proportions - Variations - Persisting variation between restart
- Variations - Knowing: answer query about assigned variation for
webExtension
code - Telemetry (States) - telemetry for
a. INSTALL
b. ENDINGS (expiration, uninstall) - Telemetry (specific), allow addon to send study-specific telemetry
- Population Tagging, to power dashboards
a. STARTUP tags intelemetryEnviroment
b. allend-of-study
un-tags intelemetryEnviroment
- (MAYBE) Survey launch at critical times (uninstall, expire, other times).
- (MAYBE) Expiration Watcher (study uninstalls after DAYS days).
NOT PROMISED (bootstrap.js
) should do these:
- Feature startup. Think more this:
startup(data, reason) {
let variationName = ShieldStudy.variation;
feature.startup(variationName);
}
- Feature cleanup.
Unclear Engineering decisions
- Should
ShieldStudy
be a singleton, or a class, and does it matter - how explicitly should the
bootstrap.js
have to do things like setWatchers, etc. Explicit is CLEAR, but makes it harder for a reviewer to check that you SET THEM ALL. There are several kinds of 'long-timers' we probably want on all the time. - How to test these kinds of addons.
GOTCHAS (warts?)
bootstrap.js
should now mostly ignoreinstall
functions.Cu.import
for the addon-specific files need to be during / after startup.tools > web developer > browser toolbox
is better for debuggingabout:debugging
. There seems to be some hairy bits that We Should Fix around bootstrap debugging (sometimes you need to uninstall / re-install. Can't uninstall from from `about:debugging, etc.).- Packing up your addon needs a tar/zip tool/script whatever, with no existing super-common tooling. Not
jpm
, notweb-ext
. No (yet) existing "watch and zip" functions, but something like watch might be rad.
[1] Jetpack = The Mozilla Addon-Sdk. In particular the unusual require
semantics, which is not quite Node-like, but looks like it. Loading files in it also blocks the main thread, which WAY UNCOOL.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.