Personal tools

Mobile/Projects/Third-party service integration MVP

From MozillaWiki

Jump to: navigation, search

Contents

Weekly stand-up meeting

Tracking

Open P1 bugs

These bugs are blockers for Firefox Hub v1 (shipping in Fx30)

ID Priority Summary Status Whiteboard Assigned to
949178 P1 Rethink access to Reading List from Reader Mode ui NEW shovel-ready lucasr.at.mozilla
965026 P1 Audit HomePanel JS APIs to prevent undesired changes and abuse NEW jdover
976335 P1 Tablet tab strip does not overflow properly NEW margaret.leibovic
993749 P1 More padding in ArticleItemView NEW margaret.leibovic
997328 P1 SharedPreferences.jsm and SharedPreferencesHelper are not using same prefs ASSIGNED jdover

Open; Resolved; Total (0% complete)


Open P2 bugs

These bugs are blockers for Firefox Hub v2 (feature complete, targeting Fx31)

ID Priority Summary Status Whiteboard Assigned to
942877 P2 Promo panel to advertise customization in about:home NEW margaret.leibovic
942879 P2 Adding panel from promo banner NEW margaret.leibovic
961093 P2 Improve SQLiteBridge performance NEW shovel-ready
965452 P2 Limit HomeProvider addon data storage NEW margaret.leibovic
965454 P2 Stress test home panel JS API NEW
965457 P2 Investigate HomeProvider addon data expiration NEW
969043 P2 Log warning if HomeProvider consumer tries saving data outside of sync window REOPENED lucasr.at.mozilla
974434 P2 Add support for items with variable height in PanelGridView NEW lucasr.at.mozilla
978306 P2 Decide UX for navigating many panels NEW
987869 P2 Show promoted panels in the panel picker NEW margaret.leibovic
988909 P2 Context menus for dynamic panels NEW oogunsakin
989430 P2 Don't offer to add panels when none are available NEW margaret.leibovic

Open; Resolved; Total (0% complete)


All bugs

