Test Pilot/Universal Search: Difference between revisions

(→‎UX: Added Trello board)
 
(15 intermediate revisions by 7 users not shown)
Line 1: Line 1:
= Introduction =
= Introduction =


Universal Search is intent on connecting users with the content they've found or want to find on the web. How can we make it easier to navigate to that site you're looking for.  How can we improve the search experience, layout, presentation, performance to bring user delight? How can we better update and deploy the search experience in a more dynamic manner? We hope to solve some of these user challenges with Universal Search.
Universal Search is a project to unify the search access points in Firefox and offer a deeper, more engaging search experience by making local results richer and by including results from the best of the web.


Our first product milestone is a unified location and search experience coupled with an augmented places database.
= Contributing =
=== People to know ===
The people below are good contact points for this test.  It's easiest to get in touch with us on [irc://irc.mozilla.org/#universal-search IRC] or our mailing list.  See details on the [https://wiki.mozilla.org/Test_Pilot#If_you_have_an_idea.2C_feel_free_to_reach_out Test Pilot wiki page].


= Road Map =
{| class="wikitable"
* Land initial prototype in UX branch
|-
* Implement metrics/KPI for usage stats in nightly/devEd/beta
! Product
! Engineering
|-
| Nick Chapman (irc: nchapman)
| Chuck Harmston (irc: chuck)
|-
|
| Jared Hirsch (irc: _6a68)
|}


== Landing prototype in the UX Firefox Branch ==
== Product Roadmap ==
* The location bar drop down UI will be updated and cached from a remote server.
* Layout can be customized and tested.


