Re: Adding Web Intents to the Webapps WG deliverables

2012-04-02 Thread Ian Hickson
On Thu, 22 Sep 2011, James Hawkins wrote:
 
  But this is a non-problem. In practice, we have plenty of examples of 
  spaces where conflicts don't happen despite not having used long names 
  such as URLs. For example:
 
   - rel= values in HTML
   - element names in HTML
   - MIME type names
   - scheme names

 We are following the model set by Android Intents by bootstrapping the 
 feature with a list of actions that we agree will be far-reaching and 
 useful, e.g., share, pick, edit, save.
 
 The Android Intents system employs java-style namespacing, e.g., 
 android.intent.action.EDIT is the string value of the ACTION_EDIT 
 constant.  The idea is that vendors can add to the intent ecosystem by 
 creating new actions, usually by setting the namespace appropriately, 
 e.g., org.openintents.action.CALCULATOR.
 
 When designing the format of the Web Intents action string, we got a lot 
 of feedback that the java namespacing is not native to the web and that 
 URLS would be a better namespacing scheme.  This gave us the added 
 benefit that, by setting precedence with the default list actions, 
 action URLs serve both as a namespace mechanism and the page at the URL 
 contains documentation for the particular action.  If a developer wants 
 to find out more about http://webintents.org/share, all she has to do is 
 visit that URL (try it!).
 
 If, for example, Twitter decided to add a new action, say 'tweet', they 
 could set the action string to http://dev.twitter.com/tweet which would 
 contain the input/output specification for this action.

Using URLs is ugly and unnecessary and makes the API look far more 
complicated than necessary. I understand that Web experts are always 
telling everyone to use URLs, but IMHO they are strongly misguided in 
this. I recommend following the pattern actually used on the Web for every 
verb and noun other than those identify Web pages, and using simple 
identifiers. As I mentioned above, it's what we use on the Web for pretty 
much everything -- rel=, element names, MIME types, schemes, HTTP verbs, 
meta names, HTTP headers, pretty much everything.


   We need to update the spec.  The UA should track the pages that 
   declare intent registration and if the user has the intent installed 
   and the tag is no longer on the tracked page(s) the UA should remove 
   the registration.
 
  This would not work well with sites that only show the intent element 
  to users who are logged in with an account that is fully paid up...

 Can you expand on this?  I don't see the problem.  The intent element 
 can be dynamically removed, if needed, and the intent will be 
 unregistered in the UA.  If it happens at invocation point (likely), the 
 service has a chance to ask the user to pay up (?)

If the registration is only removed when you explicitly visit the page, 
then it doesn't work because you're not going to be visiting the page very 
often, especially if the handler is no longer in existence.

If the registration is removed automatically in the background when the 
page no longer has the declaration, then as soon as I log out of Google, 
all my Google handlers will go away, rather than continuing to work but 
asking me to log in when I use them.


Here's a possibly simpler proposal:
   
 - to register:
   
  navigator.registerIntentHandler(intent, filter, url, kind);
intent = string like share, play
filter = MIME type (foo/bar) or MIME wildcard (foo/* or */*)
url = page to load to handle intent
kind = a flag indicating if the page should be:
  - always opened in a new tab
  - opened in the intent handler dialog (inline/pop-up)
  - opened in an existing tab if possible, else a new tab
   
 - to check if registered, to unregister:
   
  navigator.isIntentHandlerRegistered(intent, filter, url);
  navigator.unregisterIntentandler(intent, filter, url);
   
 - to invoke intent:
   
  var port = navigator.handleIntent(intent, filter);
  port.postMessage(data);
  port.onmessage = function (event) { handle(event.data) };
  
   We thought about this, we didn't want developers to have to worry 
   about when they think they should start to postMessage, or finish 
   listening to the onmessage event.
 
  What is there to think about? They send one message, they receive one 
  back. I don't understand why this would be complicated.

 When does the port close?

When the window closes. The same problem exists in the model described in 
the spec today, as far as I can tell.


 What happens if I call postMessage() again, after receiving the response 
 from the service?

It posts the message. Why is this a problem?


 We designed the API to be as simple as possible, in this case by being 
 explicit.  Less questions need to be asked, less chances to shoot 
 oneself in the foot.

I think your proposal is more complicated than what I have above, and 
doesn't have any fewer opportunities to shoot 

Re: Adding Web Intents to the Webapps WG deliverables

2012-04-02 Thread Ian Hickson
On Sun, 25 Sep 2011, John J Barton wrote:
 On Thu, Sep 22, 2011 at 2:36 PM, Ian Hickson i...@hixie.ch wrote:
  There's no difference between two people coming up with the name foo 
  and two people coming up with the name http://webintents.org/foo;, 
  unless you're saying you're confident that people won't use the prefix 
  the spec uses for its verbs for their verbs.
 
 I don't think this claim makes sense. As a developer I have no way to 
 know if 'foo' is used by anyone else on the Internet, but it would be 
 trivial to check http://webintents.org/foo;.

How would you check if I'm using http://webintents.org/foo?


  But this is a non-problem. In practice, we have plenty of examples of 
  spaces where conflicts don't happen despite not having used long names 
  such as URLs. For example:
 
   - rel= values in HTML
   - element names in HTML
   - MIME type names
   - scheme names
 
 I believe all of these examples have one or more central name controls.  
 The rel example in particular provides a counter example to using simple 
 uncontrolled verbs: http://microformats.org/wiki/existing-rel-values 
 Multiple naming authorities, layered on wiki, and still messy.

Why are they more messy than DNS?


  A verb on its own will imply that it is a web intents verb managed by 
  the webintents project and all the documentation for that will live 
  under webintents, which means we would then need to think about 
  standardisation and stewardship for the entire namespace.
 
  I don't see why. Just have a wiki page that people can list their 
  verbs on and then point to their documentation.
 
 A wiki is not comparable to the controlled naming systems in the four 
 examples you give above.

rel= uses a wiki. Element names uses nothing at all; anyone can invent a 
new one, there's no central authority.


 A wiki is a free for all that works great when there is no money 
 involved. A Web system involving 'share' along with images, audio, and 
 video will have money involved.

I don't see why having money involved will make any difference. Could you 
elaborate? Why has this problem not occured with element names or rel= 
values?

-- 
Ian Hickson   U+1047E)\._.,--,'``.fL
http://ln.hixie.ch/   U+263A/,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'

Re: Adding Web Intents to the Webapps WG deliverables

2011-10-29 Thread Robin Berjon
On Sep 20, 2011, at 19:09 , Ian Fette (イアンフェッティ) wrote:
 If you can guarantee me that the other browsers will join DAP then let's talk 
 (namely MSFT who just announced a similar spec for Metro, and it would be 
 very important to get their input here.)

Wish granted! Let's talk then.

-- 
Robin Berjon - http://berjon.com/ - @robinberjon




Re: Adding Web Intents to the Webapps WG deliverables

2011-10-07 Thread Arthur Barstow

[ + DAPI Chairs and Team Contact ]

Hi Ian, All - for now, I think it is OK to use public-webapps for 
*technical* discussions regarding James' proposal.


Let's plan to continue the charter-related part of this discussion 
during WebApp's TPAC meeting. I added it to the Monday October 31 
13:00-15:00 time slot:


http://www.w3.org/2008/webapps/wiki/TPAC2011#Agenda_Monday.2C_October_31

(FYI, Robin added a Merge DAP into WebApps, proposed by Robin Berjon 
topic ins this same time slot.)


-ArtB

On 10/4/11 1:22 PM, ext Ian Fette (イアンフェッティ) wrote:
Circling back to the original topic, it seems like there's a good 
amount of interest and opinions, and that the spec would probably 
benefit from the input of the people in this WG, especially since 
multiple platforms are all shipping something similar in approach 
(android intents, contracts in win8 and whatever implication that has 
for Metro/IE, and the proposed web intents). This is good to see.


-Ian

On Thu, Sep 29, 2011 at 11:34 AM, Charles Pritchard ch...@jumis.com 
mailto:ch...@jumis.com wrote:


Top posting: in web messaging, we typically set an origin property
on events and authors are expected to check that property.

Are your concerns addressed by that practice?

It is an added step, an added nuance. And developers may neglect
it. But, if they are neglecting origin, they are just plain
leaving security holes.



On Sep 28, 2011, at 12:09 PM, Adrienne Porter Felt
a...@berkeley.edu mailto:a...@berkeley.edu wrote:


Android developers chronically misunderstand and misuse Android
Intents, and these mistakes lead to security bugs. To illustrate
how prevalent the confusion is, Erika Chin and I found that 9 of
20 popular Android apps (45%!) contain security vulnerabilities
due to misusing Intents. I've also found these same types of bugs
in Google-produced Android applications (the default ones that
ship as built-in apps). I posted examples  details of two
real-world applications that exhibit these vulnerabilities:
http://www.adrienneporterfelt.com/blog/?p=313.

It's my hope that Web Intents can be designed to prevent
developers from making the same mistakes.

There are two common types of errors:

1) Android Intents can be used for both inter- and
intra-application communication, and developers don't know the
difference. A canonical accident occurs when a developer creates
a unique action string like foo.bar.xyz and uses it for
internal communication. The problem is that any other application
can register for the same action string, even if it's supposedly
hard to guess. This introduces two security bugs. (1) The
component that receives foo.bar.xyz has been unintentionally made
public, since anyone can send that action string to it. (2)
Another application could register to receive foo.bar.xyz and
steal any data associated with it, or simply gain the user's
attention away from the original app.

2) The Android OS sends Intents to applications as notifications.
Developers register components to receive these system Intents.
By default, registering for a system Intent makes a component
public. Developers don't realize that these components become
public by default, so they don't check that the Intent was really
sent by the OS.

I have two suggestions to prevent these same errors from
appearing in Web Intents:

1) Developers need to be discouraged from using Web Intents for
internal application communication. One way to do this is to make
it so that Web Intents are only delivered after the user selects
a service in a browser popup window. (Nothing hidden in the
background!) This would be annoying for intra-application
communication, so I think developers would avoid it.

2) If a developer registers to receive a Web Intent from the
browser (like for a system notification), that component should
NOT be invocable by any other application unless it's registered
for a second Intent as well.

Adrienne







Re: Adding Web Intents to the Webapps WG deliverables

2011-10-07 Thread Rich Tibbett

Arthur Barstow wrote:

[ + DAPI Chairs and Team Contact ]

Hi Ian, All - for now, I think it is OK to use public-webapps for
*technical* discussions regarding James' proposal.

Let's plan to continue the charter-related part of this discussion
during WebApp's TPAC meeting. I added it to the Monday October 31
13:00-15:00 time slot:

http://www.w3.org/2008/webapps/wiki/TPAC2011#Agenda_Monday.2C_October_31

(FYI, Robin added a Merge DAP into WebApps, proposed by Robin Berjon
topic ins this same time slot.)


Robin is proposing an interesting idea.

Perhaps we could form a sub-group in WebApps to work on Device related 
features. Exactly what device-related features get picked up would be at 
the discretion of those involved. The options at this point are a.) None 
b.) some or c.) all of the deliverables of DAP transferring over to a 
group that has more comprehensive IP exclusion coverage.


It would be a lot easier if everyone joined the DAP WG instead but I 
feel we're going nowhere with that approach.


- Rich



Re: Adding Web Intents to the Webapps WG deliverables

2011-10-04 Thread イアンフェッティ
Circling back to the original topic, it seems like there's a good amount of
interest and opinions, and that the spec would probably benefit from the
input of the people in this WG, especially since multiple platforms are all
shipping something similar in approach (android intents, contracts in win8
and whatever implication that has for Metro/IE, and the proposed web
intents). This is good to see.

