mozilla / activity-stream Goto Github PK
View Code? Open in Web Editor NEWA refreshed "new tab page" for Firefox
License: Mozilla Public License 2.0
A refreshed "new tab page" for Firefox
License: Mozilla Public License 2.0
Just a main.scss for our styles with normalize.css and some watch/build tasks.
What is the experience for users who download the addon? Do they opt-in explicitly? Do they receive updates automatically? Can we segment users (i.e. ship to x% of population)
This is used by PlacesProvider.
Porting it over allows us to run in versions of firefox < 45 Beta
We should determine required sample size given the reporting time period (April 1 to Early June) and method of collecting control data.
Possible options:
JPM [info] Starting jpm test on activity-streams-experiment
JPM [info] Creating a new profile
JPM [error] Error: spawn EACCES
Obtain Favicon data from the Firefox favicon service
Implement a readability data obtainer
Obtain data from web manifest if present
Since karma works really well with webpack/is a lot faster/easier to debug, let's use it for writing our content unit tests.
I believe that #70 caused a slight issue with the build.
I did a fresh git clone
and npm start
and get the following output.
I believe this is due to changing the dependencies in package.json but not updating the npm-shrinkwrap.json file.
$ npm start
> [email protected] start /Users/pdehaan/dev/github/activity-streams
> npm-run-all --parallel start:*
...
Hash: 864977f28f400c140287
Version: webpack 1.12.13
Time: 1822ms
Asset Size Chunks Chunk Names
bundle.js 795 kB 0 [emitted] main
+ 193 hidden modules
ERROR in ./content-src/components/Routes/Routes.js
Module not found: Error: Cannot resolve module 'react-router' in /Users/pdehaan/dev/github/activity-streams/content-src/components/Routes
@ ./content-src/components/Routes/Routes.js 5:15-38
ERROR in ./content-src/components/Routes/Routes.js
Module not found: Error: Cannot resolve module 'history' in /Users/pdehaan/dev/github/activity-streams/content-src/components/Routes
@ ./content-src/components/Routes/Routes.js 11:16-34
ERROR in ./content-src/components/Header/Header.js
Module not found: Error: Cannot resolve module 'react-router' in /Users/pdehaan/dev/github/activity-streams/content-src/components/Header
@ ./content-src/components/Header/Header.js 5:15-38
Install the dependencies from the package.json directly instead of the cached npm-shrinkwrap.json file.
$ rm -rf node_modules npm-shrinkrap.json && npm i && npm start
I wasn't sure if you were adding devDependencies to the npm-shrinkwrap.json file. I tried with and without, but it looks like the current npm-shrinkwrap.json file was generated using npm@3 versus trusty old npm@2, so i'm seeing a great big diff-tastrophe.
We will collect key metrics to determine the success of the experiment sent to our data pipeline through TestPilot.
The reporting period will be from April 1 to early June.
We will instrument our add-on to collect the metrics we want, as well as collect control data from existing experiences in order to perform a comparison.
On the back-end, we will create new tables/an api endpoint to use with TestPilot. We also need a front-end analysis interface, such as a static visualization of our key metrics.
We need to ensure that resources are released when:
For instance, we need to ensure that on addon disable that we:
On uninstall, we need to do the above plus:
More on load/unload reasons here: https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Listening_for_load_and_unload
We could use:
Build basic architecture for add-on.
Notes:
Set up continuous integration on Travis-CI
I have a local, crude lint set up using https://github.com/sasstools/sass-lint and have it returning about 74 warnings and 4 errors (mostly sorting violations and nit-picky formatting)...
options:
merge-default-rules: true
files:
include: 'content-src/**/*.scss'
rules:
extends-before-declarations: 2
extends-before-mixins: 2
hex-notation: [2, {style: uppercase}]
indentation: [2, {size: 2}]
leading-zero: [2, {include: true}]
mixins-before-declarations: [2, {exclude: [breakpoint, mq]}]
nesting-depth: [2, {max-depth: 4}]
no-debug: 1
no-ids: 1
no-important: 1
no-warn: 1
placeholder-in-extend: 2
property-sort-order: [1, {order: [display, margin], ignore-custom-properties: true}]
After you do an npm i sass-lint
locally, you can run the following command to see the lint results:
$ ./node_modules/.bin/sass-lint -v -q #or just `sass-lint -v -q` in the package.json scripts section
We should add some basic stuff about how to get up and running
I was thinking about ways of making the communication between the firefox side/redux side easier, including having proper timeout/error handling, etc.
It would be cool if we could use the same "action definitions" on both ends, as well as some redux middleware to handle the timeout scenario (i.e. requesting some data and expecting a response)
will post more later, some initial thinking here: https://gist.github.com/k88hudson/59f92d271db944a3a630#file-redux-channel-js
We should have a way of determining the impact of the add-on on performance/load-time etc.
If we are collecting data in splice:
Notes:
@tspurway do you want to add some clarification here?
Design comps here: https://invis.io/GA5RW90CW
Notes:
Nice to have (in mockups) but not essential to shipping:
In mockups, but won't be implemented for MVP
Questions:
The test runner runs tests in a Task if a generator is used.
Use a generator instead of returning a promise
Some add-on specific stuff:
about:timeline
or something similar for TimelineWe should grab some images, text, etc. for a few sites so we can test our UI with it, until the enhanced data api is ready. We could use something like https://www.npmjs.com/package/open-graph-scraper
We need to store and provide an api for enhanced data collected about urls.
Notes:
Design here: https://invis.io/QM5RWBSFB
Notes:
Questions:
We need to add jscs to this project
Obtains recent links. Similar to top frecent sites, except ordered by last_visit_date
.
Unlike top frecent sites, it returns a list of most recent links and does not group by rev_host
Implement a data processing task queue and worker infrastructure.
The workers need to have network access for obtaining for e.g.:
We can obtain Opengraph metadata for a given url by using PageMetadata.jsm.
For now, we are going to use a manual process for signing and uploading the add-on.
We need to:
We need a first pass at what happens when each component is empty/loading/an error happens.
We should definitely have a nice experience for a blank profile (i.e. no history, bookmarks)
This will need some design input.
We should ask for higher fidelity comps with uncompressed colors, correct icons
It would be nice to have a few more:
Should:
Feel free to split off some details into follow-up tickets if necessary.
We will be using embedly for this, we will need to:
Ensure that tests exist for message passing, if only for regression testing
I just noticed right now in ActivityStreams we have:
_setupListeners() {
PlacesProvider.links.on("deleteURI", this._handlePlacesChanges.bind(this));
...
_removeListeners() {
PlacesProvider.links.on("deleteURI", this._handlePlacesChanges);
...
I think this.fn !== this.fn.bind(this)
, so we'll need to use a different strategy for this
We need to instrument our add-on to collect the metrics we want. This should integrate with TestPilot and our back-end reporting infrastructure/api end-points
Implement code in add-on to send messages to data-pipeline.
Maybe start with a few messages add-on side, we can do content in a follow-up ticket
Obtain and set bookmarks
PlacesProvider has been ported to the add-on because depending on levels of Firefox support, the module may not be available.
While the initial addon has a port of the module, the tests need to be ported as well.
Just a basic shell for the UI with Webpack and some watch tasks.
We need to add a second page for the timeline view, as well as a button in the toolbar to access it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.