Mobile/Projects/Third-party service integration MVP

From MozillaWiki
Jump to: navigation, search

Weekly stand-up meeting

Tracking

Open P1 bugs

These bugs are blockers for Firefox Hub v1 (basic feed add-on support - Fx30)

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Open P2 bugs

These bugs are blockers for Firefox Hub v2 (feature complete for developers - Fx31)

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Open P3 bugs

These bugs are blockers for Firefox Hub v3 (ready to feature add-ons - Fx32)

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);



All bugs

Full Query
ID Priority Summary Status Assigned to
862805 -- Allow add-ons to register custom lists on about:home RESOLVED :Margaret Leibovic
909618 P1 Remember about:home tab selection VERIFIED Sola Ogunsakin [:sola]
940565 -- Update home.HomePager.Page enum usage to handle multiple pages of the same type RESOLVED Lucas Rocha (:lucasr)
940575 P1 Implement per-profile SharedPreferences, eliminating uses of PreferenceManager RESOLVED Lucas Rocha (:lucasr)
941318 -- Create content provider to store "My List" data RESOLVED :Margaret Leibovic
942231 -- Allow for reordering and removing home page tabs RESOLVED Lucas Rocha (:lucasr)
942281 P2 Provide a way for a service add-on to authenticate a user RESOLVED :Margaret Leibovic
942283 -- Provide a way to add RSS feeds to lists on about:home RESOLVED Michael Comella (:mcomella) [NI reported issues only: ex-Mozilla]
942288 -- Allow panel add-on to push data to content provider from JS RESOLVED :Margaret Leibovic
942293 -- [meta] Support for additional layout and view types RESOLVED
942295 P1 Folder view for dynamic panels RESOLVED Josh Dover [:jdover]
942875 -- Create "Home page lists" settings page VERIFIED Chenxia Liu [:liuche]
942877 P3 Promo panel to advertise customization in about:home RESOLVED :Margaret Leibovic
942878 P1 Add a new panel from Settings VERIFIED Chenxia Liu [:liuche]
942879 P3 Adding panel from promo banner RESOLVED :Margaret Leibovic
942884 -- UI for adding a "RSS" list RESOLVED
942885 -- UI for adding a "Firefox" list RESOLVED
942886 -- Interaction between Adding Lists and Quick Share RESOLVED
942889 -- Lists - Gallery layout RESOLVED Sola Ogunsakin [:sola]
949039 -- Improve queryFakeItems to return more data, including different types of list items RESOLVED :Margaret Leibovic
949172 -- Implement proper HomeConfigBackend to load and save HomePager configuration RESOLVED Lucas Rocha (:lucasr)
949174 -- Implement invalidation routine for HomePager configuration RESOLVED Lucas Rocha (:lucasr)
949178 P1 Remove reading list button from reader mode toolbar VERIFIED :Margaret Leibovic
949181 -- Get rid of the hardcoded Page enum in HomePager RESOLVED :Margaret Leibovic
949429 -- Intermittent PROCESS-CRASH | java-exception | java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257) RESOLVED Lucas Rocha (:lucasr)
952310 -- Create database schema for HomeProvider RESOLVED :Margaret Leibovic
952311 -- Update home config when new panels are added/removed RESOLVED Lucas Rocha (:lucasr)
953306 -- Bugzilla API list add-on RESOLVED
958171 -- HomePager doesn't handle live config changes properly RESOLVED Lucas Rocha (:lucasr)
958175 -- Ensure panels are registered with a unique id RESOLVED :Margaret Leibovic
958179 -- Rename Home.lists API to Home.panels RESOLVED :Margaret Leibovic
958185 -- Rename "page" things to "panel" things in the home code RESOLVED Lucas Rocha (:lucasr)
958189 -- Rename ListManager to PanelManager RESOLVED :Margaret Leibovic
958192 -- Use gecko messages to request current set of available panels from JS RESOLVED :Margaret Leibovic
958655 -- Rename Page* to Panel in new Home Lists code RESOLVED
959772 -- Create a generic PanelType and corresponding *Panel class for third-party panels RESOLVED :Margaret Leibovic
959777 -- Dynamically build views for third-party panel content from PanelConfig RESOLVED Lucas Rocha (:lucasr)
959862 -- Expand Home.panels API to specify contents of panels RESOLVED :Margaret Leibovic
959917 P2 Make Home Panel settings reorderable VERIFIED Chenxia Liu [:liuche]
960359 P1 Home banner will never show up if user disables "Top Sites" panel VERIFIED Josh Dover [:jdover]
961092 -- Update HomeListsProvider to use the SQLiteBridge RESOLVED :Margaret Leibovic
961093 -- Improve SQLiteBridge performance RESOLVED
962651 -- Finalize strings for Home Panels Settings RESOLVED Chenxia Liu [:liuche]
963036 -- Use JSON boolean to store the panel's default and disabled flags in HomeConfig RESOLVED Lucas Rocha (:lucasr)
963046 -- Implement image loading infrastructure for panel views RESOLVED Lucas Rocha (:lucasr)
963051 -- "Home page lists" settings page causes Nightly to stop RESOLVED Chenxia Liu [:liuche]
963352 -- Add more testcases to TestHomeProvider RESOLVED
963404 -- Refactor HomeContextMenuInfo creation RESOLVED Sola Ogunsakin [:sola]
963721 -- Handle clicks on views in dynamic panels RESOLVED Josh Dover [:jdover]
963817 P1 Wrap HomeStorage data insertion loop in a transaction RESOLVED Lucas Rocha (:lucasr)
964375 -- Add auto-install option to Home.panels.add API RESOLVED Lucas Rocha (:lucasr)
964447 -- Create specific update window for HomeProvider storage RESOLVED :Margaret Leibovic
964464 -- Update testHomeListsProvider to test new schema RESOLVED
964485 -- Calling `HomeStorage.deleteAll()` on a non-existing table throws error RESOLVED
964508 -- Rename TwoLineRow members to match the latest dataset terminology RESOLVED Lucas Rocha (:lucasr)
964901 -- Curate debug output for HomePanel add-on developers RESOLVED
964926 -- Update HomeProvider authority manifest declaration RESOLVED :Margaret Leibovic
965023 -- Use Object.freeze on exports of Home.jsm RESOLVED Peiyong Lin[:lpy](UTC+8)
965026 -- Audit HomePanel JS APIs to prevent undesired changes and abuse RESOLVED Josh Dover [:jdover]
965033 -- Hook up DynamicPanel to HomeProvider RESOLVED :Margaret Leibovic
965361 -- Show firefox watermark when you hide all panels in about:home RESOLVED Sola Ogunsakin [:sola]
965435 -- Add navigation tests for hidden home panels RESOLVED
965448 -- Investigate HomeProvider DB maintenance RESOLVED
965452 P2 Limit HomeProvider addon data storage RESOLVED :Margaret Leibovic
965454 -- Stress test home panel JS API RESOLVED
965457 P2 Investigate HomeProvider addon data expiration RESOLVED
965459 -- Investigate batch inserting from HomeProvider addon syncs RESOLVED
965460 -- Develop HomeProvider DB migration strategy RESOLVED :Margaret Leibovic
965520 -- Develop Home Panel addon API testing plan RESOLVED
965606 P1 Give users the choice to only sync home panel data when on wifi RESOLVED Chenxia Liu [:liuche]
965622 P1 Handle the case where there are no items for a given dataset id RESOLVED :Margaret Leibovic
966022 -- Implement the notion of itemType on existing panel views (list, grid) RESOLVED Lucas Rocha (:lucasr)
967286 P1 Default to Layout.FRAME if layout type isn't specified in Home.panels.add RESOLVED Lucas Rocha (:lucasr)
967742 -- Consolidate API to edit HomeConfig state RESOLVED Lucas Rocha (:lucasr)
968170 -- Trigger HomeConfig refreshes conditionally RESOLVED Lucas Rocha (:lucasr)
968172 P1 Avoid refreshing HomeConfig on every onLocaleReady() call RESOLVED Lucas Rocha (:lucasr)
968179 -- Fennec crashes when using PanelGridView RESOLVED Lucas Rocha (:lucasr)
968188 -- Pass a 'reason' to the Home.panels.add() and Home.panels.remove() APIs RESOLVED Lucas Rocha (:lucasr)
968308 P1 UI telemetry for home panels RESOLVED Sola Ogunsakin [:sola]
968475 -- Port existing about:home panels to dynamic panel types where applicable RESOLVED
968530 -- Basic robocop test for Home.panels API RESOLVED Curtis Rasmussen [:Crts]
968573 -- Refine interaction of clicks on dynamic panel items RESOLVED Lucas Rocha (:lucasr)
968878 -- Misc tweaks in PanelGridView layout RESOLVED Lucas Rocha (:lucasr)
968897 -- Implement Picasso downloader that uses the same HTTP stack than Favicons RESOLVED
969004 -- Make RSS panels pretty RESOLVED
969043 P2 Log warning if HomeProvider consumer tries saving data outside of sync window RESOLVED
969055 P1 Validate items beings saved with HomeProvider API RESOLVED Lucas Rocha (:lucasr)
969060 P1 Disabling dynamic panel set as default will put default panel in ambiguous state RESOLVED Lucas Rocha (:lucasr)
969316 -- Use description column instead of url in PanelListRow RESOLVED Lucas Rocha (:lucasr)
970700 -- Two line row description ellipsizes in the middle RESOLVED Lucas Rocha (:lucasr)
970702 -- Empty space in two line item rows when no image URL is specified RESOLVED Lucas Rocha (:lucasr)
970707 -- Implement pull-to-refresh for home page lists RESOLVED Josh Dover [:jdover]
972046 -- Rename home_empty*page.xml layouts to home_empty*panel.xml RESOLVED Lucas Rocha (:lucasr)
972098 P1 Cursors returned from the SQLiteBridge don't update when data updates RESOLVED Lucas Rocha (:lucasr)
972306 P1 Rename Home.panels.add/remove to Home.panels.register/unregister RESOLVED Lucas Rocha (:lucasr)
972351 -- Perform item handler check in PanelLayout RESOLVED Lucas Rocha (:lucasr)
972503 -- Allow home panel views to specify an initial filter RESOLVED Josh Dover [:jdover]
973137 -- Images in list panel disappear when it is opened in a new tab RESOLVED Lucas Rocha (:lucasr)
973666 -- Get rid of TwoLineRow view RESOLVED Lucas Rocha (:lucasr)
973667 -- Get rid of the HomeGridView style RESOLVED Lucas Rocha (:lucasr)
973670 -- PanelGridView needs better pressed state RESOLVED Lucas Rocha (:lucasr)
974035 P2 Only sync home provider data when dataset is used in an installed panel RESOLVED :Margaret Leibovic
974139 P1 Redefine registration logic to return panel options dynamically RESOLVED Lucas Rocha (:lucasr)
974427 -- Generalize page_row_height dimension RESOLVED
974434 P2 Add support for items with variable height in PanelGridView RESOLVED
974454 P2 Allow showing only description in panel image items RESOLVED Lucas Rocha (:lucasr)
974598 -- Handle full refreshes from locale changes immediately in HomeConfigInvalidator RESOLVED Lucas Rocha (:lucasr)
974601 P2 Avoid saving new configuration on refresh if still using default HomeConfig RESOLVED Lucas Rocha (:lucasr)
974926 P1 Rename _panels to _registeredPanels in Home.jsm RESOLVED Lucas Rocha (:lucasr)
974983 P5 Reorder Home panels in Settings via dragging RESOLVED
974991 -- Write addon developer Home Panel API documentation RESOLVED :Margaret Leibovic
975055 P1 Show current filter and back UI for Hub panels RESOLVED Josh Dover [:jdover]
975091 P1 Extra padding on some list item titles VERIFIED Lucas Rocha (:lucasr)
975198 P1 Globe icon appears when image doesn't load in grid view RESOLVED Lucas Rocha (:lucasr)
975284 -- Add test for periodic data sync RESOLVED
975357 P1 Initialize HomeConfigInvalidator in GeckoApplication.onCreate() RESOLVED Lucas Rocha (:lucasr)
975841 -- crash in org.mozilla.gecko.sqlite.SQLiteBridgeException: Can''t prepare statement: no such column: filter at org.mozilla.gecko.sqlite.SQLiteBridge.sqliteCallWithDb(Native Method) RESOLVED Lucas Rocha (:lucasr)
976064 P2 Create a loader per panel view instead of per dataset id RESOLVED Lucas Rocha (:lucasr)
976122 P1 HomePanels:Get is broken RESOLVED Lucas Rocha (:lucasr)
976155 -- Implement 'schema upgrades' for HomeConfig RESOLVED
976335 P1 Tablet tab strip does not overflow properly VERIFIED :Margaret Leibovic
977200 P1 Create Firefox Hub add-on for subscribing to arbitrary RSS feeds VERIFIED :Margaret Leibovic
977980 -- Add "Remove" as an option for dynamic Home panels RESOLVED Chenxia Liu [:liuche]
978306 P3 [meta] Improve UX for navigating many panels RESOLVED
978991 P1 Hook for add-ons when panel is added/removed RESOLVED :Margaret Leibovic
979776 -- Allow section tabs in hub panels RESOLVED
979780 -- Allow hub pages to have detailed settings linked to from the Customize pane RESOLVED
980979 -- Write unit tests for the HomeConfig API RESOLVED
982172 -- Fix race condition with filter stack in panel adapter RESOLVED Josh Dover [:jdover]
982190 -- Allow addons to specify custom filter 'up' image RESOLVED Josh Dover [:jdover]
982420 -- Unit tests for PanelAuthCache RESOLVED
982461 -- Support launching an intent to the current application package RESOLVED :Margaret Leibovic
982699 -- Use super-toast confirmation on adding new Home Panel RESOLVED
983424 P1 World cup RSS add-on RESOLVED :Margaret Leibovic
985134 -- Create a custom view for empty panel layouts RESOLVED
985211 -- Disabling hub panels in regular mode affects guest mode RESOLVED Lucas Rocha (:lucasr)
987175 P1 Hide "Add panel" settings item for fx30 VERIFIED :Margaret Leibovic
987238 -- Telemetry probe for size of home.sqlite RESOLVED
987796 -- Secreview: Fennec / Firefox Hub RESOLVED Mark Goodwin [:mgoodwin]
987869 P3 Show promoted panels in the panel picker RESOLVED :Margaret Leibovic
988355 P2 Only force reload on configuration changes in DynamicPanel RESOLVED Lucas Rocha (:lucasr)
988909 P2 Context menus for dynamic panels VERIFIED :Margaret Leibovic
988930 P2 Auth view button overlaps text in landscape mode on phones RESOLVED
989430 P2 Don't offer to add panels when none are available RESOLVED :Margaret Leibovic
989617 -- Home panels don't animate animated gifs in image_url. RESOLVED
990066 -- Update generator function declarations in HomeProvider.jsm RESOLVED zliu.ur
991190 -- Rename Home.panels.authHandler API to Home.panels.auth RESOLVED :Margaret Leibovic
993552 -- Restore scroll position in about:home panel RESOLVED
993749 P1 More padding in ArticleItemView VERIFIED :Margaret Leibovic
995420 P1 crash in java.lang.NullPointerException: at org.mozilla.gecko.home.DynamicPanel$PanelDatasetLoader.loadCursor(DynamicPanel.java) VERIFIED :Margaret Leibovic
996669 -- onuninstall listener can be called after panel is unregistered RESOLVED :Margaret Leibovic
996708 P2 Set an explicit width/height for images in dynamic panel empty views RESOLVED :Margaret Leibovic
997055 P1 The same feed is added in multiple panels in the home page VERIFIED :Margaret Leibovic
997328 P2 SharedPreferences.jsm and SharedPreferencesHelper are not using same prefs RESOLVED Josh Dover [:jdover]
999483 P2 Allow pull-to-refresh from the panel's empty state RESOLVED
999751 -- There is no default panel if default panel is uninstalled RESOLVED
999756 P2 Empty view flashes while view is refreshing RESOLVED :Margaret Leibovic
999760 -- Images in article items are mis-aligned VERIFIED :Margaret Leibovic
999853 P1 java.lang.IllegalArgumentException: Path must not be empty. RESOLVED :Margaret Leibovic
1000616 P1 PanelViewItemHandler.mItemOpenListener is null when panel list view replaces empty view RESOLVED :Margaret Leibovic
1000849 P1 Panel view sometimes does replace empty view after dataset updates VERIFIED :Margaret Leibovic
1002711 -- Authentication state pref remains after panel is uninstalled RESOLVED
1004481 -- Support text in footer area of empty views RESOLVED
1005562 -- HomeProvider.addPeriodicSync() does not work RESOLVED
1006081 -- Wrap descriptions on grid view items RESOLVED
1006947 P1 HomeProvider: org.mozilla.gecko.sqlite.SQLiteBridgeException: Can't step statement: (5) database is locked RESOLVED Richard Newman [:rnewman]
1007408 -- Throttle onrefresh calls in home panels RESOLVED :Margaret Leibovic
1007793 -- Notify HomeProvider consumers when they're storing too much data RESOLVED
1009473 -- Polish image list view VERIFIED :Margaret Leibovic
1009475 -- Jank when scrolling hub pages with lots of images RESOLVED
1009561 -- Consider adding ItemType options to panels RESOLVED
1009572 -- Disabling dynamic panel set as default will put default panel in ambiguous state RESOLVED
1009586 -- Get rid of "Add panel" menu item in home settings VERIFIED :Margaret Leibovic
1010359 -- Add an option to disable ellipsizing in Home Panels RESOLVED
1012195 -- Android home panel icon size changed between Firefox 31 and 32 RESOLVED
1015015 -- HomePanel uninstall isn't robust RESOLVED
1017554 -- Regression: Empty lists view, no data is shown or fetched VERIFIED :Margaret Leibovic
1022472 -- Remove margins on default home screen panels RESOLVED Richard Newman [:rnewman]
1023544 -- No way to remove dynamic panel added by home feeds add-on VERIFIED :Margaret Leibovic

