User:Anaaktgeboren/SearchEngineSync: Difference between revisions

no edit summary
No edit summary
Line 26: Line 26:
** Community: dev-planning, dev-apps-firefox lists
** Community: dev-planning, dev-apps-firefox lists
** Legal: bug 778823, ok as long as based in user action & the defaults w/o user action don't change
** Legal: bug 778823, ok as long as based in user action & the defaults w/o user action don't change
* input
** want to avoid syncing app-shipped search plugins,  origin: gavin
** dont sync XML files, sync the JSON cache that's the result of parse origin: gavin
** mobile uses same nsISearchService as desktop -mfinkle
** should it be applicationID based, the way addons?
** should we limit to a blessed type of plugin to address hijacking?
** impact of Australis?


=== Current Requirements ===
=== Current Requirements ===
Line 40: Line 47:
* syncs which engines support the search suggest api
* syncs which engines support the search suggest api


===  Current Suggestions/Notes ===
* input
** want to avoid syncing app-shipped search plugins,  origin: gavin
** dont sync XML files, sync the JSON cache that's the result of parse origin: gavin
** mobile uses same nsISearchService as desktop -mfinkle
** should it be applicationID based, the way addons?
** should we limit to a blessed type of plugin to address hijacking?
** impact of Australis?
=== Design Reviews if needed ===
* privacy security?
* UI changes?
==  Implementation ==
* not started
* desktop will need code changes to address missing enable/disable state for custom search engines
* desktop will need nsSearchService changes to handle a consolidated data format
== Release ==
** targeted to land on Nightly during Q3 (not a promise, subject to scope change)
==  Reference ==
* this implementation bug: {{bug|444284}}
* addon sync implemetnation {{bug|534956}}
* https://developer.mozilla.org/en/Adding_search_engines_from_web_pages
* http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_document
* https://developer.mozilla.org/en/Creating_OpenSearch_plugins_for_Firefox
* http://docs.services.mozilla.com/sync/index.html
== Draft Plan ==
* waiting on feed back
* Spec not right. out pondering
=== High level Spec ===
=== High level Spec ===
* The OpenSearch plugins, ordering of search engines, keywords for search engines (both custom & default), and hidden flags (default engines only afaik) will be sync'ed across platforms (though the mobile client(s) will be written later)
* The OpenSearch plugins, ordering of search engines, keywords for search engines (both custom & default), and hidden flags (default engines only afaik) will be sync'ed across platforms (though the mobile client(s) will be written later)
Line 113: Line 88:
}
}
</pre></div>
</pre></div>
=== Design Reviews if needed ===
* privacy security?
* UI changes?
==  Implementation ==
* not started
* desktop will need code changes to address missing enable/disable state for custom search engines
* desktop will need nsSearchService changes to handle a consolidated data format




Line 153: Line 138:
* make sure there is heavy testing about reordering with hidden & default engines, as some of the calls may have unexpected side effects (and some functions consider hidden in counts and others do not, same deal with what counts as default)
* make sure there is heavy testing about reordering with hidden & default engines, as some of the calls may have unexpected side effects (and some functions consider hidden in counts and others do not, same deal with what counts as default)
* impacted by repositories re-write?
* impacted by repositories re-write?
== Release ==
** targeted to land on Nightly during Q3 (not a promise, subject to scope change)
==  Reference ==
* this implementation bug: {{bug|444284}}
* addon sync implemetnation {{bug|534956}}
* https://developer.mozilla.org/en/Adding_search_engines_from_web_pages
* http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_document
* https://developer.mozilla.org/en/Creating_OpenSearch_plugins_for_Firefox
* http://docs.services.mozilla.com/sync/index.html


== Scratch and Notes ==
== Scratch and Notes ==
=== Insights ===
=== Insights ===
* data model draft
* reconciling lists remain hard!
<div style="background-color: #F0F0F0"><pre>
{
  id // string id of the plugin usually looks like [app]google.xml
  guid // used for sync reconciliation
  openSearchRefObj //the whole of the OpenSearch xml object json-ifed. Clients may pick & choose which bits of data they will use/store in their representation. The sync store however, will hold onto this, to prevent differing internal representations from causing data loss on other platforms. It also ensures sync can in the future gracefully support any future features that are covered by the OpenSearch spec but not by the current internal representations.
  age //age in unix time of the ref object (so if the ref object changes, we know which one to keep)
  order // place in the global order (beware, even hidden engines have order)
  aliases // may be [], array of search keywords associated with this plugin
  isHidden // true if this engine should be globally disabled. Note some clients may treat some engines as 'removed' when they are actually disabled. (like desktop never actually removes the defaults even though the ui says it does)
  applicationIds // array of ids that this plugin should be installed on. [] if all platforms. (some plugins should not be installed on mobile, like desktop's google plugin, but others like twitter, are suitable for all platforms. Also leaves room for us to indicate a plugin meant for a subset, like mobile platforms {fennec, firefoxOS} and not desktop)
  locale //the locale of the plugin. Currently all plugins will have the same locale
  installLocation // optional. if not present, this plugin is default [app] on desktop
  type //optional, used to differentiate origins of plugins on desktop
  queryCharset // defaults on desktop do not have this, may be null
  isReadOnly //may be null
}
</pre></div>
* what should happen when default lists dont match
* what should happen when default lists dont match
** defaults should be synced because they may not be present on other systems and users can expect to see them (though the mobile client may grey them out)
** defaults should be synced because they may not be present on other systems and users can expect to see them (though the mobile client may grey them out)
Confirmed users
385

edits