Giter VIP home page Giter VIP logo

activity-stream's People

Contributors

adamhillier avatar allegrofox avatar csadilek avatar dmose avatar ericawright avatar glogiotatidis avatar greenkeeperio-bot avatar gvn avatar jaredlockhart avatar jeanec avatar jonathankoren avatar jpetto avatar k88hudson avatar mardak avatar nchapman avatar ncloudioj avatar nt1m avatar oyiptong avatar pdehaan avatar piatra avatar punamdahiya avatar rittme avatar rlr avatar rpl avatar sarracini avatar scottdowne avatar standard8 avatar tspurway avatar vladikoff avatar xeonchen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

activity-stream's Issues

Instrument a control group for reporting

We should determine required sample size given the reporting time period (April 1 to Early June) and method of collecting control data.

Possible options:

  • We could segment users who download our addon
  • We could have a separate addon that doesn’t change anything except instruments what we want for our baseline
  • We could piggyback off another addon
  • ??? (keep in mind we need to ship this by March 1)
  • Determine numbers required for statistical significance on all KPIs we want to track
  • What do other teams use to get control data?

jpm error on travis

JPM [info] Starting jpm test on activity-streams-experiment
JPM [info] Creating a new profile
JPM [error] Error: spawn EACCES

Cannot resolve module 'react-router'

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

Workaround:

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.

Tracking: Create new tables, api endpoints for reporting

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.

Write tests for lifecycle management

We need to ensure that resources are released when:

  1. an activity streams page is shut down
  2. the addon is:
  3. disabled/shut down
  4. uninstalled

For instance, we need to ensure that on addon disable that we:

  • relinquish observers
  • un-init various modules we load if necessary to clear state

On uninstall, we need to do the above plus:

  • remove prefs if need be

More on load/unload reasons here: https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Listening_for_load_and_unload

Tracking: Add-on Architecture

Build basic architecture for add-on.

Notes:

  • We will use React for UI component
  • We will use a Redux-style messaging api from addon scripts, like we’re using with remote new tab
  • Needs to override new tab
  • Needs to add toolbar button to access timeline

Add some Sass linting?

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)...

.sass-lint.yml

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

Build redux "channel", timeouts, action manager

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

Tracking: Timeline

Design comps here: https://invis.io/GA5RW90CW

Notes:

  • Intended to replace "History experience", but for MVP the current "History" menu item will still point to the old experience
  • UI is accessed through toolbar button
  • Content that is visually interesting, i.e. has a lead image etc, should be prioritized/sorted to the top.

Nice to have (in mockups) but not essential to shipping:

  • Spotlight section at top
  • Downloads

In mockups, but won't be implemented for MVP

  • Tabs sorting
  • Filter search at top

Questions:

  • What does the bookmark tab sorting look like v.s. default (design details needed)

Basic add-on functionality

Some add-on specific stuff:

  • override the new tab
  • button in the toolbar for launching the Timeline
  • launching about:timeline or something similar for Timeline

Tracking: Storage/API for enhanced data

We need to store and provide an api for enhanced data collected about urls.

Notes:

  • Eventually, this will be a fully query-able database that should provide full text search and sorting. However, for the MVP implementation, we can use enhanced data for presentation only, and use existing queries/sorting for history/bookmarks

Tracking: New Tab

Design here: https://invis.io/QM5RWBSFB

Notes:

  • Should use a lot of the same UI elements as the Timeline page

Questions:

  • What does the on-boarding experience look like for blank history/blank bookmarks/existing history and bookmarks without enhanced data?
  • What is the "fallback" design for items without enhanced data?

Places data API: recent links

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

Data Processing task queue

Implement a data processing task queue and worker infrastructure.

The workers need to have network access for obtaining for e.g.:

  • manifest data and images
  • readability extracts
  • fallback image generation

Better error/empty/loading states

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.

Create "site list" component

Design:
image

Should:

  • have human-formatted dates (maybe with moment.js)
  • include large, favicon, title, lead image, url
  • have the ability to have separate groups: "Just now", normal, and a "more" section
  • "more" section should be collapsable

Feel free to split off some details into follow-up tickets if necessary.

Remove listeners will not actually remove listeners

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

Engagement data collection

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

Port PlacesProvider tests from Firefox

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.