179 Total; 0 Open (0%); 159 Resolved (88.83%); 20 Verified (11.17%);


Implementation

Glossary

  • Hub: The official name of this project
  • panel: user-visible section on about:home, formerly known as a "page"
  • view: user-visible section in a panel, backed by one set of data
  • dataset: ordered set of data specified by an add-on service, stored in a content provider
  • home config: used to determine what panels to show on about:home, user can change this in settings
  • panel config: used to determine what views (and their corresponding data) to show in a panel
  • dynamic panel: panel whose contents are specified by a panel config that is created from the JS API
  • layout: used to define the arrangement of views within a dynamic panel
  • list: don't use this term
  • widget: don't use this term
  • provider: don't use this term (some service provider can make an add-on, but the idea of a "provider" is out of the scope of this feature)

High-Level Architecture

(Disclaimer: not all these things have landed yet)

  • Home.jsm: APIs to register panels, used to specify layout for panel, which includes views and the dataset ids that back them
  • HomeProvider.jsm: APIs to store data from the JS side, data is stored with a dataset id - bug 942288
  • HomeProvider.java: Content provider that performs queries from the Java side, uses the SQLiteBridge - bug 961092, bug 952310

Documentation

They are living documents, please help improve them if you can!

Demo add-ons

Goals

Ship the first cupcake-sized iteration of third-party integration functionality, focused on one or two initial service providers, in Fx30.

