Firefox3/ContentManagement:Handlers: Difference between revisions

 
(9 intermediate revisions by 6 users not shown)
Line 1: Line 1:
__NOTOC__
=Background=
One of the new features of Firefox 3 is the ability to map a [http://en.wikipedia.org/wiki/Url URL protocol segment] to either a website or local application.
One of the new features of Firefox 3 is the ability to use a web service as a content handler.  A complete functional description for this feature appears at http://wiki.mozilla.org/User:Dmose:Fx-Docs:ContentTypeProcessing.


This document attempts to document some of the commonly seen protocols on the net and offer some of the handlers that we may want to include as default options.
To enable this feature, however, we need to create new mechanisms to augment the ones the operating systems provide for local applications:
* '''Registering''' -- How does Firefox know what web services can handle each content type?
* '''Defaulting''' -- When and which web services do we pick as defaults?
* '''Invoking''' -- How are these web services actually invoked?


Feature Functional description appears at http://wiki.mozilla.org/User:Dmose:Fx-Docs:ContentTypeProcessing.
==Registration==
There are two mechanisms by which a web service can become a registered content handler:


= Protocols =
===Pre-registered===
Mozilla will maintain a list of pre-registered web service handlers.  This list will vary by locale, and will be determined by:
* (selection criteria TBD)
 
====Dynamically Registered Handlers====
Web sites can also register themselves as content handlers according to the [http://www.whatwg.org/specs/web-apps/current-work/#custom-handlers What-WG Custom Handlers spec] by calling a javascript API.  For example:
 
<code>navigator.registerContentHandler('application/x-soup', 'http://example.com/soup?url=%s', 'SoupWeb™')</code>
 
==Defaulting==
One of the pre-registered handlers will also be marked as the preferred handler, meaning that the first time a user encounters a content type, it will be the selected handler if there is no local application already registered for that content type.  The user will still be presented the full list of handlers to choose an alternate, however.
 
* (selection criteria TBD)
 
==Invoking==
Registered web services will be invoked according to the [http://www.whatwg.org/specs/web-apps/current-work/#custom-handlers What-WG Custom Handlers spec] and the URL pattern that was registered.  For example:
 
<code>http://example.com/soup?url=http%3A%2F%2Fwww.example.net%2Fchickenk%C3%AFwi.soup</code>
 
 
=Information needed for Pre-Registered Content Handler file=
 
==Protocols==
 
==="Complete" List===
* [http://www.iana.org/assignments/uri-schemes.html IANA Official list?]
* [http://www.iana.org/assignments/uri-schemes.html IANA Official list?]
* [http://www.whatwg.org/specs/web-apps/current-work/#custom-handlers What WG Handlers]
* [http://en.wikipedia.org/wiki/URI_scheme Wikipedia list of common URI Schemes]
* [http://en.wikipedia.org/wiki/URI_scheme Wikipedia list of common URI Schemes]


===For Inclusion===
{| class="fullwidth-table"
{| class="fullwidth-table"
!Protocol !! Candidate Apps/ Web Services !! Comments
!Protocol !! Candidate Web Services !! Comments
|-
|-
|colspan="3"| <b><i>Common</i></b>
|colspan="3"| <b><i>Common</i></b>
|-
|-
| file || Handled by Firefox ||
| mailto: || Yahoo Mail, GMail, Google Apps for your Domain, Hotmail || can we localize services by language?
|-
|-
| http/https || Handled by Firefox||
| webcal: || Google Calendar, Yahoo Calendar, Schedule World, icalExchange, 30boxes || again, can we provide localized services for web-based calendaring if there is an appropriate service?
|-
|-
| ftp ||Handled by Firefox||
| news:/snews: || Google Groups ||  
|-
|-
| mailto ||Yahoo Mail, GMail, Hotmail, WinOS MAPI, Mail.app, Thunderbird ||
| im:/xmpp:/aim:/etc. || Meebo ||
|-
| irc:/ircs: || ircatwork.com, mibbit.com ||
|-
|-
| webcal ||Google Calendar, Thunderbird, iCal||
| feed: || Bloglines, My Yahoo!, Google || here again, localized RSS feed readers?
|-
|-
| news/snews || Google News, Thunderbird, ||
|}
|-
| irc/ircs || ||
|-
| rtsp || ||
|-
| feed || Handled by Firefox ||
|-
| aim || AOL Instant Messenger ||
|-
| skype || Skype ||
|-
| mms || Windows Media Player ||
|-
| ymsgr || Yahoo Messenger ||
|-
|colspan="3"| <b><i>Rare</i></b>
|-
| gopher || Handled by Firefox ||
|-
| tel || Skype, other VOIP app? ||
|-
| telnet || ? ||
|-
| (See about:config, "protocol-handler" || ? ||
|-|}


= MIME Types & Filename Extensions =
==MIME Types & Filename Extensions==


==="Complete" List===
* See https://addons.mozilla.org/en-US/firefox/addon/4498
* See https://addons.mozilla.org/en-US/firefox/addon/4498


===For Inclusion===
{| class="fullwidth-table"
{| class="fullwidth-table"
!Mime Type !! Extensions !! Candidate Apps/ Web Services !! Comments
!Mime Type !! Extensions !! Candidate Web Services !! Comments
|-
|-
|colspan="4"| <b><i>Common</i></b>
| application/rss+xml<br>application/atom+xml || || Google, My Yahoo, bloglines ||  separate audio-, video-, and image-oriented feeds by sniffing?
|-
|-
| application/pdf || pdf || Adobe Acrobat Reader ||
| || doc || ||  
|-
|-
| video/qt || qt || Apple Quicktime ||
| || ppt || ||  
|-
|-
|colspan="4"| <b><i>...</i></b>
| || xls ||  ||
|-
|  || ics ||  ||
|-
|  || vcard ||  ||  
|-
|-
|}
|}


= RSS Feeds =


* Is this a separate beast?
=Questions=
* Is the list of pre-registered web service handlers part of the build or dynamically updated by checking an online master regularly?
* Is there a need / use case for a web service to be the preferred handler, even if there ''is'' a registered local application?
* Need to discuss with web service providers how to deal with protected URLs (behind a log-in or firewall).
** Downloading and then uploading seems like a bad option
*** Very slow / bad user-experience for large files
*** "Leakage" a huge security concern
** Ideally, it would be the web service provider's responsibility to figure out delegation model.
 
= Selection Criteria =
Proposed list, not final
 
== Popularity/Reach ==
* Which are the most popular?  Overall?  Per locale?
** How do we determine this?  What rating/reach services are available?
 
== User Benefit/Experience ==
* Which do we believe would be best for users?
** What criteria go into this decision?
* Which do we feel provide the best user experience?
** UX team would weigh in here with as in-depth an analysis as they have time to provide.
* Which require registration/login?
** Would we prefer no-registration/login services?
* Which have good user support?
** Documentation, forums, wikis, etc.
 
== Localization ==
* Which are available in multiple languages?
* Which have the best support for various languages?
** "Being available in" and "Supporting well" can be different.
* Which do localizers believe are most appropriate for their locale?
** Are there "local vs global service" issues that need to be considered? (see bug 375198)
 
== Security/Privacy ==
* Which have good/excellent security?
* Which have good/excellent privacy policies/assurances?
* How will the content be sent to the service?  Are there security/privacy concerns related to this?  (ie: is there a chance of leakage when pushing content to a web service, etc.)
 
== Reliability/Availability ==
* Which are most reliable in terms of uptime and general availability?
* Which are still under active and development/maintenance?
* Which have a long-term proven track record for reliability, security, privacy, and overall longevity?
 
== Web Standards ==
* Which follow/use web standards as much as possible?
** Which require Flash/Silverlight/other proprietary technologies?
* Which best support open source and the open web?
** Given the Mozilla Manifesto, I would assume this would make a difference.
 
== Unique Features ==
* Which provide unique features that could be of use/interest to our users?  For example: mobile versions of sites or mobile clients for use on phones, etc.
 
== Partner Issues ==
* What are the parent companies involved?
** Are there possible partner issues related to any particular service? 
* Which are most willing to work with us if issues arise?
* Would any be interested in setting up formal partnerships?  Would this be the best thing for us to do for our users?


{| class="fullwidth-table"
== Personal Preferences ==
!RSS Type !! Candidate Apps/ Web Services !! Comments
* Which do we like best?
|-
** Should this just be a matter of personal preference among the people involved at this layer of the onion?
|colspan="3"| <b><i>Common</i></b>
 
|-
= Content Categories =
| ATOM, text/img || ? || Are there content indicators?
List of categories and some examples.
|-
 
| RSS 2, text/img || LiveBookmarks, Google, My Yahoo, bloglines, <ClientApp> || ?
== Media ==
|-
* Photos (Flickr)
| RSS 2, Video? || Miro/Democracy Player, NetnewsWire? || ?
* Audio
|-
* Video
| RSS 1 || ? || ?
* Web Feeds (Bloglines)
|-
 
|}
== Communication ==
* Email (Gmail)
* Chat (IRC/Gtalk)
* Internet Phone (Skype/Gizmo)
 
== Office Tools ==
* Word Processor (ZoHo Writer)
* Spreadsheet (Google Spreadsheet)
* Presentation (ZoHo Show)
* Publishing
* Graphics/Photo editing (Picnik)


= Questions =
== Organization ==
* Is there anyway to use the existing list of OS registered MIME types handler to add to the list used in Firefox?
* Search (Google)
** Yes. Currently the list ONLY consists of OS registered handlers, we are trying to add web based handlers to that list.
* Task Management (Remember The Milk)
* Is there anyway to detect if the local app is already installed before offering it as a choice?
* Time + Expense Tracking
* Should we do/use a canonical lookup service like http://filext.com or http://www.webmaster-toolkit.com/mime-types.shtml?
* Bookmarks (del.icio.us)
* Calendar (Gcal)
* Contacts (Plaxo)
* Maps/Directions (Google Maps)
* File Sharing + Storage
* Widgets (iGoogle)
Confirmed users
2,615

edits