ID Priority Summary Status Whiteboard Assigned to
862805 -- Allow add-ons to register custom lists on about:home RESOLVED margaret.leibovic
909618 P1 Remember about:home tab selection VERIFIED oogunsakin
940565 -- Update home.HomePager.Page enum usage to handle multiple pages of the same type RESOLVED lucasr.at.mozilla
940575 P1 Implement per-profile SharedPreferences, eliminating uses of PreferenceManager RESOLVED shovel-ready lucasr.at.mozilla
941318 -- Create content provider to store "My List" data RESOLVED shovel-ready margaret.leibovic
942231 -- Allow for reordering and removing home page tabs RESOLVED lucasr.at.mozilla
942281 P2 Provide a way for a service add-on to authenticate a user RESOLVED shovel-ready margaret.leibovic
942283 -- Provide a way to add RSS feeds to lists on about:home RESOLVED shovel-ready michael.l.comella
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 NEW
942295 P1 Folder view for dynamic panels RESOLVED jdover
942875 -- Create "Home page lists" settings page RESOLVED shovel-ready liuche
942877 P2 Promo panel to advertise customization in about:home NEW margaret.leibovic
942878 P1 Add a new panel from Settings RESOLVED shovel-ready liuche
942879 P2 Adding panel from promo banner NEW margaret.leibovic
942884 -- UI for adding a "RSS" list RESOLVED
942885 -- UI for adding a "Firefox" list NEW
942886 -- Interaction between Adding Lists and Quick Share NEW
942887 -- Lists - Article layout (phone) NEW
942888 -- Lists - Videos layout (phone) NEW
942889 -- Lists - Gallery layout RESOLVED oogunsakin
942891 -- Lists - Article layout (tablet) NEW
942894 -- Lists - Videos layout (tablet) RESOLVED
942897 -- Lists - Mixed layout (phone) NEW
942898 -- Lists - Mixed layout (tablet) RESOLVED
942901 -- Lists - offline access NEW
948509 -- Share handler overlay: "Send to Firefox" NEW
949039 -- Improve queryFakeItems to return more data, including different types of list items RESOLVED shovel-ready margaret.leibovic
949172 -- Implement proper HomeConfigBackend to load and save HomePager configuration RESOLVED shovel-ready lucasr.at.mozilla
949174 -- Implement invalidation routine for HomePager configuration RESOLVED shovel-ready lucasr.at.mozilla
949178 P1 Rethink access to Reading List from Reader Mode ui NEW shovel-ready lucasr.at.mozilla
949181 -- Get rid of the hardcoded Page enum in HomePager RESOLVED shovel-ready 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 lucasr.at.mozilla
952310 -- Create database schema for HomeProvider RESOLVED shovel-ready margaret.leibovic
952311 -- Update home config when new panels are added/removed RESOLVED shovel-ready lucasr.at.mozilla
953306 -- Bugzilla API list add-on NEW shovel-ready
958171 -- HomePager doesn't handle live config changes properly RESOLVED lucasr.at.mozilla
958175 -- Ensure panels are registered with a unique id RESOLVED shovel-ready margaret.leibovic
958179 -- Rename Home.lists API to Home.panels RESOLVED shovel-ready margaret.leibovic
958185 -- Rename "page" things to "panel" things in the home code RESOLVED shovel-ready lucasr.at.mozilla
958189 -- Rename ListManager to PanelManager RESOLVED shovel-ready margaret.leibovic
958192 -- Use gecko messages to request current set of available panels from JS RESOLVED shovel-ready 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 lucasr.at.mozilla
959862 -- Expand Home.panels API to specify contents of panels RESOLVED shovel-ready margaret.leibovic
959917 P2 Make Home Panel settings reorderable RESOLVED shovel-ready liuche
960359 P1 Home banner will never show up if user disables "Top Sites" panel VERIFIED jdover
961092 -- Update HomeListsProvider to use the SQLiteBridge RESOLVED margaret.leibovic
961093 P2 Improve SQLiteBridge performance NEW shovel-ready
962651 -- Finalize strings for Home Panels Settings RESOLVED liuche
963036 -- Use JSON boolean to store the panel's default and disabled flags in HomeConfig RESOLVED lucasr.at.mozilla
963046 -- Implement image loading infrastructure for panel views RESOLVED lucasr.at.mozilla
963051 -- "Home page lists" settings page causes Nightly to stop RESOLVED [native-crash] liuche
963352 -- Add more testcases to TestHomeProvider ASSIGNED [mentor=mcomella][lang=js] ameyabap
963404 -- Refactor HomeContextMenuInfo creation RESOLVED oogunsakin
963721 -- Handle clicks on views in dynamic panels RESOLVED shovel-ready jdover
963817 P1 Wrap HomeStorage data insertion loop in a transaction RESOLVED shovel-ready lucasr.at.mozilla
964375 -- Add auto-install option to Home.panels.add API RESOLVED lucasr.at.mozilla
964447 -- Create specific update window for HomeProvider storage RESOLVED margaret.leibovic
964464 -- Update testHomeListsProvider to test new schema NEW
964485 -- Calling `HomeStorage.deleteAll()` on a non-existing table throws error RESOLVED
964508 -- Rename TwoLineRow members to match the latest dataset terminology RESOLVED lucasr.at.mozilla
964901 -- Curate debug output for HomePanel add-on developers NEW
964926 -- Update HomeProvider authority manifest declaration RESOLVED margaret.leibovic
965023 -- Use Object.freeze on exports of Home.jsm RESOLVED [mentor=mcomella][lang=js] pylaurent1314
965026 P1 Audit HomePanel JS APIs to prevent undesired changes and abuse NEW jdover
965033 -- Hook up DynamicPanel to HomeProvider RESOLVED margaret.leibovic
965361 -- Show firefox watermark when you hide all panels in about:home RESOLVED shovel-ready oogunsakin
965435 -- Add navigation tests for hidden home panels NEW
965448 -- Investigate HomeProvider DB maintenance NEW
965452 P2 Limit HomeProvider addon data storage NEW margaret.leibovic
965454 P2 Stress test home panel JS API NEW
965457 P2 Investigate HomeProvider addon data expiration NEW
965459 -- Investigate batch inserting from HomeProvider addon syncs NEW
965460 -- Develop HomeProvider DB migration strategy RESOLVED margaret.leibovic
965520 -- Develop Home Panel addon API testing plan NEW
965606 P1 Give users the choice to only sync home panel data when on wifi RESOLVED 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 lucasr.at.mozilla
967286 P1 Default to Layout.FRAME if layout type isn't specified in Home.panels.add RESOLVED [mentor=margaret][lang=js] lucasr.at.mozilla
967742 -- Consolidate API to edit HomeConfig state RESOLVED lucasr.at.mozilla
968170 -- Trigger HomeConfig refreshes conditionally RESOLVED lucasr.at.mozilla
968172 P1 Avoid refreshing HomeConfig on every onLocaleReady() call RESOLVED lucasr.at.mozilla
968179 -- Fennec crashes when using PanelGridView RESOLVED lucasr.at.mozilla
968188 -- Pass a 'reason' to the Home.panels.add() and Home.panels.remove() APIs RESOLVED lucasr.at.mozilla
968308 P1 UI telemetry for home panels RESOLVED oogunsakin
968475 -- Port existing about:home panels to dynamic panel types where applicable NEW
968530 -- Basic robocop test for Home.panels API NEW shovel-ready ashish28.sirt
968573 -- Refine interaction of clicks on dynamic panel items RESOLVED lucasr.at.mozilla
968878 -- Misc tweaks in PanelGridView layout RESOLVED lucasr.at.mozilla
968897 -- Implement Picasso downloader that uses the same HTTP stack than Favicons NEW lucasr.at.mozilla
969004 -- Make RSS panels pretty RESOLVED
969043 P2 Log warning if HomeProvider consumer tries saving data outside of sync window REOPENED lucasr.at.mozilla
969055 P1 Validate items beings saved with HomeProvider API RESOLVED lucasr.at.mozilla
969060 P1 Disabling dynamic panel set as default will put default panel in ambiguous state RESOLVED lucasr.at.mozilla
969316 -- Use description column instead of url in PanelListRow RESOLVED lucasr.at.mozilla
970700 -- Two line row description ellipsizes in the middle RESOLVED lucasr.at.mozilla
970702 -- Empty space in two line item rows when no image URL is specified RESOLVED lucasr.at.mozilla
970707 -- Implement pull-to-refresh for home page lists RESOLVED jdover
972046 -- Rename home_empty*page.xml layouts to home_empty*panel.xml RESOLVED lucasr.at.mozilla
972098 P1 Cursors returned from the SQLiteBridge don't update when data updates RESOLVED lucasr.at.mozilla
972306 P1 Rename Home.panels.add/remove to Home.panels.register/unregister RESOLVED lucasr.at.mozilla
972351 -- Perform item handler check in PanelLayout RESOLVED lucasr.at.mozilla
972448 -- Add support for StaggeredGridView layout in dynamic panels NEW [mentor=margaret][lang=java][bad first bug]
972503 -- Allow home panel views to specify an initial filter RESOLVED jdover
973137 -- Images in list panel disappear when it is opened in a new tab RESOLVED lucasr.at.mozilla
973666 -- Get rid of TwoLineRow view RESOLVED lucasr.at.mozilla
973667 -- Get rid of the HomeGridView style RESOLVED lucasr.at.mozilla
973670 -- PanelGridView needs better pressed state RESOLVED lucasr.at.mozilla
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 lucasr.at.mozilla
974427 -- Generalize page_row_height dimension NEW [mentor=lucasr][lang=java]
974434 P2 Add support for items with variable height in PanelGridView NEW lucasr.at.mozilla
974454 P2 Allow showing only description in panel image items RESOLVED lucasr.at.mozilla
974598 -- Handle full refreshes from locale changes immediately in HomeConfigInvalidator RESOLVED lucasr.at.mozilla
974601 P2 Avoid saving new configuration on refresh if still using default HomeConfig RESOLVED lucasr.at.mozilla
974926 P1 Rename _panels to _registeredPanels in Home.jsm RESOLVED lucasr.at.mozilla
974983 -- Reorder Home panels in Settings via dragging NEW liuche
974991 -- Write addon developer Home Panel API documentation RESOLVED margaret.leibovic
975055 P1 Show current filter and back UI for Hub panels RESOLVED jdover
975091 P1 Extra padding on some list item titles RESOLVED lucasr.at.mozilla
975198 P1 Globe icon appears when image doesn't load in grid view RESOLVED lucasr.at.mozilla
975284 -- Add test for periodic data sync NEW
975357 P1 Initialize HomeConfigInvalidator in GeckoApplication.onCreate() RESOLVED lucasr.at.mozilla
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 lucasr.at.mozilla
976064 P2 Create a loader per panel view instead of per dataset id RESOLVED lucasr.at.mozilla
976122 P1 HomePanels:Get is broken RESOLVED lucasr.at.mozilla
976155 -- Implement 'schema upgrades' for HomeConfig NEW lucasr.at.mozilla
976335 P1 Tablet tab strip does not overflow properly NEW margaret.leibovic
976983 -- Display icons for Home Panels settings NEW
977200 P1 Create Firefox Hub add-on for subscribing to arbitrary RSS feeds RESOLVED margaret.leibovic
977980 -- Add "Remove" as an option for dynamic Home panels RESOLVED liuche
978306 P2 Decide UX for navigating many panels NEW
978991 P1 Hook for add-ons when panel is added/removed RESOLVED margaret.leibovic
979776 -- Allow section tabs in hub panels NEW [mentor=margaret][lang=java][bad first bug]
979780 -- Allow hub pages to have detailed settings linked to from the Customize pane NEW
980979 -- Write unit tests for the HomeConfig API NEW lucasr.at.mozilla
982172 -- Fix race condition with filter stack in panel adapter RESOLVED jdover
982190 -- Allow addons to specify custom filter 'up' image RESOLVED jdover
982420 -- Unit tests for PanelAuthCache NEW
982461 -- Support launching an intent to the current application package RESOLVED margaret.leibovic
982699 -- Use super-toast confirmation on adding new Home Panel NEW
983424 P1 World cup RSS add-on RESOLVED margaret.leibovic
985134 -- Create a custom view for empty panel layouts NEW
985211 -- Disabling hub panels in regular mode affects guest mode RESOLVED lucasr.at.mozilla
987175 P1 Hide "Add panel" settings item for fx30 RESOLVED margaret.leibovic
987238 -- Telemetry probe for size of home.sqlite NEW
987796 -- Secreview: Fennec / Firefox Hub NEW mgoodwin
987869 P2 Show promoted panels in the panel picker NEW margaret.leibovic
988355 P2 Only force reload on configuration changes in DynamicPanel RESOLVED lucasr.at.mozilla
988909 P2 Context menus for dynamic panels NEW oogunsakin
988930 -- Auth view button overlaps text in landscape mode on phones NEW margaret.leibovic
989430 P2 Don't offer to add panels when none are available NEW margaret.leibovic
989617 -- Home panels don't animate animated gifs in image_url. NEW
990066 -- Use Task.async in HomeProvider.jsm NEW [mentor=margaret][lang=js] zliu.ur
991190 -- Rename Home.panels.authHandler API to Home.panels.auth RESOLVED margaret.leibovic
993552 -- Restore scroll position in about:home panel NEW
993749 P1 More padding in ArticleItemView NEW 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 NEW margaret.leibovic
996708 -- Set an explicit width/height for images in dynamic panel empty views NEW
997055 -- The same feed is added in multiple panels in the home page NEW
997328 P1 SharedPreferences.jsm and SharedPreferencesHelper are not using same prefs ASSIGNED jdover

Open; Resolved; Total (62.8% complete)


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