Deconstructing Intents was, Re: Adding Web Intents to the Webapps WG deliverables

On 9/20/2011 10:27 AM, Marcos Caceres wrote:
> On Tuesday, September 20, 2011 at 7:17 PM, Ian Fette (イアンフェッティ) wrote:
>> While issuing a ton of patent exclusions for something like this would be rather poor, I would frankly rather have that then a spec that doesn't get any attention from a party that's clearly relevant only to have patents come up /after/ the spec is published and implemented.
>   Agreed, but for that we need to go through rechartering this group to include the new deliverable (i.e., to give everyone a fair chance to say if they are willing to give up their IPR around this). I think your concerns are fair.

While all that gets worked out, it'd be great to have active 
participation on public-webapps from Microsoft and occasional input from 
the HTML5 Editor and assistant.

I'd like to see navigator.registerContentHandler integrated into Web 
Intents.
window.navigator.startActivity seems like a solid addition to HTML5 
NavigatorContentUtils.
There is some overlap with File API FileSaver.

I understand that Web Intents has been in development for some time: I'd 
like to deconstruct and reconstruct the components to get a clear idea 
of side effects.

Web Intents proposes three items: registration, invocation and schema URLs.

Invocation:

Invocation seems straightforward with startActivity. We could use 
FileSaver, but
MIME does not have the added "schema URL" semantic that Intents adds.

Example:
var intent = new Intent("http://webintents.org/share", "text/uri-list", 
"http://news.bbc.co.uk");
var saver =  new FileSaver(blob, "filename.ext");

FileSaver requires blob encapsulation.
Blob encapsulation is a bit of extra-work when working with array 
buffers, and strings, and the like.

FileSaver Progress events are handy:
http://www.w3.org/TR/file-writer-api/#the-filesaver-interface



Schema URLs:

Web Intents proposes a new "type" of information, an intent keyword, 
essentially.
There are a handful of common intents defined in the proposal, all of 
them prefixed with "http://webintents.org/".

I'd like to see that prefix stripped. Given that Web Intents -is- 
defining the standard, I do not see a good reason for the extra baggage.
I'd prefer  keyword | uri as option, instead of just URI.

Thus:  var intent = new Intent('share', 'text/uri-list', 
'http://w3c.org');  // Much shorter.

Intents does seem to be something that can work for RPC, in addition to 
current HTTP headers.
I could easily see this working across web sockets as well as it works 
through intra-browser postMessage.

A "Web-Intent" HTTP header might prove valuable.
A URL might register itself to accept POST and Web Sockets submissions.

Consider a header of:
Web-Intent: share

A supporting server could then process that data server-side.



Registration:

Register Content/Protocol Handler: Google has limited support for these 
APIs, protocol handlers, prefixed with "web+" are rarely used.
http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#custom-handlers
http://code.google.com/p/chromium/issues/detail?id=11359

Web Intents-style is easy to understand, and seems to be more of a priority:
http://code.google.com/p/chromium/issues/detail?id=90458
http://code.google.com/apis/picker/docs/

Mozilla proposes registration in application manifest files:
https://github.com/mozilla/openwebapps/blob/master/docs/ACTIVITIES.md

Google has a registration technique for Chrome OS, for handling file 
types by file extension.
It is limited to packaged, locally installed applications.
http://code.google.com/chrome/extensions/fileBrowserHandler.html

Permissions: Mozilla has expressed concerns about registerPermission 
APIs, having used a synchronous variant for extensions.
http://dev.w3.org/2009/dap/perms/FeaturePermissions.html


TL;DR:

FileSaver and Intent have very similar use cases -- it's quite 
reasonable that a FileSaver would run an Intent session on the UA, 
allowing a user to "save" their file to various registered targets. Look 
for harmony.

Intent schema URLs seem fine, but there's no reason to have 
"http://webintents.org/" as a standard prefix, strip the prefix there. 
Consider HTTP 1.0/Web Sockets support, as an addition to the scope.

Registration is tricky. Manifest files seem like a solid place to start. 
registerHandler seems like a good addition to registerContentHandler and 
registerProtocolHandler.

Received on Thursday, 22 September 2011 16:24:34 UTC