Firefox/Projects/Firefox Start
Instead of loading Firefox Start from the network, use a locally hosted web application that provides the same functionality but offers greater potential for user control & customization, as well as engagement and interaction between Mozilla and users.
- Proposed by: beltzner, cbeard
- Project lead: mak
- Project members: mak, beltzner, cbeard, limi, justin
Status
Shipped in Beta 5 - need to improve styling, implement snippet support.
Next steps
- restyle with updated logos and look to match Google.com
- retrieve snippets from mozilla hosted service
- create a site to host test snippets on
Goals
- locally hosted page with
- no chrome privilege required
- some form of offline experience
- control/customization of search engine used
- ability to display user engagement messages from mozilla.com servers
- do all of the above in a scalable and measurable way
- track performance and conversion of each snippet
Non Goals
- ability to perform history/cache searches when offline
- option to use Google-hosted Firefox Start page
- For the initial implementation will not feature any dynamic content like history/bookmark lookups.
- segment on anything other than:
- client version
- last client update
- client host operating system
- client locale
- add-ons installed on client
- understand the impressions of each snippet
Timeline / Milestones
Phase 1 : locally hosted replacement
- host local HTML/JS/CSS content (done)
- ensure search codes remained consistent with existing page (localization, geoip/load balancing redirects)(partially done)
- ensure cookies are not sent when page loads
- ensure client ships with default set of snippets for initial offline support
Phase 2 : add dynamism, offline support
allow search engine to be modified based on Search Box selectionfollow-up, perf hog due to content priv.- add dynamic snippet delivery and display (partially done)
- add offline detection and messaging
- cdn hosting of snippets
- async fetch of content with analytics on click-through
Phase 3 : bells and whistles (time permitting)
- design changes
- multi-variant testing support
- some local places DB analysis (about:me style stuff)
Timeline TBD
These are the bugs of interest:
Bug & Summary | Owner | Status |
---|---|---|
bug 563723 - add about:home to mimic Firefox Start | mak | awaiting review |
bug 563738 - Add current Mozilla "snippets" in the about:home page | mak | awaiting review |
bug 544819 - Bug 544819 - Create a basic Home Tab linking to the current Home Page | nobody | haven't started, waits app tabs |
Requirements
- privacy: do not send any data to third party web services when loaded
- performance: benchmark to show performance difference over web-hosted Firefox Start
- performance: don't hit moz servers for every impression
- performance: better offline experience than web-hosted Firefox Start
- metrics: ability to do a/b testing with engagement pieces
Dependencies
- product: talk with Google to arrange a technical contact and to ensure a smooth handoff (beltzner) done
- webdev: engagement pieces to be delivered from mozilla.com service
- fix localStorage bug: it does not allow to set entries for URIs without a host (about: pages have just scheme and path). bug 568091 (done)
- localStorage is main-thread only (IO on another thread is future target though since not really needed for first implementation). (follow-up)
- Use search service engine definitions, inject from chrome context at startup (done)
Design Specification
Visual Design
Sketch and tracking bug coming soon, but essentially:
- increase font size in textbox
- use better version of search service logo
- change layout so that it doesn't look as squooshed
- leave space for snippets more or less where they exist now
- add links to privacy policy, user rights
Snippet Service
A service will be hosted on mozilla.com that will deliver a JSON file that contains HTML, CSS, JS and media content used to create a user-facing "snippet" that will be presented on the Firefox Start page. This snippet will use web technology, including JS, and can be interactive / dynamic as required.
- service endpoint will accept parameters so that snippet can be differentiated based on:
- client version
- last client update
- client host operating system
- client locale
- add-ons installed on client
- service will return a single JSON file that contains
- HTML files
- CSS files
- JS files
- media files (PNG, WEBM, etc)
- service will be able to handle load of being checked once a day by all Firefox clients
(delete this if you want... just throwing this out there for discussion)
possible architecture
morgamic's questions:
- metrics: how would we track conversion and click through rates (use an existing system)
- enterprise solutions: how would we integrate a pre-existing solution without degrading service level
- what kind of admin functions are crucial
- disaster recovery - how do we tell firefox we are down, or enter a static only mode
- cheap checks - can we set it up so client only pulls if content-length header is changed for json feed (and skip downloading entire document)
Snippet Presentation in Client
The client will store the snippet content on the user's local disk (either as flat file or using appcache / offline storage?) and display it as part of the Firefox Start page in an iframe. The client will update the snippet asynchronously at most once per 24 hour period; any additional rotation/varying of the user facing content will need to be handled by the snippet itself.
- client will check mozilla hosted service at most once per day
- client will download JSON file from mozilla hosted service if update available
- client will unpack resources from JSON file and store locally
- client will render locally stored content in iframe on Firefox Start page
Testing
tbd
Related Projects
- Application Tabs
- Home Tab