Marketplace/Tarako/Technical design
The Tarako device class is a low-cost smartphone. In order to allow the Marketplace to work on such a device, a different architectural approach must be taken.
Technical requirements and constraints
Known device and environment constraints (as of 2014/04/28)
- 128MB RAM
- 30MB RAM max for an app
- 6MB available for browser cache
- 15MB a safe ceiling for local storage (non-browser)
- attempts to multitask result in OOM and app shutdowns requiring restart, reboot in some cases
- no GPS
Relevant audience and environment research highlights
- EDGE use is popular, and should be treated as a baseline
- users are aware they are getting a "smartphone" and have expectations about quantity of apps in the catalog
- users are used to slower connections
- advertising is seen as questionable / bad
- network / data will be heavily constrained
Known FxOS/other issues (as of 2014/04/28)
- we will not have feature detection API in 1.3T
- keyboard bug (https://bugzilla.mozilla.org/show_bug.cgi?id=984635) may appear more regularly in marketplace? Krupa to verify.
Design drivers
- navigating: we should be as close to a flat page as we can be (safest to assume hierarchical navigation won't be usable for target audiences, and so they wouldn't use it); utility of search is equally unclear.
- apps need to be targeted: need to be ones that run well on Tarako class devices; need to be most relevant.
- operator shelf not necessary for launch (potentially at all).
- low bandwidth, high latency: performance issues related to network latency are likely to be seen as less of a big deal than we see them as, these slow networks are the norm in the target markets.
- lower end of the market implies lower levels of education & literacy: possibly replace category labels with icons? streamline app detail pages.
- home page content must be targeted as specifically as possible.
Technical drivers
- device / environment constraints
- design drivers
- KPIs for performance
KPIs for performance
- TMP initial launch: <3000ms baseline, <2000ms target
- TMP load (wifi): <8000ms baseline, <5000ms target
- TMP load (edge): <10000ms target
Position
With an aggressive timeline for v0 delivery and outstanding blockers on key aspects (Persona, GA), the chosen approach for v0 was that of a separate hosted app that could be locally cached over a real packaged app or possibly futile optimizations of the existing marketplace.
This approach would allow for the development of a custom UI quickly, fast warm loads of the app, offline/transition use of the app, as well as the ability to iterate on changes to the app without deploying packages or requiring Gaia updates. The drawback is that we lose MNC/MCC access, and thus payments capability (though there are currently no paid apps anyway).
The ultimate goal is a real packaged app, re-instating billing, logins, and useful implementation of GA; because of the timeline, these will need to be all in future releases, as necessary.
Technical design details
Interfaces
0. Global: Searchbox at the top of the screen, below that is a navigation bar that shows icons and labels for Home, Games, Tools, and Lifestyle (the latter three are Tarako-specific aggregations of Marketplace categories).
1. Home page: shows a random selection of 6 apps chosen from those editorially designated for the homepage collection, and four buttons for Help, Feedback, Privacy Policy, and and Terms of use.
2. Category list view: shows all apps in that category.
3. Search results: shows all apps meeting the search criteria, as well as a header below the global elements that shows a result count on one side of the screen and a toggle control on the other that switches between compact and expanded views of each app.
4. Compact / Expanded app view: shows the basic information for an app; the expanded view reveals a thumbnail of a screenshot.
5. Detail view: shows more information for the app, including a description and a thumbnail of a screenshot that the user can (if online) click on to load a full screenshot.
Content filtering
6. Filtering apps for device: short-term: creating specific collections for apps while will be served to devices identified by UA only; long-term: integrated dev submission flow, review verification, and feature detection API used to filter apps for device.
Offline capability
7. Local caching of marketplace data: enables offline use and improves performance; incremental background cache updates when online.
8. Queuing of apps: to be installed when online next.
Search functionality
9. "Prepopulated" search results for anticipated terms (delivery TBD).
Home page freshness
10. The homepage experience will be very simple: there will be a list of 6 editorially-chosen apps. These apps will be a random subset of a "Tarako Featured" collection maintained by the curation team. Target size of collection: 40-60 apps. We'll store the full contents of this collection locally, updating its content as a connection is available. To maintain the appearance of editorial freshness, the selection of apps displayed on the homepage will be updated each day, but will remain static throughout that day. The randomness will be weighted based on popularity and possibly other factors. Algorithm TBD.
Region (and language)
11. Region will be passed as a GET param. This allows us to use this same model to mitigate new markets coming online before we can use MCC data.
Domain
12. Per cvan in https://bugzilla.mozilla.org/show_bug.cgi?id=993730#c3: "we could have it live at https://marketplace.firefox.com/lite/ - that would solve our origin issues so we wouldn't have to have an 'iframe' marketplace.firefox.com and do 'postMessage' logic to handle installs for apps with bad 'installs_allowed_from' values (bug 965964)."
Repository
Omitted functionality for v0
- login
- submissions of user ratings or reviews
- display of reviews
- payments
Tentative release schedule (draft)
- v0.0: April 2014 -- described above
- v0.1: May 2014 -- includes anything described above that does not make it into v0. Goals: limited offline caching of first few pages of apps required + online retrieval of the rest as necessary; lazy loading of images; pagination; (most likely) content ratings; queuing revisions.
- v0.2: July 2014 -- revisions based on device and user testing in-market (most likely additional localization, translations, etc).
- v0.3: TBD 2014 -- convert existing functionality to a real packaged app.
- v0.4: TBD 2014 -- add login, user rating and review submissions, list of my installed apps.
- v0.5: TBD 2014 -- add payments and region detection.