Test Pilot/Universal Search: Difference between revisions
(Removed out of date information and updated team members) |
|||
| (13 intermediate revisions by 5 users not shown) | |||
| 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. | ||
= | = 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]. | |||
{| class="wikitable" | |||
|- | |||
! Product | |||
! Engineering | |||
|- | |||
| Nick Chapman (irc: nchapman) | |||
| Chuck Harmston (irc: chuck) | |||
|- | |||
| | |||
| Jared Hirsch (irc: _6a68) | |||
|} | |||
= | == Product Roadmap == | ||
= | * [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] | |||
== 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: | |||
# 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. | |||
=== 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. | |||
* [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. | |||
=== Existing Gecko Code === | |||
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. | |||
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. | |||
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:
- 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.
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.
- XUL School contains a trustworthy intro to XBL.
- The 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 XBL binding docs and moz-binding MDN page are particularly important reading.
Existing Gecko Code
To understand how our prototype works, take a look at the code it modifies:
- autocomplete.xml (just the rich result popup)
- urlbarBindings.xml (just the rich result popup)
- UnifiedComplete.js
- 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.
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.