This initial iteration focuses on:

  • Signing in or signing up to one or more integrated third-party services
  • Managing the services in a new Settings page
  • Viewing and interacting with the integrated & signed-in services by way of added "my list" home screens

Use cases

Must have

  1. Service A Integration (API, sign-in / sign-up flow hand-off, viewing their files)
  2. Sign in to Service A via a flow initiated from the new swipe-able home screen
  3. Sign up to Service A via a flow initiated from the new swipe-able home screen
  4. Sign in to Service A via a flow initiated from the menu -> settings page
  5. Sign up to Service A via a flow initiated from the menu -> settings page
  6. Direct users to the menu -> settings page OR new home screen from the about:home snippets banner
  7. Add a menu -> settings page to manage the home screens (inc 3rd party providers)
    1. Add
    2. Remove
  8. Ability for a user to view – in ONE view – their files from their Service A account in their Service A home screen
    1. Must include: gifs, pngs, jpegs, PDFs... (anything that can be viewed within our browser)
    2. Question: can anything be done to view docs or xls? -> look for an app and punt it out?
    3. Must incorporate an error or some other message to the user if we cannot open a file type
    4. Ability to add URLs and display said URLs in this list (including video / audio files)
    5. Ability to save PDFs to this list
  9. Quickshare integration
    1. Ability to have Service A be in the default (visible) position for new and current users (NOTE: for current users, this can only happen if we display 2 icons upon release: the user’s most used intent + the addition. THEN the algorithm should kick in to replace these icons with the top two most shared.)
    2. Ensure Quickshare icons are set via the algorithm based on usage
    3. If Service A is not yet set up, pressing the icon should send the user to the sign in / sign-up flow (and be able to cancel out of that operation and send you back to the original spot)
  10. If only Service A, can we add RSS / website feed subscribing as an alternative/second service?