-Ian

On Thu, Sep 29, 2011 at 11:34 AM, Charles Pritchard ch...@jumis.com wrote:

 Top posting: in web messaging, we typically set an origin property on
 events and authors are expected to check that property.

 Are your concerns addressed by that practice?

 It is an added step, an added nuance. And developers may neglect it. But,
 if they are neglecting origin, they are just plain leaving security holes.



 On Sep 28, 2011, at 12:09 PM, Adrienne Porter Felt a...@berkeley.edu
 wrote:

 Android developers chronically misunderstand and misuse Android Intents,
 and these mistakes lead to security bugs.  To illustrate how prevalent the
 confusion is, Erika Chin and I found that 9 of 20 popular Android
 apps (45%!) contain security vulnerabilities due to misusing Intents.  I've
 also found these same types of bugs in Google-produced Android applications
 (the default ones that ship as built-in apps).  I posted examples  details
 of two real-world applications that exhibit these vulnerabilities: 
 http://www.adrienneporterfelt.com/blog/?p=313
 http://www.adrienneporterfelt.com/blog/?p=313.

 It's my hope that Web Intents can be designed to prevent developers from
 making the same mistakes.

 There are two common types of errors:

 1)  Android Intents can be used for both inter- and intra-application
 communication, and developers don't know the difference.  A canonical
 accident occurs when a developer creates a unique action string like
 foo.bar.xyz and uses it for internal communication.  The problem is that any
 other application can register for the same action string, even if it's
 supposedly hard to guess.  This introduces two security bugs.  (1)  The
 component that receives foo.bar.xyz has been unintentionally made public,
 since anyone can send that action string to it.  (2)  Another application
 could register to receive foo.bar.xyz and steal any data associated with it,
 or simply gain the user's attention away from the original app.

 2)  The Android OS sends Intents to applications as notifications.
  Developers register components to receive these system Intents.  By
 default, registering for a system Intent makes a component public.
  Developers don't realize that these components become public by default, so
 they don't check that the Intent was really sent by the OS.

 I have two suggestions to prevent these same errors from appearing in Web
 Intents:

 1)  Developers need to be discouraged from using Web Intents for internal
 application communication.  One way to do this is to make it so that Web
 Intents are only delivered after the user selects a service in a browser
 popup window.  (Nothing hidden in the background!)  This would be annoying
 for intra-application communication, so I think developers would avoid it.

 2)  If a developer registers to receive a Web Intent from the browser (like
 for a system notification), that component should NOT be invocable by any
 other application unless it's registered for a second Intent as well.

 Adrienne




Re: Adding Web Intents to the Webapps WG deliverables

2011-09-29 Thread Adrienne Porter Felt
Android developers chronically misunderstand and misuse Android Intents, and
these mistakes lead to security bugs.  To illustrate how prevalent the
confusion is, Erika Chin and I found that 9 of 20 popular Android
apps (45%!) contain security vulnerabilities due to misusing Intents.  I've
also found these same types of bugs in Google-produced Android applications
(the default ones that ship as built-in apps).  I posted examples  details
of two real-world applications that exhibit these vulnerabilities:
http://www.adrienneporterfelt.com/blog/?p=313.

It's my hope that Web Intents can be designed to prevent developers from
making the same mistakes.

There are two common types of errors:

1)  Android Intents can be used for both inter- and intra-application
communication, and developers don't know the difference.  A canonical
accident occurs when a developer creates a unique action string like
foo.bar.xyz and uses it for internal communication.  The problem is that any
other application can register for the same action string, even if it's
supposedly hard to guess.  This introduces two security bugs.  (1)  The
component that receives foo.bar.xyz has been unintentionally made public,
since anyone can send that action string to it.  (2)  Another application
could register to receive foo.bar.xyz and steal any data associated with it,
or simply gain the user's attention away from the original app.

2)  The Android OS sends Intents to applications as notifications.
 Developers register components to receive these system Intents.  By
default, registering for a system Intent makes a component public.
 Developers don't realize that these components become public by default, so
they don't check that the Intent was really sent by the OS.

I have two suggestions to prevent these same errors from appearing in Web
Intents:

1)  Developers need to be discouraged from using Web Intents for internal
application communication.  One way to do this is to make it so that Web
Intents are only delivered after the user selects a service in a browser
popup window.  (Nothing hidden in the background!)  This would be annoying
for intra-application communication, so I think developers would avoid it.

2)  If a developer registers to receive a Web Intent from the browser (like
for a system notification), that component should NOT be invocable by any
other application unless it's registered for a second Intent as well.

Adrienne


Re: Adding Web Intents to the Webapps WG deliverables

2011-09-29 Thread Paul Kinlan
Hi,

Thanks for the synopsis of the issues.  We didn't want to specifically
exclude it from intra-app communication, but the result is like you mention
actions can be invoked that they might not have thought would be possible or
apps can replace - currently the system requires user intervention to select
the service.  For this intra-app comms when the developer knows the exact
intent we are discussing explicit intents (the app developer knows the
intent the developer should use).  Developers will have to trust the data as
from an untrusted source - unless we have some whitelist part of the API
which the UA would restrict to a subset of domains that the service
specifies. (but we haven't discussed this)

System generated broadcast intents are out of the scope of web intents at
the moment, however system generated intents are not, the UA could trigger a
share for instance if the vendor had put a native menu item in to the
browser etc.  It would be up to the UA to decide who could invoke specific
intents, currently in the spec we are not defining any intents directly so
we are not planning on telling the vendors to restrict access to certain
ones - but it could defiantly be managed.

P

On Wed, Sep 28, 2011 at 8:09 PM, Adrienne Porter Felt a...@berkeley.eduwrote:

 Android developers chronically misunderstand and misuse Android Intents,
 and these mistakes lead to security bugs.  To illustrate how prevalent the
 confusion is, Erika Chin and I found that 9 of 20 popular Android
 apps (45%!) contain security vulnerabilities due to misusing Intents.  I've
 also found these same types of bugs in Google-produced Android applications
 (the default ones that ship as built-in apps).  I posted examples  details
 of two real-world applications that exhibit these vulnerabilities:
 http://www.adrienneporterfelt.com/blog/?p=313.

 It's my hope that Web Intents can be designed to prevent developers from
 making the same mistakes.

 There are two common types of errors:

 1)  Android Intents can be used for both inter- and intra-application
 communication, and developers don't know the difference.  A canonical
 accident occurs when a developer creates a unique action string like
 foo.bar.xyz and uses it for internal communication.  The problem is that any
 other application can register for the same action string, even if it's
 supposedly hard to guess.  This introduces two security bugs.  (1)  The
 component that receives foo.bar.xyz has been unintentionally made public,
 since anyone can send that action string to it.  (2)  Another application
 could register to receive foo.bar.xyz and steal any data associated with it,
 or simply gain the user's attention away from the original app.

 2)  The Android OS sends Intents to applications as notifications.
  Developers register components to receive these system Intents.  By
 default, registering for a system Intent makes a component public.
  Developers don't realize that these components become public by default, so
 they don't check that the Intent was really sent by the OS.

 I have two suggestions to prevent these same errors from appearing in Web
 Intents:

 1)  Developers need to be discouraged from using Web Intents for internal
 application communication.  One way to do this is to make it so that Web
 Intents are only delivered after the user selects a service in a browser
 popup window.  (Nothing hidden in the background!)  This would be annoying
 for intra-application communication, so I think developers would avoid it.

 2)  If a developer registers to receive a Web Intent from the browser (like
 for a system notification), that component should NOT be invocable by any
 other application unless it's registered for a second Intent as well.

 Adrienne




-- 
Paul Kinlan
Developer Advocate @ Google for Chrome and HTML5
G+: http://plus.ly/paul.kinlan
t: +447730517944
tw: @Paul_Kinlan
LinkedIn: http://uk.linkedin.com/in/paulkinlan
Blog: http://paul.kinlan.me
Skype: paul.kinlan


Re: Adding Web Intents to the Webapps WG deliverables

2011-09-29 Thread Charles Pritchard
Top posting: in web messaging, we typically set an origin property on events 
and authors are expected to check that property.

Are your concerns addressed by that practice?

It is an added step, an added nuance. And developers may neglect it. But, if 
they are neglecting origin, they are just plain leaving security holes.



On Sep 28, 2011, at 12:09 PM, Adrienne Porter Felt a...@berkeley.edu wrote:

 Android developers chronically misunderstand and misuse Android Intents, and 
 these mistakes lead to security bugs.  To illustrate how prevalent the 
 confusion is, Erika Chin and I found that 9 of 20 popular Android apps (45%!) 
 contain security vulnerabilities due to misusing Intents.  I've also found 
 these same types of bugs in Google-produced Android applications (the default 
 ones that ship as built-in apps).  I posted examples  details of two 
 real-world applications that exhibit these vulnerabilities: 
 http://www.adrienneporterfelt.com/blog/?p=313.
 
 It's my hope that Web Intents can be designed to prevent developers from 
 making the same mistakes.
 
 There are two common types of errors:
 
 1)  Android Intents can be used for both inter- and intra-application 
 communication, and developers don't know the difference.  A canonical 
 accident occurs when a developer creates a unique action string like 
 foo.bar.xyz and uses it for internal communication.  The problem is that any 
 other application can register for the same action string, even if it's 
 supposedly hard to guess.  This introduces two security bugs.  (1)  The 
 component that receives foo.bar.xyz has been unintentionally made public, 
 since anyone can send that action string to it.  (2)  Another application 
 could register to receive foo.bar.xyz and steal any data associated with it, 
 or simply gain the user's attention away from the original app.
 
 2)  The Android OS sends Intents to applications as notifications.  
 Developers register components to receive these system Intents.  By default, 
 registering for a system Intent makes a component public.  Developers don't 
 realize that these components become public by default, so they don't check 
 that the Intent was really sent by the OS.
 
 I have two suggestions to prevent these same errors from appearing in Web 
 Intents:
 
 1)  Developers need to be discouraged from using Web Intents for internal 
 application communication.  One way to do this is to make it so that Web 
 Intents are only delivered after the user selects a service in a browser 
 popup window.  (Nothing hidden in the background!)  This would be annoying 
 for intra-application communication, so I think developers would avoid it.
 
 2)  If a developer registers to receive a Web Intent from the browser (like 
 for a system notification), that component should NOT be invocable by any 
 other application unless it's registered for a second Intent as well.
 
 Adrienne
 


Re: Adding Web Intents to the Webapps WG deliverables

2011-09-25 Thread Charles McCathieNevile

On Tue, 20 Sep 2011 16:04:29 +0200, Ian Fette (イアンフェッティ)
ife...@google.com wrote:

With all due respect, I think that if we have to re-charter or create a  
new working group each time a new API comes up we are all doomed. The  
overhead of creating and monitoring so many WGs is not appealing to

many of us.


Agreed - but at the same time if people start doing work that others are
doing in another group, so they can do it with different people, we are
all doomed. It is generally not a helpful way to get to a common standard.

There is a group where the work you're interested in was already agreed as
a deliverable. Which to some extent suggests this isn't a new API, it's
Yet another API for doing something people knew they wanted to do.

Reading this discussion and understanding the issue multiplied out over
the people who effectively have to follow the discussion seems far more
process overhead than you and MS just joining that group. Even if MS
doesn't join, they can (and with all the rest of webapps will be invited
to) comment and make an IPR commitment. And as noted, discussing on the
same list doesn't guarantee attention from the other subscribers anyway.

We are unlikely to stop you holding discussion here, but it would appear
that it makes more sense to do it in a group which is already chartered to
produce the deliverable.

