Test Pilot/Universal Search: Difference between revisions

Jump to navigation Jump to search
Update the project docs
m (6a68 moved page Firefox/Universal Search to Test Pilot/Universal Search: Moving test pilot experiment under main test pilot page)
(Update the project docs)
Line 3: Line 3:
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.
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.


= Road Map =
= Contributing =


* Land initial prototype in Idea Town for Mozlando
Universal Search is currently being built by Chuck and Jared from the Test Pilot Build Team.


= Resources =
If you'd like to get involved, a good first step is to say hello on our IRC channel or mailing list. See the instructions on the [https://wiki.mozilla.org/Test_Pilot#If_you_have_an_idea.2C_feel_free_to_reach_out Test Pilot wiki page] for details.


A working, early prototype can be downloaded from: ** DEPRECATED ** https://people.mozilla.org/~jhirsch/universal-search-addon
=== Developer Overview ===


== UX ==
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:
# The current focus is an add-on that inserts a server-generated recommendation above the existing results, using XUL for the UI.
# 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:
* 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
 
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.
 
==== UX Artifacts ====


* [https://www.dropbox.com/sh/ud8lgj1kzfaytjf/AADmjISItw3rUfjnNVvkEpwua?dl=0 mockups]
* [https://www.dropbox.com/sh/ud8lgj1kzfaytjf/AADmjISItw3rUfjnNVvkEpwua?dl=0 mockups]


== Repos ==
==== XBL ====
 
* Universal Search Add-on: https://github.com/mozilla/universal-search-addon
* Universal Search Content: https://github.com/mozilla/universal-search-content
* Universal Search Recommendation Server: https://github.com/mozilla/universal-search-recommendation


== Communication ==
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.


* IRC: #universal-search
==== Existing Gecko Code ====
* Mailing List: universal-search@mozilla.com
* Weekly coordination meeting notes: https://public.etherpad-mozilla.org/p/universal-search-coordination


== People ==
To understand how our prototype works, take a look at the code it modifies:
* [https://dxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/autocomplete.xml#1013 autocomplete.xml] (just the rich result popup)
* [https://dxr.mozilla.org/mozilla-central/source/browser/base/content/urlbarBindings.xml#1158 urlbarBindings.xml] (just the rich result popup)
* [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.


* Lead: Nick Chapman
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.
* Engineering: Jared Hirsch, Chuck Harmston
* UX: Bryan Bell, John Gruen
126

edits

Navigation menu