Nice to have

  1. Service B integration (API, sign-in / sign-up flow hand-off, viewing their files)
  2. Sign in to Service A (or Service B) via a flow initiated from the about:home snippets banner
  3. Sign up to Service A (or Service B) via a flow initiated from the about:home snippets banner
  4. Ability to add Offline Reader List Articles and display said articles in this list (how would this display in a Service A user's account from a non-Firefox interface)
  5. Flow to automatically use Service A as a repository for all downloads from the browser
  6. Integrating (adding) RSS feeds or websites
  7. Iterating on the menu -> settings page to manage the home screens (inc 3rd party providers)
    1. Rearrange
    2. Suggest
    3. Automatic downloads to a selected provider
  8. WebActivities

UX design

Justification

The Firefox Hub experience is one of the primary new features we have slated for 2014, and supports the majority of our goals, including:

  • User value & user delight = marketshare & organic growth - we believe that the Firefox Hub will help unify users' web experiences across sites, services, and apps. This initial MVP is only the beginning, but there is huge potential in this feature to bring the browser back into the centre of a user's web habits. This is in support of our marketshare & pre-install goals.
  • Habit-share/usage - increasing how often and how much a user uses their browser, the better. Greater usage leads to greater mindshare leads to greater organic growth and marketshare, as well as helping promote our browser to third-party services & potential partners.
  • Rev-share and co-marketing - working with third-party services is a key factor in our plans for 2014.
  • Webapp/ecosystem support - while not directly part of this initial MVP, we have plans to do webapp integration as part of this in the future, as well as using Firefox Accounts to help support these features for users across devices. Could also eventually integrate Marketplace as a part of the core Firefox Hub experience, when we have a better idea of how we want to promote Marketplace within the browser.

References and other info

Quality criteria

  • No user-perceptible performance degradation
  • All goals are met
  • All "must have" user stories/use cases are implemented & tested