==Baseline Metrics ==
* [https://trello.com/b/ojJPAvsU/universal-search Product Roadmap]
* [https://www.dropbox.com/sh/ud8lgj1kzfaytjf/AADmjISItw3rUfjnNVvkEpwua?dl=0 UX Mockups]
* [https://github.com/mozilla/universal-search/releases changelog]


In order to establish a comparative baseline against which to test our prototypes, we need to better understand how users use the:
== Developer Overview ==
* location (awesome) bar
* the search field
* open up common sites
* find sites in their history
* how they find and navigate to new sites.


== Universal Search Metrics ==
The Universal Search project modifies the contents of the dropdown panel that is shown when you type in the urlbar.


M1. Make it easier to update and A/B test the location bar drop down
We've implemented this in two different ways:
* Use HTML5/JS/CSS
# The current focus is an add-on that inserts a server-generated recommendation above the existing results, using XUL for the UI.
* Enable A/B testing, fractional deployment
# There is also an older add-on that replaces the entire results list with an iframe, using HTML5 for the UI.
* Enable remote updating of the content and layout
** A base layout will ship with Firefox binary but a newer version can be fetched and cached


=== Dependencies ===
Both add-ons generate recommended results using the same naive algorithm: given a search string, get search suggestions; send the top suggestion to a search engine; return the top search result to the user.
* Need test and infrastructure that supports
** Fractional deployment and metrics to validate release
** Clear testing process and acceptance
** Revert to last good version of iframe contents


= Resources =
We switched from HTML to XUL mid-Q1 in response to changes in product's short-term (Q1 2016) roadmap. Rather than experiment with the layout and appearance of the UI, we are now simply inserting a single recommendation above the results list, in order to see if users like recommendations at all. When we get a longer-term roadmap, the iframe-based prototype might turn out to be the better choice for some or all future experiments.


== Contributing ==
=== GitHub repositories ===


* Have great ideas about search features? Let us know: https://etherpad.mozilla.org/universal-search-ideas
Current add-on:
* Github repos below. PR away!
* Add-on repo: https://github.com/mozilla/universal-search
* Recommendation server repo: https://github.com/mozilla/universal-search-recommendation
* Waffle board tracks work in progress: https://waffle.io/mozilla/universal-search


== UX ==
Older, inactive, iframe-based add-on:
* Add-on repo: https://github.com/mozilla/universal-search-addon
* iframe repo: https://github.com/mozilla/universal-search-content
* The older add-on does work, and can be downloaded from https://people.mozilla.org/~jhirsch/universal-search-addon.


* Universal Search vision presentation: [coming soon!]
=== XBL ===
* Universal Search MVP UI: https://people.mozilla.org/~jgruen/universal-search-mvp/
* Universal Search UX Idea Backlog: https://trello.com/b/5IwogY0o/universal-search-ux


== Repos ==
XBL is the language used to modify the popup contents. XBL is a relic from the era of profound XML optimism, so code is written as XML data; and the documentation describes versions of the language that were never implemented, but no docs exist that describe how it actually works in Firefox. XBL shares the global window with JS, but has its own set of DOM bindings; you'll have to override XBL event handlers to hook into existing event-driven behavior, like key or mouse events, but you'll have fewer surprises if you actually handle the event in JS.
* [https://developer.mozilla.org/en-US/Add-ons/Overlay_Extensions/XUL_School/Custom_XUL_Elements_with_XBL XUL School] contains a trustworthy intro to XBL.
* The [https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XBL main XBL docs] are a mix of real, implemented XBL features, and never-implemented features. Fortunately, many pages have warning notes about which is which.
* The [https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XBL/XBL_1.0_Reference/Binding_Attachment_and_Detachment XBL binding docs] and [https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-binding moz-binding MDN page] are particularly important reading.


* Universal Search Content: https://github.com/mozilla/universal-search-content/
=== Existing Gecko Code ===
* Universal Search Gecko Dev: https://github.com/mozilla/universal-search-gecko-dev


== Communication ==
To understand how our prototype works, take a look at the code it modifies:
* IRC: #universal-search
* [https://dxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/autocomplete.xml#1013 autocomplete.xml] (just the rich result popup)
* Mailing List: universal-search@mozilla.com
* [https://dxr.mozilla.org/mozilla-central/source/browser/base/content/urlbarBindings.xml#1158 urlbarBindings.xml] (just the rich result popup)
* Weekly coordination meeting notes: https://etherpad.mozilla.org/universal-search-coordination
* [https://dxr.mozilla.org/mozilla-central/source/toolkit/components/places/UnifiedComplete.js UnifiedComplete.js]
* [https://dxr.mozilla.org/mozilla-central/source/toolkit/components/autocomplete/nsAutoCompleteController.cpp nsAutoCompleteController.cpp]
** Note that this controller is a UI controller written in C++. Our JS prototypes can't easily override this code, or get access to private members, so changing code in this file requires reimplementing in JS. Just another odd constraint to be aware of.


== People ==
Reading this code will lead to older service and IDL definitions, most of which are in the [https://dxr.mozilla.org/mozilla-central/source/toolkit/components/autocomplete toolkit/components/autocomplete] (autocomplete code and places search) and [https://dxr.mozilla.org/mozilla-central/source/toolkit/components/search toolkit/components/search] (search suggestions) modules.
* Lead: Nick Chapman
* Product Manager: Bill Maggs
* Program Manager: Edwin Wong
* Engineering: Jared Hirsch, Les Orchard
* UX: Bryan Bell, John Gruen

Latest revision as of 15:54, 20 July 2016

Introduction

Universal Search is a project to unify the search access points in Firefox and offer a deeper, more engaging search experience by making local results richer and by including results from the best of the web.

Contributing

People to know

The people below are good contact points for this test. It's easiest to get in touch with us on IRC or our mailing list. See details on the Test Pilot wiki page.

Product Engineering
Nick Chapman (irc: nchapman) Chuck Harmston (irc: chuck)
Jared Hirsch (irc: _6a68)

Product Roadmap

Developer Overview

The Universal Search project modifies the contents of the dropdown panel that is shown when you type in the urlbar.

We've implemented this in two different ways:

  1. The current focus is an add-on that inserts a server-generated recommendation above the existing results, using XUL for the UI.
  2. There is also an older add-on that replaces the entire results list with an iframe, using HTML5 for the UI.

Both add-ons generate recommended results using the same naive algorithm: given a search string, get search suggestions; send the top suggestion to a search engine; return the top search result to the user.

We switched from HTML to XUL mid-Q1 in response to changes in product's short-term (Q1 2016) roadmap. Rather than experiment with the layout and appearance of the UI, we are now simply inserting a single recommendation above the results list, in order to see if users like recommendations at all. When we get a longer-term roadmap, the iframe-based prototype might turn out to be the better choice for some or all future experiments.

GitHub repositories

Current add-on:

Older, inactive, iframe-based add-on:

XBL

XBL is the language used to modify the popup contents. XBL is a relic from the era of profound XML optimism, so code is written as XML data; and the documentation describes versions of the language that were never implemented, but no docs exist that describe how it actually works in Firefox. XBL shares the global window with JS, but has its own set of DOM bindings; you'll have to override XBL event handlers to hook into existing event-driven behavior, like key or mouse events, but you'll have fewer surprises if you actually handle the event in JS.

Existing Gecko Code

To understand how our prototype works, take a look at the code it modifies:

Reading this code will lead to older service and IDL definitions, most of which are in the toolkit/components/autocomplete (autocomplete code and places search) and toolkit/components/search (search suggestions) modules.