So with all due respect, I suggest that joining DAP and doing the work is
an efficient way forward, while carrying on a process discussion here is
sidetracking a lot of people whose time could otherwise be spent making
technical progress on something.

Part of the value of W3C standards, as compared to random spec proposals
from a vendor or three, comes from a process that gives many kinds of
stakeholders confidence in what that means. Chartering a group with a
reasonable scope definition and then doing that work there is part of the
way that process works. You could always ask Google's W3C Advisory
Committee representative T V Raman to raise the process discussion to the
AC forum, where it is directly in scope. The point of this group, DAP, and
other WGs is to focus on doing their chartered technical work.

cheers


On Tue, Sep 20, 2011 at 6:55 AM, Robin Berjon ro...@berjon.com wrote:


Hi James,

thanks for bringing this forward, it is indeed a very interesting  
approach.


On Sep 19, 2011, at 22:27 , James Hawkins wrote:
 I've read through the Webapps charter, and I believe Web Intents fits  
the

goals and scope of the WG.

It does fit the goal and scope, but then most web client technology  
does ;)
Where you may run into issues is that it does not fit in the  
deliverables

list. Since that is what members makes their IP commitment on, a new
deliverable of non-negligible content might require rechartering. Last  
time

we did that, it wasn't very pleasant.

Thankfully, there is already a group that was chartered with Intents  
(or,

in the poetic phrasing of charters, with an API that allows web
applications to register themselves as handlers/providers based on data
string identifiers and an API that enables other web applications to
discover these handlers/providers and gain permission to interact with  
them

— but Intents is what that means): the Device APIs group,
http://www.w3.org/2011/07/DeviceAPICharter. It'd save a lot on the
bureaucracy and allow us all to just go straight to work.

We'd certainly be happy to accept your draft input. The new DAP is  
meant to

be completely flexible in how it is organised. Notably, if you prefer to
conduct work on this spec without necessarily getting all the email  
from the
rest of the group we can setup a dedicated Task Force with its own  
mailing

list and chair (if there's a volunteer, otherwise I'll do it). TFs can
decide whether they want to have telcons or not.

--
Robin Berjon - http://berjon.com/ - @robinberjon






--
Charles 'chaals' McCathieNevile  Opera Software, Standards Group
  je parle français -- hablo español -- jeg kan litt norsk
http://my.opera.com/chaals   Try Opera: http://www.opera.com



Re: Adding Web Intents to the Webapps WG deliverables

2011-09-25 Thread John J Barton
On Thu, Sep 22, 2011 at 2:36 PM, Ian Hickson i...@hixie.ch wrote:
 There's no difference between two people coming up with the name foo and
 two people coming up with the name http://webintents.org/foo;, unless
 you're saying you're confident that people won't use the prefix the spec
 uses for its verbs for their verbs.

I don't think this claim makes sense. As a developer I have no way to
know if 'foo' is used by anyone else on the Internet, but it would be
trivial to check http://webintents.org/foo;.


 But this is a non-problem. In practice, we have plenty of examples of
 spaces where conflicts don't happen despite not having used long names
 such as URLs. For example:

  - rel= values in HTML
  - element names in HTML
  - MIME type names
  - scheme names

I believe all of these examples have one or more central name
controls.  The rel example in particular provides a counter example to
using simple uncontrolled verbs:
http://microformats.org/wiki/existing-rel-values
Multiple naming authorities, layered on wiki, and still messy.



 A verb on its own will imply that it is a web intents verb managed by
 the webintents project and all the documentation for that will live
 under webintents, which means we would then need to think about
 standardisation and stewardship for the entire namespace.

 I don't see why. Just have a wiki page that people can list their verbs on
 and then point to their documentation.

A wiki is not comparable to the controlled naming systems in the four
examples you give above.  A wiki is a free for all that works great
when there is no money involved. A Web system involving 'share' along
with images, audio, and video will have money involved.

I think the intent names need a controlled namespace, either
centralized like your examples or decentralized as in the original
proposal. URLs need not be the format.  Note the Firefox extension
developers use domain@name format for unique ids.

jjb



Re: Adding Web Intents to the Webapps WG deliverables

2011-09-23 Thread Ian Hickson
On Thu, 22 Sep 2011, John J Barton wrote:
 On Thu, Sep 22, 2011 at 5:22 PM, Charles Pritchard ch...@jumis.com wrote:
  I don't see why. Just have a wiki page that people can list their verbs on
  and then point to their documentation.
 
  I agree here. The standard is sufficient for stewardship.
 
 Why won't I create a bot that fills with wiki with a dictionary's worth 
 of verbs point to my important intent: making money on advertising? My 
 own personal single-point of control. Oh, you think your bot is faster 
 than mine? We'll see about that! Oh, the wiki domain owners stepped in? 
 Set up a committee to approve changes? Censorship! Politics! Slowness!

Changing the wiki would do nothing here, it's just documentation, and does 
not affect the implementations. So this is a non-issue.

-- 
Ian Hickson   U+1047E)\._.,--,'``.fL
http://ln.hixie.ch/   U+263A/,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'



Re: Adding Web Intents to the Webapps WG deliverables

2011-09-23 Thread Julian Reschke

On 2011-09-23 01:40, Tab Atkins Jr. wrote:

On Thu, Sep 22, 2011 at 3:28 PM, James Hawkinsjhawk...@google.com  wrote:

When designing the format of the Web Intents action string, we got a lot of
feedback that the java namespacing is not native to the web and that URLS
would be a better namespacing scheme.  This gave us the added benefit that,
by setting precedence with the default list actions, action URLs serve both
as a namespace mechanism and the page at the URL contains documentation for
the particular action.  If a developer wants to find out more about
http://webintents.org/share, all she has to do is visit that URL (try it!).
If, for example, Twitter decided to add a new action, say 'tweet', they
could set the action string to http://dev.twitter.com/tweet which would
contain the input/output specification for this action.


URLs are really, really not a good namespacing mechanism, because URLs
are not names in practice.  Names are compared with string-equality,
generally.  URLs are compared  as URLs, which is a lot crazier.  Is
...


No, they are not. It depends on context.


http://dev.twitter.com/tweet; the same action as
http://dev.twitter.com/tweet/;?  What about
https://dev.twitter.com/tweet; or //dev.twitter.com/tweet or
/tweet (assume this last one is on a page within dev.twitter.com)?


Yes, a spec needs to specify that.


There's a decent chance that all of these are considered the same
url by devs, and devs will probably attempt to use them.  I haven't
even mentioned yet the presence/absence of www in urls.


Contrary to what you say, I don't see anybody confused by URI comparison 
when URIs are used as identifiers.



...


Best regards, Julian



Re: Adding Web Intents to the Webapps WG deliverables

2011-09-23 Thread Boris Zbarsky

On 9/23/11 4:13 PM, Julian Reschke wrote:

Contrary to what you say, I don't see anybody confused by URI comparison
when URIs are used as identifiers.


If I had $1 for every time I wrote xmlns=http://www.w3.org/1999/xhtml/; 
and $10 for every time I told someone their page was broken because 
they'd done that, I'd get myself a vacation package...


-Boris




Re: Adding Web Intents to the Webapps WG deliverables

2011-09-23 Thread Tab Atkins Jr.
On Fri, Sep 23, 2011 at 1:13 PM, Julian Reschke julian.resc...@gmx.de wrote:
 There's a decent chance that all of these are considered the same
 url by devs, and devs will probably attempt to use them.  I haven't
 even mentioned yet the presence/absence of www in urls.

 Contrary to what you say, I don't see anybody confused by URI comparison
 when URIs are used as identifiers.

It's hard to say willful blindness without sounding mean, so I'll
just point and nod at Boris' email.

~TJ



Re: Adding Web Intents to the Webapps WG deliverables

2011-09-23 Thread Boris Zbarsky

On 9/23/11 5:20 PM, Julian Reschke wrote:

If I had $1 for every time I wrote xmlns=http://www.w3.org/1999/xhtml/;
and $10 for every time I told someone their page was broken because
they'd done that, I'd get myself a vacation package...


Namespace names are things I copy from templates and never type from
memory.


Sure.  So your typical author goes to their favorite search engine, 
types XHTML namespace, clicks the resulting link, and copies their URL 
bar.  Because they have no templates on hand (or if they do they take 
longer to find than doing the above steps) and because they certainly 
don't remember what the damn string is, because it has 28 chars instead 
of 5.


And if they do that they get the above string.

Amusingly enough, if you repeat the exercise for SVG namespace, the 
results are correct.


-Boris

P.S.  And in case you really care:

wget -S -O /dev/null http://www.w3.org/1999/xhtml
...
HTTP/1.1 301 Moved Permanently
Location: http://www.w3.org/1999/xhtml/

Whereas http://www.w3.org/2000/svg doesn't do any redirecting.

I will posit that if namespace strings were not URIs such issues would 
be physically impossible.


-Boris



Re: Adding Web Intents to the Webapps WG deliverables

2011-09-23 Thread Tab Atkins Jr.
On Fri, Sep 23, 2011 at 2:20 PM, Julian Reschke julian.resc...@gmx.de wrote:
 Namespace names are things I copy from templates and never type from memory.

