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)

ID Priority Summary Status Whiteboard Assigned to

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)

ID Priority Summary Status Whiteboard Assigned to
969043 P2 Log warning if HomeProvider consumer tries saving data outside of sync window REOPENED
974434 P2 Add support for items with variable height in PanelGridView NEW
988930 P2 Auth view button overlaps text in landscape mode on phones NEW [lang=java]
999483 P2 Allow pull-to-refresh from the panel's empty state NEW

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


Open P3 bugs

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

ID Priority Summary Status Whiteboard Assigned to
978306 P3 [meta] Improve UX for navigating many panels NEW

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



All bugs

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

179 Total; 39 Open (21.79%); 120 Resolved (67.04%); 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