Exactly, which means namespaces aren't memorable.  The only reason to
give up memorability is if you require the name to be both
collision-free and context-free (see Zooko's Triangle).  Both of those
are nice (as they always are), but they're not really required for a
workable namespace.  Giving up memorability for no real benefit is a
loss all around.

In the specific case of intents, the same applies.  We don't need them
to be securely collision-free (collisions are slightly annoying for
the user, but should be fairly rare in practice, and can be resolved
by the user without a lot of trouble).  They should be context-free,
as they apply across the whole web.  And they should be memorable,
because authors have to type these and they get non-memorable things
wrong.

~TJ



Re: Adding Web Intents to the Webapps WG deliverables

2011-09-23 Thread Charles Pritchard

On 9/23/11 2:47 PM, Tab Atkins Jr. wrote:

On Fri, Sep 23, 2011 at 2:20 PM, Julian Reschkejulian.resc...@gmx.de  wrote:

Namespace names are things I copy from templates and never type from memory.

Exactly, which means namespaces aren't memorable.  The only reason to
give up memorability is if you require the name to be both
collision-free and context-free (see Zooko's Triangle).  Both of those
are nice (as they always are), but they're not really required for a
workable namespace.  Giving up memorability for no real benefit is a
loss all around.

In the specific case of intents, the same applies.  We don't need them
to be securely collision-free (collisions are slightly annoying for
the user, but should be fairly rare in practice, and can be resolved
by the user without a lot of trouble).  They should be context-free,
as they apply across the whole web.  And they should be memorable,
because authors have to type these and they get non-memorable things
wrong.

~TJ

The search engine coalition that pushed out  a set of micro-format 
vocabulary weighed toward using urls

for itemtype in microformat:

http://www.schema.org/Event

Given that indexing was put forward as the case for the intent tag, 
how would that look in current microdata semantics?


This is on webintents.org:
intent
  action=http://webintents.org/share;
  type=image/*
  href=share.html
 /

Would it look something like this, in microdata:
meta itemscope
 itemtype=http://webintents.org/share;
 itemprop=image/*
 content=target.html
/





Re: Adding Web Intents to the Webapps WG deliverables

2011-09-22 Thread Henri Sivonen
On Tue, Sep 20, 2011 at 6:53 AM, Ian Hickson i...@hixie.ch wrote:
 Why not just improve both navigator.registerContentHandler and
 navigator.registerProtocolHandler?

 In particular, why are intents registered via a new HTML element rather
 than an API?

Web Activities addresses this problem space without a new HTML element:
https://github.com/mozilla/openwebapps/blob/master/docs/ACTIVITIES.md

-- 
Henri Sivonen
hsivo...@iki.fi
http://hsivonen.iki.fi/



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

2011-09-22 Thread Charles Pritchard

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.





Re: Adding Web Intents to the Webapps WG deliverables

2011-09-22 Thread Ian Hickson
On Wed, 21 Sep 2011, Paul Kinlan wrote:
  On Tue, 20 Sep 2011, Paul Kinlan wrote:
  
   Q: Why are the verbs URLs?
  
   Verbs don't have to be URL's but a URL will allow us a point of 
   reference to documentation, versioning and namespacing allowing 
   verbs with similar names but by a different provider to not conflict 
   with each other (thus allowing developers to come up with their own 
   schemes and APIs outside of standardisation).
 
  If they're just arbitrary strings, this should be made clearer.
 
 We will strongly encourage a URL, so we might have to say it must be a 
 URI to make developers think of that first. A URL gives us a lot of 
 advantages (more below on your sharing point).

   Q: Why are some verbs hard-coded into the API?
  
   Convenience and ensuring there is a consistent use of the first set 
   of intents that cover the most common initial use cases.
 
  If the strings are inconvenient enough that you feel the need to 
  provide a constant for them, maybe that's a sign that the strings 
  should be changed!
 
  Rather than 'http://webintents.org/share', why not just 'share' for 
  the share intent, for example?
 
 Providing a single verb will vastly increase the chances that of 
 collision of competing providers saying they handle the action but 
 provide a completely different API.

There's no difference between two people coming up with the name foo and 
two people coming up with the name http://webintents.org/foo;, unless 
you're saying you're confident that people won't use the prefix the spec 
uses for its verbs for their verbs.

But this is a non-problem. In practice, we have plenty of examples of 
spaces where conflicts don't happen despite not having used long names 
such as URLs. For example:

 - rel= values in HTML
 - element names in HTML
 - MIME type names
 - scheme names


 A verb on its own will imply that it is a web intents verb managed by 
 the webintents project and all the documentation for that will live 
 under webintents, which means we would then need to think about 
 standardisation and stewardship for the entire namespace.

I don't see why. Just have a wiki page that people can list their verbs on 
and then point to their documentation.


 Android is a good example, the intent system is fabulous, if you look at 
 http://www.openintents.org/en/intentstable most developers end up 
 reverse name-spacing the intent and I believe when people want to 
 namespace their API they will either use this syntax or some other 
 inconsistent naming.  Having a URL is nice and consistent with the web.

I think having a URL is very _in_consistent with the Web. Few technologies 
use URLs for verbs, and most of them have gone nowhere fast.

URLs are Web pages. Authors find it confusing when they are used for other 
things.


  I'm not saying to actually use navigator.registerContentHandler and 
  navigator.registerProtocolHandler, but why not base something on that 
  API rather than reinventing the wheel?
 
 We have two bits, one is registering the intent which we think is better 
 declaratively (explain more later in the email) and the second is the 
 invocation which we believe WI has a far simpler usage of the API and 
 can take advantage of postMessage.

I disagree that what you have is as simple as what you could have. In 
particular, what you have is definitely not as simple (nor as powerful) as 
the proposal I put at the end of my e-mail, for instance.


 Specifically we want to get away from having to wait for the remote app 
 to tell us it is ready before we pass it the data - which is what 
 happens if we currently use window.open with a scheme register with RPH 
 RCH etc.

The proposal I put forward does not have this problem.


 var intent = new Intent(http://webintents.org/share;,
 image/png, getData());
 window.navigator.startActivity(intent, function(data) {
 doSomethingAwesome(data);
 });

   var port = navigator.handleIntent(share, image/png);
   port.postMessage(getData());
   port.onmessage = function (event) { doSomethingAwesome(event.data) };


  Sure, but what if the full interface is already open? Maybe Google+ is 
  a better example: you could envisage the Share dialog appearing on 
  the open Google+ page rather than opening an entirely new page just to 
  share a post.
 
  I think this is an important case to support.
 
 We thought about this, we didn't want to overwrite the current task that 
 the user was performing and we didn't want to have a user launch two 
 intents and overwrite what they we working on the previous invocation.

By not supporting the use case at all I think you are overcompensating. :-)

If an application wants to support this case, why not let it? With a model 
such as the one I propose, it's essentially free.


   Q: In particular, why are intents registered via a new HTML element 
   rather than an API? How do you unregister? How do you determine if 
   the intent was registered or not? How do you conditionally 

Re: Adding Web Intents to the Webapps WG deliverables

2011-09-22 Thread James Hawkins
Hey Ian, comments in-line.

On Thu, Sep 22, 2011 at 2:36 PM, Ian Hickson i...@hixie.ch wrote:

 On Wed, 21 Sep 2011, Paul Kinlan wrote:
   On Tue, 20 Sep 2011, Paul Kinlan wrote:
   
Q: Why are the verbs URLs?
   
Verbs don't have to be URL's but a URL will allow us a point of
reference to documentation, versioning and namespacing allowing
verbs with similar names but by a different provider to not conflict
with each other (thus allowing developers to come up with their own
schemes and APIs outside of standardisation).
  
   If they're just arbitrary strings, this should be made clearer.
 
  We will strongly encourage a URL, so we might have to say it must be a
  URI to make developers think of that first. A URL gives us a lot of
  advantages (more below on your sharing point).
 
Q: Why are some verbs hard-coded into the API?
   
Convenience and ensuring there is a consistent use of the first set
of intents that cover the most common initial use cases.
  
   If the strings are inconvenient enough that you feel the need to
   provide a constant for them, maybe that's a sign that the strings
   should be changed!
  
   Rather than 'http://webintents.org/share', why not just 'share' for
   the share intent, for example?
 
  Providing a single verb will vastly increase the chances that of
  collision of competing providers saying they handle the action but
  provide a completely different API.

 There's no difference between two people coming up with the name foo and
 two people coming up with the name http://webintents.org/foo;, unless
 you're saying you're confident that people won't use the prefix the spec
 uses for its verbs for their verbs.

 But this is a non-problem. In practice, we have plenty of examples of
 spaces where conflicts don't happen despite not having used long names
 such as URLs. For example:

  - rel= values in HTML
  - element names in HTML
  - MIME type names
  - scheme names


We are following the model set by Android Intents by bootstrapping the
feature with a list of actions that we agree will be far-reaching and
useful, e.g., share, pick, edit, save.

The Android Intents system employs java-style namespacing,
e.g., android.intent.action.EDIT is the string value of the ACTION_EDIT
constant.  The idea is that vendors can add to the intent ecosystem by
creating new actions, usually by setting the namespace appropriately,
e.g., org.openintents.action.CALCULATOR.

When designing the format of the Web Intents action string, we got a lot of
feedback that the java namespacing is not native to the web and that URLS
would be a better namespacing scheme.  This gave us the added benefit that,
by setting precedence with the default list actions, action URLs serve both
as a namespace mechanism and the page at the URL contains documentation for
the particular action.  If a developer wants to find out more about
http://webintents.org/share, all she has to do is visit that URL (try it!).

If, for example, Twitter decided to add a new action, say 'tweet', they
could set the action string to http://dev.twitter.com/tweet which would
contain the input/output specification for this action.


 A verb on its own will imply that it is a web intents verb managed by
  the webintents project and all the documentation for that will live
  under webintents, which means we would then need to think about
  standardisation and stewardship for the entire namespace.

 I don't see why. Just have a wiki page that people can list their verbs on
 and then point to their documentation.


We plan to employ a model such as this.  openintents.org currently lists
third-party intents for the Android system, though we could use that site to
enumerate Web Intents.



  Android is a good example, the intent system is fabulous, if you look at
  http://www.openintents.org/en/intentstable most developers end up
  reverse name-spacing the intent and I believe when people want to
  namespace their API they will either use this syntax or some other
  inconsistent naming.  Having a URL is nice and consistent with the web.

 I think having a URL is very _in_consistent with the Web. Few technologies
 use URLs for verbs, and most of them have gone nowhere fast.

 URLs are Web pages. Authors find it confusing when they are used for other
 things.


   I'm not saying to actually use navigator.registerContentHandler and
   navigator.registerProtocolHandler, but why not base something on that
   API rather than reinventing the wheel?
 
  We have two bits, one is registering the intent which we think is better
  declaratively (explain more later in the email) and the second is the
  invocation which we believe WI has a far simpler usage of the API and
  can take advantage of postMessage.

 I disagree that what you have is as simple as what you could have. In
 particular, what you have is definitely not as simple (nor as powerful) as
 the proposal I put at the end of my e-mail, for instance.


  Specifically 

Re: Adding Web Intents to the Webapps WG deliverables

2011-09-22 Thread Tab Atkins Jr.
On Thu, Sep 22, 2011 at 3:28 PM, James Hawkins jhawk...@google.com wrote:
 When designing the format of the Web Intents action string, we got a lot of
 feedback that the java namespacing is not native to the web and that URLS
 would be a better namespacing scheme.  This gave us the added benefit that,
 by setting precedence with the default list actions, action URLs serve both
 as a namespace mechanism and the page at the URL contains documentation for
 the particular action.  If a developer wants to find out more about
 http://webintents.org/share, all she has to do is visit that URL (try it!).
 If, for example, Twitter decided to add a new action, say 'tweet', they
 could set the action string to http://dev.twitter.com/tweet which would
 contain the input/output specification for this action.

URLs are really, really not a good namespacing mechanism, because URLs
are not names in practice.  Names are compared with string-equality,
generally.  URLs are compared  as URLs, which is a lot crazier.  Is
http://dev.twitter.com/tweet; the same action as
http://dev.twitter.com/tweet/;?  What about
https://dev.twitter.com/tweet; or //dev.twitter.com/tweet or
/tweet (assume this last one is on a page within dev.twitter.com)?
There's a decent chance that all of these are considered the same
url by devs, and devs will probably attempt to use them.  I haven't
even mentioned yet the presence/absence of www in urls.

Will this mistake be caught when it doesn't work?  Some of the time,
yeah.  A lot of devs won't go through and test every intent they add.
Even if they do, they may just test with the same incorrect URL they
registered with, and then be bewildered when they're not getting the
traffic they think they should be (and it's even worse for users, who
thought they let the page register for tweeting, but it only works
some of the time, when other devs accidentally use the same incorrect
url).

~TJ



Re: Adding Web Intents to the Webapps WG deliverables

2011-09-22 Thread Charles Pritchard

On 9/22/2011 2:36 PM, Ian Hickson wrote:

On Wed, 21 Sep 2011, Paul Kinlan wrote:

On Tue, 20 Sep 2011, Paul Kinlan wrote:

Q: Why are the verbs URLs?

Verbs don't have to be URL's but a URL will allow us a point of
reference to documentation, versioning and namespacing allowing
verbs with similar names but by a different provider to not conflict
with each other (thus allowing developers to come up with their own
schemes and APIs outside of standardisation).

If they're just arbitrary strings, this should be made clearer.

We will strongly encourage a URL, so we might have to say it must be a
URI to make developers think of that first. A URL gives us a lot of
advantages (more below on your sharing point).


Q: Why are some verbs hard-coded into the API?

Convenience and ensuring there is a consistent use of the first set
of intents that cover the most common initial use cases.

If the strings are inconvenient enough that you feel the need to
provide a constant for them, maybe that's a sign that the strings
should be changed!

Rather than 'http://webintents.org/share', why not just 'share' for
the share intent, for example?

Providing a single verb will vastly increase the chances that of
collision of competing providers saying they handle the action but
provide a completely different API.

There's no difference between two people coming up with the name foo and
two people coming up with the name http://webintents.org/foo;, unless
you're saying you're confident that people won't use the prefix the spec
uses for its verbs for their verbs.



That appears to me what he's saying. I think experimenting developers 
are just as likely to [ab-]use the default namespace as 
http://webintents.org, if they're not following guidelines.
I'd really like to see that default namespace dropped. It's just not 
necessary. It feels more like advertising than a resource.




A verb on its own will imply that it is a web intents verb managed by
the webintents project and all the documentation for that will live
under webintents, which means we would then need to think about
standardisation and stewardship for the entire namespace.

I don't see why. Just have a wiki page that people can list their verbs on
and then point to their documentation.


I agree here. The standard is sufficient for stewardship.

In the specification, you're defining the verb as DOMString, no 
restrictions.


If that's the case, there's no need for formal stewardship beyond the 
standard.
And there's no need for webintents.org to be mentioned in common use of 
the share verb.




Android is a good example, the intent system is fabulous, if you look at
http://www.openintents.org/en/intentstable most developers end up
reverse name-spacing the intent and I believe when people want to
namespace their API they will either use this syntax or some other
inconsistent naming.  Having a URL is nice and consistent with the web.

I think having a URL is very _in_consistent with the Web. Few technologies
use URLs for verbs, and most of them have gone nowhere fast.

URLs are Web pages. Authors find it confusing when they are used for other
things.



It's been pretty common in XML-land to use URLs.

Developers are familiar with reverse name-spacing, URL semantics are a 
bit heavy:

com.facebook.like
vs.
https://www.facebook.com/like

If that end-point isn't used for any particular validation, it's overly 
verbose. The protocol adds nothing.


I'd like to see schema matches reserved for future use, putting them in 
sync with registerProtocolHandler.


As verbs are not validated against anything in particular, it'd be nice 
to have https://* as a means for additional validation / verb registration.


I'm fine with the list of reserved strings, but I don't want 
http://webintents.org/ as a prefix. It's a waste for my fingers to type.





I'm not saying to actually use navigator.registerContentHandler and
navigator.registerProtocolHandler, but why not base something on that
API rather than reinventing the wheel?

We have two bits, one is registering the intent which we think is better
declaratively (explain more later in the email) and the second is the
invocation which we believe WI has a far simpler usage of the API and
can take advantage of postMessage.

I disagree that what you have is as simple as what you could have. In
particular, what you have is definitely not as simple (nor as powerful) as
the proposal I put at the end of my e-mail, for instance.


They're both simple proposals.

I would like to see a common means for expressing web intents in HTML.
I don't think the current intent tag is sufficient.

Vendors are heading to link rel; such as,
http://code.google.com/intl/en-US/chrome/apps/docs/no_crx.html

Can it be squeezed into link semantics, instead of introducing a new tag?


Specifically we want to get away from having to wait for the remote app
to tell us it is ready before we pass it the data - which is what
happens if we currently use window.open with 

Re: Adding Web Intents to the Webapps WG deliverables

2011-09-22 Thread John J Barton
On Thu, Sep 22, 2011 at 5:22 PM, Charles Pritchard ch...@jumis.com wrote:
 I don't see why. Just have a wiki page that people can list their verbs on
 and then point to their documentation.

 I agree here. The standard is sufficient for stewardship.

Why won't I create a bot that fills with wiki with a dictionary's
worth of verbs point to my important intent: making money on
advertising? My own personal single-point of control. Oh, you think
your bot is faster than mine? We'll see about that! Oh, the wiki
domain owners stepped in? Set up a committee to approve changes?
Censorship! Politics! Slowness!

And so on.

jjb



Re: Adding Web Intents to the Webapps WG deliverables

2011-09-21 Thread Ms2ger

On 09/20/2011 11:27 PM, Bjoern Hoehrmann wrote:

with the Web Applications Working Group, which after six years has a
XMLHttpRequest test suite consisting of nothing but There is a good
chance a test suite for XMLHttpRequest will be placed around here and
no XMLHttpRequest specification to show.


http://www.w3.org/TR/XMLHttpRequest/
http://w3c-test.org/webapps/XMLHttpRequest/tests/submissions/Opera/



Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread Rich Tibbett

Ian Hickson wrote:

Why not just improve both navigator.registerContentHandler and
navigator.registerProtocolHandler?


http://groups.google.com/group/web-intents/browse_thread/thread/3dff7c2cdf5815b8

I tend to agree with rolling this in to RCH and RPH and seeing if we 
could refine the processing algorithms therein to satisfy the security 
issues highlighted in that thread (i.e. ensuring the cross document 
messaging channel setup from a window.open with a registered protocol 
handler is origin bound).




Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread イアンフェッティ
With all due respect, I think that if we have to re-charter or create a new
working group each time a new API comes up we are all doomed. The overhead
of creating and monitoring so many WGs is not appealing to many of us.

On Tue, Sep 20, 2011 at 6:55 AM, Robin Berjon ro...@berjon.com wrote:

 Hi James,

 thanks for bringing this forward, it is indeed a very interesting approach.

 On Sep 19, 2011, at 22:27 , James Hawkins wrote:
  I've read through the Webapps charter, and I believe Web Intents fits the
 goals and scope of the WG.

 It does fit the goal and scope, but then most web client technology does ;)
 Where you may run into issues is that it does not fit in the deliverables
 list. Since that is what members makes their IP commitment on, a new
 deliverable of non-negligible content might require rechartering. Last time
 we did that, it wasn't very pleasant.

 Thankfully, there is already a group that was chartered with Intents (or,
 in the poetic phrasing of charters, with an API that allows web
 applications to register themselves as handlers/providers based on data
 string identifiers and an API that enables other web applications to
 discover these handlers/providers and gain permission to interact with them
 — but Intents is what that means): the Device APIs group,
 http://www.w3.org/2011/07/DeviceAPICharter. It'd save a lot on the
 bureaucracy and allow us all to just go straight to work.

 We'd certainly be happy to accept your draft input. The new DAP is meant to
 be completely flexible in how it is organised. Notably, if you prefer to
 conduct work on this spec without necessarily getting all the email from the
 rest of the group we can setup a dedicated Task Force with its own mailing
 list and chair (if there's a volunteer, otherwise I'll do it). TFs can
 decide whether they want to have telcons or not.

 --
 Robin Berjon - http://berjon.com/ - @robinberjon





Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread Robin Berjon
Hi Ian,

On Sep 20, 2011, at 16:04 , Ian Fette (イアンフェッティ) wrote:
 With all due respect, I think that if we have to re-charter or create a new 
 working group each time a new API comes up we are all doomed. The overhead of 
 creating and monitoring so many WGs is not appealing to many of us.

That's a recurring theme, with the following constraints:

   • people with IP don't want wildcard groups because the IP risks for them 
are hard to evaluate;
   • people who want to get work done don't want to have to jump through the 
bureaucratic hoops of creating new groups;
   • people who are focused on a single topic complain about monster groups 
that cover too many topics.

So there probably isn't an option that will make everyone happy, though 
improvements are being discussed.

Thankfully those problems don't apply here. There is an existing group so 
there's no need for bureaucratic hoops — those have been handled and everything 
is primed to go. The overhead involved in monitoring it involves clicking the 
form to join it and filtering the related list somewhere convenient — which can 
be the same mailbox as an existing one if there's too much overhead involved in 
reading from two mailboxes.

So can we quit the process discussion and just get to work?

-- 
Robin Berjon - http://berjon.com/ - @robinberjon




Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread イアンフェッティ
I don't get it. The overhead of getting all the other browsers to join the
WG you mention is just as high, especially when there's no indication that a
number of browsers intend to join that group. I don't think it's a random
process question, I think it's rather fundamental issue. If we agree that
the right way forward is to create a new WG for each API and we have to get
people to join each WG to get any IP considerations, it would be much more
effective just to do things in WHATWG and mail out a please sign this and
return letter. It would probably get the same number of responses and be a
hell of a lot lower overhead, while effectively offering as much (or rather,
as little) benefit as we get from being forced to start a new group for each
API.

-Ian

On Tue, Sep 20, 2011 at 7:21 AM, Robin Berjon ro...@berjon.com wrote:

 Hi Ian,

 On Sep 20, 2011, at 16:04 , Ian Fette (イアンフェッティ) wrote:
  With all due respect, I think that if we have to re-charter or create a
 new working group each time a new API comes up we are all doomed. The
 overhead of creating and monitoring so many WGs is not appealing to many of
 us.

 That's a recurring theme, with the following constraints:

   • people with IP don't want wildcard groups because the IP risks for
 them are hard to evaluate;
   • people who want to get work done don't want to have to jump through the
 bureaucratic hoops of creating new groups;
   • people who are focused on a single topic complain about monster
 groups that cover too many topics.

 So there probably isn't an option that will make everyone happy, though
 improvements are being discussed.

 Thankfully those problems don't apply here. There is an existing group so
 there's no need for bureaucratic hoops — those have been handled and
 everything is primed to go. The overhead involved in monitoring it involves
 clicking the form to join it and filtering the related list somewhere
 convenient — which can be the same mailbox as an existing one if there's too
 much overhead involved in reading from two mailboxes.

 So can we quit the process discussion and just get to work?

 --
 Robin Berjon - http://berjon.com/ - @robinberjon




Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread Robin Berjon
Hi Ian!

On Sep 20, 2011, at 16:26 , Ian Fette (イアンフェッティ) wrote:
 I don't get it. The overhead of getting all the other browsers to join the WG 
 you mention is just as high

Can you please detail what overhead that involves? There are only two cases 
here:

• You have IP concerns relevant to Web Intents. In that case you need IP 
portfolio review. That overhead is the same for joining and for rechartering an 
existing group (it's just politically higher in the rechartering case).
• You don't have IP concerns relevant to Web Intents. In that case you just 
join the group — zero overhead.

It's a simple solution that just involves clicking through a form. If you have 
a political mexican standoff of vendors not joining while the others aren't, it 
can hardly be blamed on the process, DAP, WebApps, W3C, or whatever else. I'm 
sure that it can be sorted out, though.

Intents were initially added to DAP's charter in good part because Google asked 
us to. It's a little annoying to be blamed for doing exactly what you were 
asked to do.

-- 
Robin Berjon - http://berjon.com/ - @robinberjon




Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread Charles Pritchard

On 9/20/2011 7:55 AM, Robin Berjon wrote:

Hi Ian!

On Sep 20, 2011, at 16:26 , Ian Fette (イアンフェッティ) wrote:

I don't get it. The overhead of getting all the other browsers to join the WG 
you mention is just as high

Can you please detail what overhead that involves? There are only two cases 
here:

 • You have IP concerns relevant to Web Intents. In that case you need IP 
portfolio review. That overhead is the same for joining and for rechartering an 
existing group (it's just politically higher in the rechartering case).
 • You don't have IP concerns relevant to Web Intents. In that case you 
just join the group — zero overhead.

It's a simple solution that just involves clicking through a form. If you have 
a political mexican standoff of vendors not joining while the others aren't, it 
can hardly be blamed on the process, DAP, WebApps, W3C, or whatever else. I'm 
sure that it can be sorted out, though.

Intents were initially added to DAP's charter in good part because Google asked 
us to. It's a little annoying to be blamed for doing exactly what you were 
asked to do.


There is certainly some overlap between DAP and WebApps. Is that the 
issue here, Robin?


I don't have much of a solution for it: I've been looking at DAP as an 
incubator with a broad

scope and a good history of experimentation.


-Charles



Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread Robin Berjon
Hi Charles,

On Sep 20, 2011, at 17:15 , Charles Pritchard wrote:
 There is certainly some overlap between DAP and WebApps. Is that the issue 
 here, Robin?

If you ask me, there isn't any issue at all :) James suggested that WebApps 
take over Intents. Since it isn't in WebApps's deliverables, this could require 
some process mongering which I think we can all agree is an annoying waste of 
time. As it happens however, DAP already has Intents in its charter, so getting 
to work right now rather than walking the bureaucratic path is a simple matter 
of doing the work there.

I'm advocating a JFDI approach over politicking and bureaucracy. That's all 
there is to it.

Put another way, I too would like there to be just one huge Web APIs group 
that would handle all of WebApps, DAP, Web Events, Geolocation, and a bunch of 
other groups. But we don't have that and there's opposition to the notion. So 
instead of lamenting that issue, let's just use the tools we have that in this 
case happen to be both in place and perfectly serviceable.

 I don't have much of a solution for it: I've been looking at DAP as an 
 incubator with a broad
 scope and a good history of experimentation.

Yeah, DAP has been very fluid in its approaches and is certainly a group in 
which this proposed spec can just hit the ground running. That's why I'm 
offering this solution over jumping through process hoops, which I really don't 
see the entertainment value in.

-- 
Robin Berjon - http://berjon.com/ - @robinberjon




Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread Charles Pritchard

On 9/20/2011 8:57 AM, Robin Berjon wrote:

Hi Charles,

On Sep 20, 2011, at 17:15 , Charles Pritchard wrote:

There is certainly some overlap between DAP and WebApps. Is that the issue 
here, Robin?

If you ask me, there isn't any issue at all :) James suggested that WebApps 
take over Intents. Since it isn't in WebApps's deliverables, this could require 
some process mongering which I think we can all agree is an annoying waste of 
time. As it happens however, DAP already has Intents in its charter, so getting 
to work right now rather than walking the bureaucratic path is a simple matter 
of doing the work there.

I'm advocating a JFDI approach over politicking and bureaucracy. That's all 
there is to it.

Put another way, I too would like there to be just one huge Web APIs group 
that would handle all of WebApps, DAP, Web Events, Geolocation, and a bunch of other 
groups. But we don't have that and there's opposition to the notion. So instead of 
lamenting that issue, let's just use the tools we have that in this case happen to be 
both in place and perfectly serviceable.


I don't have much of a solution for it: I've been looking at DAP as an 
incubator with a broad
scope and a good history of experimentation.

Yeah, DAP has been very fluid in its approaches and is certainly a group in 
which this proposed spec can just hit the ground running. That's why I'm 
offering this solution over jumping through process hoops, which I really don't 
see the entertainment value in.



I've no objection to delivering it in DAP while discussing it on 
public-webapps.


-Charles




Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread イアンフェッティ
On Tue, Sep 20, 2011 at 8:57 AM, Robin Berjon ro...@berjon.com wrote:

 Hi Charles,

 On Sep 20, 2011, at 17:15 , Charles Pritchard wrote:
  There is certainly some overlap between DAP and WebApps. Is that the
 issue here, Robin?

 If you ask me, there isn't any issue at all :) James suggested that WebApps
 take over Intents. Since it isn't in WebApps's deliverables, this could
 require some process mongering which I think we can all agree is an annoying
 waste of time. As it happens however, DAP already has Intents in its
 charter, so getting to work right now rather than walking the bureaucratic
 path is a simple matter of doing the work there.


There's process mongering to get relevant parties to join DAP. This is not
free. If you can guarantee me that the other browsers will join DAP then
let's talk (namely MSFT who just announced a similar spec for Metro, and it
would be very important to get their input here.)



 I'm advocating a JFDI approach over politicking and bureaucracy. That's all
 there is to it.

 Put another way, I too would like there to be just one huge Web APIs
 group that would handle all of WebApps, DAP, Web Events, Geolocation, and a
 bunch of other groups. But we don't have that and there's opposition to the
 notion. So instead of lamenting that issue, let's just use the tools we have
 that in this case happen to be both in place and perfectly serviceable.

  I don't have much of a solution for it: I've been looking at DAP as an
 incubator with a broad
  scope and a good history of experimentation.

 Yeah, DAP has been very fluid in its approaches and is certainly a group in
 which this proposed spec can just hit the ground running. That's why I'm
 offering this solution over jumping through process hoops, which I really
 don't see the entertainment value in.

 --
 Robin Berjon - http://berjon.com/ - @robinberjon




Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread Marcos Caceres
On Tuesday, September 20, 2011 at 7:09 PM, Ian Fette (イアンフェッティ) wrote:
 On Tue, Sep 20, 2011 at 8:57 AM, Robin Berjon ro...@berjon.com 
 (mailto:ro...@berjon.com) wrote:
   Hi Charles,
   
   On Sep 20, 2011, at 17:15 , Charles Pritchard wrote:
   There is certainly some overlap between DAP and WebApps. Is that the 
   issue here, Robin?
   
  If you ask me, there isn't any issue at all :) James suggested that WebApps 
  take over Intents. Since it isn't in WebApps's deliverables, this could 
  require some process mongering which I think we can all agree is an 
  annoying waste of time. As it happens however, DAP already has Intents in 
  its charter, so getting to work right now rather than walking the 
  bureaucratic path is a simple matter of doing the work there.
  
 There's process mongering to get relevant parties to join DAP. This is not 
 free. If you can guarantee me that the other browsers will join DAP then 
 let's talk (namely MSFT who just announced a similar spec for Metro, and it 
 would be very important to get their input here.)  
That presupposes that Microsoft would have anything to say even in this WG. 
Obviously, I can't speak for Microsoft (and I won't), but just because someone 
is part of the WG doesn't mean that they will say anything … or worst, they 
will just exclude patents willy-nilly like Apple did with Widgets. That's a 
much crappier situation, so careful for what you wish for :)



Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread イアンフェッティ
On Tue, Sep 20, 2011 at 10:15 AM, Marcos Caceres w...@marcosc.com wrote:

 On Tuesday, September 20, 2011 at 7:09 PM, Ian Fette (イアンフェッティ) wrote:
  On Tue, Sep 20, 2011 at 8:57 AM, Robin Berjon ro...@berjon.com (mailto:
 ro...@berjon.com) wrote:
Hi Charles,
  
On Sep 20, 2011, at 17:15 , Charles Pritchard wrote:
There is certainly some overlap between DAP and WebApps. Is that the
 issue here, Robin?
  
   If you ask me, there isn't any issue at all :) James suggested that
 WebApps take over Intents. Since it isn't in WebApps's deliverables, this
 could require some process mongering which I think we can all agree is an
 annoying waste of time. As it happens however, DAP already has Intents in
 its charter, so getting to work right now rather than walking the
 bureaucratic path is a simple matter of doing the work there.
 
  There's process mongering to get relevant parties to join DAP. This is
 not free. If you can guarantee me that the other browsers will join DAP then
 let's talk (namely MSFT who just announced a similar spec for Metro, and it
 would be very important to get their input here.)
 That presupposes that Microsoft would have anything to say even in this WG.
 Obviously, I can't speak for Microsoft (and I won't), but just because
 someone is part of the WG doesn't mean that they will say anything … or
 worst, they will just exclude patents willy-nilly like Apple did with
 Widgets. That's a much crappier situation, so careful for what you wish for
 :)


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.




Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread Marcos Caceres
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.



Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread イアンフェッティ
On Tue, Sep 20, 2011 at 10:27 AM, Marcos Caceres w...@marcosc.com 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.

 Why do we need to recharter? I don't get the point of having a WG that has
to recharter every single time that we develop a new API. Maybe we should
just stop developing new APIs? The W3C patent policy lets people exclude
things if they so wish, and I don't deny anyone that right. But if we go to
a world where we say Let's create a new WG for each API then we get no
benefit out of the W3C whatsoever. We aren't guaranteed wide review of the
APIs, most WGs probably won't have all the relevant people participating,
and so then we will still have all the worries about relevant patents not
being disclosed or licensed, and frankly at that point W3C offers nothing
that WHATWG does not except for a ton of process overhead. If we have to
create a new WG for each new API, I propose we just do it all in WHATWG.


Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread Paul Kinlan
Hi Ian,

Here are some answers, I have worked closely with the team on getting this
ready so if I miss anything out they will be able to fill in the blanks.

Q: Why are the verbs URLs?

Verbs don't have to be URL's but a URL will allow us a point of reference to
documentation, versioning and namespacing allowing verbs with similar names
but by a different provider to not conflict with each other (thus allowing
developers to come up with their own schemes and APIs outside of
standardisation).

Q: Why are some verbs hard-coded into the API?

Convenience and ensuring there is a consistent use of the first set of
intents that cover the most common initial use cases.

Q: How are types matched?

I don't know the best phrase, mime-typedness.  A direct
string comparison unless there is a * after the / (image/*) which then means
every image.

Q: Why not just improve both navigator.registerContentHandler and
navigator.registerProtocolHandler?

WI encompasses aspects of both of these API's - but more importantly there
are some paradigms we wish to bring that will not fit in to either directly.
 We want one consistent way of delivering data to applications, we want it
to be a client-side delivery mechanism, and we want applications to be able
to tell the action it supports and the data types it can handle.

For instance WI can have application success and failure semantics that are
proxied via the UA so it can respond.  It has a much more succinct syntax
for processing data and establishing channels of communication.  Launching
an app via RPH whilst in its simplest form can be embedded in an anchor has
many complexities for setting up and managing communication across windows.

WI's data delivery is entirely driven on the client, registering a protocol
handler requires a URL substitution which forces the developer to either
require a server to process the response (via querystring) or to have a
complex postMessage dance to deliver data, or to manage data with the hash
parameter; the latter is troublesome because of limits in URL sizes as well
as the extra burden to the developer if they are already extensively using
hash and onhashchange; the former is troublesome because it will not work
offline; and the 2nd point, we strongly believe that client and service in
all but the simplest scenarios should not have to tell each other they are
ready before they deliver each other the data - the current situation for
web developers is that the receiving app needs to tell the calling app that
it is ready for data which leads to trying to come up with a standard
message processing code that all apps agree on.  We want to get to a
scenario that allows developers not to have to think of the three different
ways they may need send data to any one particular app.

Q: How does an already-open page get to handle an action? e.g. say GMail
wants to handle the share intent, and the user already has GMail open,
and the user clicks a share button on Flickr. How does the existing
GMail instance get the notification?

If it was a share, we would envisage the UI to open the compose email
function rather than the full interface.  The context in this case wouldn't
make sense to open the full app up.  However it is entirely up to the app
what it does and in the case of it opening the full UI, it would open a new
instance because we only deliver the data once and it is placed on the
intent object.

Q: In particular, why are intents registered via a new HTML element rather
than an API? How do you unregister? How do you determine if the intent was
registered or not? How do you conditionally register (e.g. once the user
has paid for the service)?

External discoverability, indexing and scraping is a very important part of
the intent tag, understanding the API points of an application is very
powerful to external systems - via an API we lose this ability, or at least
make it fiendishly hard to discover. Flexibility for the UA; the UA gets a
much richer understanding of the capabilities of an application, allowing it
to have more control of how it presents and manages the intents and
registration to the user.  If it is available as a tag it
allows screen-readers or other accessibility tools to be able to indicate
that A) and intent might need to be installed, or that B) the application is
a handler for something at load time rather than at some point in the
applications lifecycle.

Developer experience is another important reason for the tag: We didn't want
the developers to have to think too hard about enabling their apps
to receive data; questions developers ask often of an API is when should I
call the code, should it be in onload, before, after?  Given our experience
working with developers, the more steps or potential questions that are
raised in a developers head about implementing functionality, the more
likely they are to de-prioritise the work in favor of other work.  We
considered the cases of the Notifications API, where there is a 

Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread James Hawkins
Hi Robin,

On Tue, Sep 20, 2011 at 7:55 AM, Robin Berjon ro...@berjon.com wrote:

 Hi Ian!

 On Sep 20, 2011, at 16:26 , Ian Fette (イアンフェッティ) wrote:
  I don't get it. The overhead of getting all the other browsers to join
 the WG you mention is just as high

 Can you please detail what overhead that involves? There are only two cases
 here:

* You have IP concerns relevant to Web Intents. In that case you need IP
 portfolio review. That overhead is the same for joining and for rechartering
 an existing group (it's just politically higher in the rechartering case).
* You don't have IP concerns relevant to Web Intents. In that case you
 just join the group ― zero overhead.

 It's a simple solution that just involves clicking through a form. If you
 have a political mexican standoff of vendors not joining while the others
 aren't, it can hardly be blamed on the process, DAP, WebApps, W3C, or
 whatever else. I'm sure that it can be sorted out, though.

 Intents were initially added to DAP's charter in good part because Google
 asked us to. It's a little annoying to be blamed for doing exactly what you
 were asked to do.


I'm the TL of the Intents team at Google, but this is a large company and
I've only been involved with the larger Open Web Platform team for ~6
months.  I'm not familiar with the details surrounding Google asking DAP to
add Intents to the charter.  Can you fill me in on the details?

To clarify on my end, the current draft of the Web Intents API is entering a
cluttered namespace; there are several proposals with similar names/ideas
that are not directly tied to this API:
* Web Introducer/Web-send (Tyler Close, published early 2010)
* Web Intents (Paul Kinlan, published in Nov 2010)

If my hunch is right, you're referring to Tyler's Introducer proposal; note
that while Tyler does work at Google, his work on Introducer was not tied to
the Chrome team.  The Web Intents proposal of this thread has the backing of
the Chrome team which has agreed that Intents is the way to move forward in
this problem space.

Thanks,
James


Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread Robin Berjon
HI Ian,

On Sep 20, 2011, at 19:38 , Ian Fette (イアンフェッティ) wrote:
 Why do we need to recharter? I don't get the point of having a WG that has to 
 recharter every single time that we develop a new API.

I can't begin to tell you how sympathetic I am to this feeling, and the 
frustration that goes with. As a freelance web hacker I have no IP to care for, 
and I very much wish that all companies with IP portfolios had the same 
attitude that you have. But that's hardly under my control and I'm merely 
pointing out that pushing this through WebApps risks bureaucratic overhead 
whereas there is an option that involves no bureaucracy.

Note that if your primary concern is Microsoft providing feedback, if they so 
wish they always can. They've provided extensive feedback to DAP in the past, 
e.g. 
http://lists.w3.org/Archives/Public/www-archive/2011Mar/att-0001/microsoft-api-draft-final.html#capture_api_extensions

 But if we go to a world where we say Let's create a new WG for each API 
 then we get no benefit out of the W3C whatsoever.

Hear, hear. Thankfully in this case it's a WG that's already created, and has 
~15 deliverables. Still smaller than WebApps, but better than 15 WGs!

Note that a complicating factor is that the feedback we got from others (e.g. 
Mozilla) was the opposite: they'd rather have seen DAP be several smaller WGs. 
It's hard to please everyone, which is precisely why I'm so keen to avoid 
pushing this into process-space, getting to work where it's process-easiest, 
and ensuring reviews in every way we know. If people want to review they will 
no matter which group it's in; if they don't it won't happen even if they are 
in the group.

-- 
Robin Berjon - http://berjon.com/ - @robinberjon




Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread Bjoern Hoehrmann
* Ian Fette wrote:
I don't get it. The overhead of getting all the other browsers to join the
WG you mention is just as high, especially when there's no indication that a
number of browsers intend to join that group. I don't think it's a random
process question, I think it's rather fundamental issue. If we agree that
the right way forward is to create a new WG for each API [...]

The idea is to record in charters what working groups are expected to
deliver to allow proper review, planning, allocation of resources, and
so on. A coarse characterization will make those things difficult, and
a very narrow characterization will make taking up new work difficult.
Surprising new requirements come with more overhead than things that
have been anticipated well in advance; but that's not one WG per API.

I note that these processes are not designed to minimize hurdles for a
handful of browser vendors, but for broad consensus and high quality
deliverables that arrive reasonably predictably. That requires parties
to synchronize. Removing synchronization pressure leads to what we have
with the Web Applications Working Group, which after six years has a
XMLHttpRequest test suite consisting of nothing but There is a good
chance a test suite for XMLHttpRequest will be placed around here and
no XMLHttpRequest specification to show.

There are drafts and submissions, but it would seem people regard this
state of affairs as good enough and so there is little pressure to pull
things together and push out a proper release. And I note the same goes
for earlier stages aswell, the process being largely unpredictable as
it is driven by when one or more of a handful people feel like it, it
becomes very difficult for out-of-the-loop parties to meaningfully en-
gage in the process. If you mostly want to sanity-check reasonably com-
plete documents, which should you review? The first Last Call? Second?
Third? Fourth? Fith Last Call? Third Candidate Recommendation? When can
we expect a reasonable test suite to verify everything is interoperable
enough to remove vendor prefixes? Seven years? Oh there is a couple of
Webkit specific tests somewhere in the source tree, we think this is
good enough so we just throw it out there with no proper test suite?

It's not a matter of this has more overhead than that, but a matter
of what we, all of us, want to get out of the standards process, and
what of that can reasonably be achieved within constraints we have. It
may be for instance that we are moving too fast, and should not work
at this point on Web Intents and instead use what limited resources
there are to finish some of the pending work first. It may also be we
don't care about this silly business with Recommendations and Tests so
this can easily be added. Or we might find that we need to invest more
resources so we can do more things in parallel. Or something else. But
without an understanding what the process should produce and support,
which we quite clearly lack, at least collectively, there is no point
in arguing that process A is better than process B.
-- 
Björn Höhrmann · mailto:bjo...@hoehrmann.de · http://bjoern.hoehrmann.de
Am Badedeich 7 · Telefon: +49(0)160/4415681 · http://www.bjoernsworld.de
25899 Dagebüll · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/ 



Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread Ian Hickson
On Tue, 20 Sep 2011, Rich Tibbett wrote:
 Ian Hickson wrote:
  Why not just improve both navigator.registerContentHandler and
  navigator.registerProtocolHandler?
 
 http://groups.google.com/group/web-intents/browse_thread/thread/3dff7c2cdf5815b8
 
 I tend to agree with rolling this in to RCH and RPH and seeing if we 
 could refine the processing algorithms therein to satisfy the security 
 issues highlighted in that thread (i.e. ensuring the cross document 
 messaging channel setup from a window.open with a registered protocol 
 handler is origin bound).

I'm not sure it necessarily makes sense to use registerProtocolHandler() 
itself, but something based on it seems like it would work, rather than 
reinventing the wheel entirely.


On Tue, 20 Sep 2011, Paul Kinlan wrote:
 
 Q: Why are the verbs URLs?
 
 Verbs don't have to be URL's but a URL will allow us a point of 
 reference to documentation, versioning and namespacing allowing verbs 
 with similar names but by a different provider to not conflict with each 
 other (thus allowing developers to come up with their own schemes and 
 APIs outside of standardisation).

If they're just arbitrary strings, this should be made clearer.


 Q: Why are some verbs hard-coded into the API?
 
 Convenience and ensuring there is a consistent use of the first set of 
 intents that cover the most common initial use cases.

If the strings are inconvenient enough that you feel the need to provide a 
constant for them, maybe that's a sign that the strings should be changed!

Rather than 'http://webintents.org/share', why not just 'share' for the 
share intent, for example?


 Q: How are types matched?
 
 I don't know the best phrase, mime-typedness.  A direct string 
 comparison unless there is a * after the / (image/*) which then means 
 every image.

This needs to be defined much more precisely. e.g. what happens to MIME 
parameters? Does */* match foo/*? What syntax checking is done on the 
inputs here?


 Q: Why not just improve both navigator.registerContentHandler and
 navigator.registerProtocolHandler?
 
 WI encompasses aspects of both of these API's - but more importantly 
 there are some paradigms we wish to bring that will not fit in to either 
 directly.

I'm not saying to actually use navigator.registerContentHandler and 
navigator.registerProtocolHandler, but why not base something on that API 
rather than reinventing the wheel?


 We want one consistent way of delivering data to applications

Soemthing based on navigator.register*Handler() would give you that. 
Inventing something new wouldn't, since then you'd have two mechanisms 
(the register*Handler() methods, and Web Intents).


 we want it to be a client-side delivery mechanism

If it's going to be entirely client-side, I would recommend using 
MessagePorts, so that the communication isn't just one-post, one-response. 
For example, consider an intent where the provider needs to take the 
submitted data, encrypt it, then hand it back to the original site for a 
signature, then needs to take the result and send it somewhere. With a 
mechanism that just consists of post/response, there's no good way to get 
the data back (you'd have to do it on the server end). If we provide ports 
to communicate back and forth, you wouldn't have a problem.


 and we want applications to be able to tell the action it supports and 
 the data types it can handle.

That doesn't seem hard to do if we just work on an extension to 
register*Handler(). No need for a completely different API.


 Q: How does an already-open page get to handle an action? e.g. say GMail 
 wants to handle the share intent, and the user already has GMail open, 
 and the user clicks a share button on Flickr. How does the existing 
 GMail instance get the notification?
 
 If it was a share, we would envisage the UI to open the compose email 
 function rather than the full interface. 

Sure, but what if the full interface is already open? Maybe Google+ is a 
better example: you could envisage the Share dialog appearing on the 
open Google+ page rather than opening an entirely new page just to share a 
post.

I think this is an important case to support.


 Q: In particular, why are intents registered via a new HTML element 
 rather than an API? How do you unregister? How do you determine if the 
 intent was registered or not? How do you conditionally register (e.g. 
 once the user has paid for the service)?
 
 External discoverability, indexing and scraping is a very important part 
 of the intent tag understanding the API points of an application is very 
 powerful to external systems - via an API we lose this ability, or at 
 least make it fiendishly hard to discover.

Could you elaborate on this need? What use case does it address?

Adding new elements (especially to head) is a high-cost affair and 
should be avoided unless there are really good reasons for it.


 Flexibility for the UA; the UA gets a much richer understanding of the 
 capabilities of 

Re: Adding Web Intents to the Webapps WG deliverables

2011-09-20 Thread Paul Kinlan
Some comments inline - I hope they don't get lost.

On Tue, Sep 20, 2011 at 11:34 PM, Ian Hickson i...@hixie.ch wrote:

 On Tue, 20 Sep 2011, Rich Tibbett wrote:
  Ian Hickson wrote:
   Why not just improve both navigator.registerContentHandler and
   navigator.registerProtocolHandler?
 
 
 http://groups.google.com/group/web-intents/browse_thread/thread/3dff7c2cdf5815b8
 
  I tend to agree with rolling this in to RCH and RPH and seeing if we
  could refine the processing algorithms therein to satisfy the security
  issues highlighted in that thread (i.e. ensuring the cross document
  messaging channel setup from a window.open with a registered protocol
  handler is origin bound).

 I'm not sure it necessarily makes sense to use registerProtocolHandler()
 itself, but something based on it seems like it would work, rather than
 reinventing the wheel entirely.


 On Tue, 20 Sep 2011, Paul Kinlan wrote:
 
  Q: Why are the verbs URLs?
 
  Verbs don't have to be URL's but a URL will allow us a point of
  reference to documentation, versioning and namespacing allowing verbs
  with similar names but by a different provider to not conflict with each
  other (thus allowing developers to come up with their own schemes and
  APIs outside of standardisation).

 If they're just arbitrary strings, this should be made clearer.


We will strongly encourage a URL, so we might have to say it must be a URI
to make developers think of that first. A URL gives us a lot of advantages
(more below on your sharing point).


  Q: Why are some verbs hard-coded into the API?
 
  Convenience and ensuring there is a consistent use of the first set of
  intents that cover the most common initial use cases.

 If the strings are inconvenient enough that you feel the need to provide a
 constant for them, maybe that's a sign that the strings should be changed!

 Rather than 'http://webintents.org/share', why not just 'share' for the
 share intent, for example?


Providing a single verb will vastly increase the chances that of collision
of competing providers saying they handle the action but provide
a completely different API.  A verb on its own will imply that it is a web
intents verb managed by the webintents project and all the documentation for
that will live under webintents, which means we would then need to think
about standardisation and stewardship for the entire namespace.  We don't
want to become the IANA and have an amazingly formal process (
http://tools.ietf.org/html/rfc4395) of registration.  Rather this can be
lightweight and delegated out to who owns the domain and they can manage
their specs, supported intents and importantly developer support.

If we use URL as the first filter, we have the documentation endpoint and
the namespaces for developers to experiment build upon with little fear of
impacting others.  We have had developers want to hook up transcription
services and OCR services, we worry that without namespacing and the
presence of a strictly formal process people stop building their own API's
and endpoints.

Android is a good example, the intent system is fabulous, if you look at
http://www.openintents.org/en/intentstable most developers end up
reverse name-spacing the intent and I believe when people want to namespace
their API they will either use this syntax or some other inconsistent
naming.  Having a URL is nice and consistent with the web.




  Q: How are types matched?
 
  I don't know the best phrase, mime-typedness.  A direct string
  comparison unless there is a * after the / (image/*) which then means
  every image.

 This needs to be defined much more precisely. e.g. what happens to MIME
 parameters? Does */* match foo/*? What syntax checking is done on the
 inputs here?


* matches foo/* - we should clear the documentation up.  We didn't think
*/png as an example would make sense so */* is contracted to *.



  Q: Why not just improve both navigator.registerContentHandler and
  navigator.registerProtocolHandler?
 
  WI encompasses aspects of both of these API's - but more importantly
  there are some paradigms we wish to bring that will not fit in to either
  directly.

 I'm not saying to actually use navigator.registerContentHandler and
 navigator.registerProtocolHandler, but why not base something on that API
 rather than reinventing the wheel?


We have two bits, one is registering the intent which we think is
better declaratively (explain more later in the email) and the second is the
invocation which we believe WI has a far simpler usage of the API and can
take advantage of postMessage.



  We want one consistent way of delivering data to applications

 Soemthing based on navigator.register*Handler() would give you that.
 Inventing something new wouldn't, since then you'd have two mechanisms
 (the register*Handler() methods, and Web Intents).


Specifically we want to get away from having to wait for the remote app to
tell us it is ready before we pass it the data - which is what happens if we

Adding Web Intents to the Webapps WG deliverables

2011-09-19 Thread イアンフェッティ
I'm forwarding this on behalf of a colleague whose message seems caught up
in a moderation queue. Apologies if it results in a duplicate message for
anyone.

-- Forwarded message --
From: James Hawkins jhawk...@google.com
Date: Mon, Sep 19, 2011 at 1:27 PM
Subject: Adding Web Intents to the Webapps WG deliverables
To: public-webapps@w3.org


I am the tech lead for the team designing and implementing Web Intents [1]
for Chrome at Google.  Web Intents is a web platform feature modeled after
the similarly named feature in Android OS.  Web Intents enables client sites
to request high-level functionality, e.g. share, edit, pick, upload, auth,
from an unknown (to the client) provider.  The UA enumerates the list of
registered providers that the user has already accepted as Intent handlers,
allowing the user to pick which provider she wants to use for the particular
action.

This feature is not a panacea, nor do we envision it as a 'meta API';
however, the use cases we've focused on will make web apps much more
connected and useful for users.  Take the NASCAR problem: with Web Intents,
publishers can get rid of maintaining an ever-growing list of 'share'
providers, replacing them with one share button that kicks off the 'share'
action.  The user only sees the sites that she actively uses.

Note: we're actively working with Mozilla on the API, and the draft I have
prepared has been agreed upon by both vendors.

I've read through the Webapps charter, and I believe Web Intents fits the
goals and scope of the WG.

Goals
* Promote universal access to Web applications across a wide range of
devices.
  - Web Intents can be implemented in browsers on all devices, and more
importantly, the feature is a perfect conduit for hooking into platform
functionality (Android Intents, iOS API, a scalable
registerProtocolHandler).
* Promote creation of tutorials and other educational material.
  - Check out http://examples.webintents.org where we have example
clients/providers of Web Intents using a JS shim that works across all
current browsers.
  - The action string in the API is suggested to be a URL pointing to
documentation for the action, e.g., http://webintents.org/share is both the
string for the 'share' action and the URL of the documentation for said
action.

Scope
* Markup vocabularies for describing and controlling client-side application
behavior.
  - Web Intents provides an intent tag that allows provider sites to
declare which intent actions they handle.
* Programming interfaces for client-side development: platform interaction.
  - As stated above, this feature can easily be extended to hook into the
platform to, say, allow the UA to notify providers of platform events or
data sources, e.g., plugging in a camera.
The developers of this API, from both Mozilla and Google, believe Webapps is
the right home for Web Intents.  I'd like to open discussion on the topic
and get your feedback.  Ultimately we'd like to take the next steps towards
getting Web Intents officially out in the open, actively developed by the
larger Webapps community.

Thanks,
James Hawkins

[1] http://dev.chromium.org/developers/design-documents/webintentsapi


Re: Adding Web Intents to the Webapps WG deliverables

2011-09-19 Thread Ian Hickson

Why not just improve both navigator.registerContentHandler and 
navigator.registerProtocolHandler?

In particular, why are intents registered via a new HTML element rather 
than an API? How do you unregister? How do you determine if the intent was 
registered or not? How do you conditionally register (e.g. once the user 
has paid for the service)?

How does an already-open page get to handle an action? e.g. say GMail 
wants to handle the share intent, and the user already has GMail open, 
and the user clicks a share button on Flickr. How does the existing 
GMail instance get the notification?

Why are the verbs URLs?

Why are some verbs hard-coded into the API?

How are types matched?

-- 
Ian Hickson   U+1047E)\._.,--,'``.fL
http://ln.hixie.ch/   U+263A/,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'



Re: Adding Web Intents to the Webapps WG deliverables

2011-09-19 Thread Charles Pritchard
Should Paul Kinlan be Cc'd on this? His concept work is helpful.



On Sep 19, 2011, at 8:53 PM, Ian Hickson i...@hixie.ch wrote:

 
 Why not just improve both navigator.registerContentHandler and 
 navigator.registerProtocolHandler?
 
 In particular, why are intents registered via a new HTML element rather 
 than an API? How do you unregister? How do you determine if the intent was 
 registered or not? How do you conditionally register (e.g. once the user 
 has paid for the service)?
 
 How does an already-open page get to handle an action? e.g. say GMail 
 wants to handle the share intent, and the user already has GMail open, 
 and the user clicks a share button on Flickr. How does the existing 
 GMail instance get the notification?
 
 Why are the verbs URLs?
 
 Why are some verbs hard-coded into the API?
 
 How are types matched?
 
 -- 
 Ian Hickson   U+1047E)\._.,--,'``.fL
 http://ln.hixie.ch/   U+263A/,   _.. \   _\  ;`._ ,.
 Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'
 



Re: Adding Web Intents to the Webapps WG deliverables

2011-09-19 Thread James Hawkins
+Paul Kinlan, Greg Billock - from Google team.
+Mike Hanson, Ben Adida - from Mozilla team.

On Mon, Sep 19, 2011 at 9:25 PM, Charles Pritchard ch...@jumis.com wrote:

 Should Paul Kinlan be Cc'd on this? His concept work is helpful.



 On Sep 19, 2011, at 8:53 PM, Ian Hickson i...@hixie.ch wrote:

 
  Why not just improve both navigator.registerContentHandler and
  navigator.registerProtocolHandler?
 
  In particular, why are intents registered via a new HTML element rather
  than an API? How do you unregister? How do you determine if the intent
 was
  registered or not? How do you conditionally register (e.g. once the user
  has paid for the service)?
 
  How does an already-open page get to handle an action? e.g. say GMail
  wants to handle the share intent, and the user already has GMail open,
  and the user clicks a share button on Flickr. How does the existing
  GMail instance get the notification?
 
  Why are the verbs URLs?
 
  Why are some verbs hard-coded into the API?
 
  How are types matched?
 
  --
  Ian Hickson   U+1047E)\._.,--,'``.fL
  http://ln.hixie.ch/   U+263A/,   _.. \   _\  ;`._ ,.
  Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'
 



Adding Web Intents to the Webapps WG deliverables

2011-09-19 Thread James Hawkins
I am the tech lead for the team designing and implementing Web Intents [1]
for Chrome at Google.  Web Intents is a web platform feature modeled after
the similarly named feature in Android OS.  Web Intents enables client sites
to request high-level functionality, e.g. share, edit, pick, upload, auth,
from an unknown (to the client) provider.  The UA enumerates the list of
registered providers that the user has already accepted as Intent handlers,
allowing the user to pick which provider she wants to use for the particular
action.

This feature is not a panacea, nor do we envision it as a 'meta API';
however, the use cases we've focused on will make web apps much more
connected and useful for users.  Take the NASCAR problem: with Web Intents,
publishers can get rid of maintaining an ever-growing list of 'share'
providers, replacing them with one share button that kicks off the 'share'
action.  The user only sees the sites that she actively uses.

Note: we're actively working with Mozilla on the API, and the draft I have
prepared has been agreed upon by both vendors.

I've read through the Webapps charter, and I believe Web Intents fits the
goals and scope of the WG.

Goals
* Promote universal access to Web applications across a wide range of
devices.
  - Web Intents can be implemented in browsers on all devices, and more
importantly, the feature is a perfect conduit for hooking into platform
functionality (Android Intents, iOS API, a scalable
registerProtocolHandler).
* Promote creation of tutorials and other educational material.
  - Check out http://examples.webintents.org where we have example
clients/providers of Web Intents using a JS shim that works across all
current browsers.
  - The action string in the API is suggested to be a URL pointing to
documentation for the action, e.g., http://webintents.org/share is both the
string for the 'share' action and the URL of the documentation for said
action.

Scope
* Markup vocabularies for describing and controlling client-side application
behavior.
  - Web Intents provides an intent tag that allows provider sites to
declare which intent actions they handle.
* Programming interfaces for client-side development: platform interaction.
  - As stated above, this feature can easily be extended to hook into the
platform to, say, allow the UA to notify providers of platform events or
data sources, e.g., plugging in a camera.
The developers of this API, from both Mozilla and Google, believe Webapps is
the right home for Web Intents.  I'd like to open discussion on the topic
and get your feedback.  Ultimately we'd like to take the next steps towards
getting Web Intents officially out in the open, actively developed by the
larger Webapps community.

Thanks,
James Hawkins

[1] http://dev.chromium.org/developers/design-documents/webintentsapi