Re: [whatwg] Installable web apps

2010-05-27 Thread Lachlan Hunt

On 2010-05-26 19:10, Aaron Boodman wrote:

On Wed, May 26, 2010 at 4:30 AM, Henri Sivonenhsivo...@iki.fi
wrote:

There's a zip file with a .crx extension that contains an icon, a
permission manifest and potentially the code of the app (Building
a serverless app). When the .crx file contains the code of the
app, a .crx file is essentially like a .wgt file (which is what
Opera has been pushing and already has a catalog site
http://widgets.opera.com/ ) except with the manifest XML exorcised
and replaced with JSON.


This isn't really the point of this mail, but I just want to point
out that there are more differences between wgt and crx than the
format of the manifest file. The most important is that the identify
of a crx file is a public key, and all crx files are self-signed by
their key. This makes a crx file's identity unforgeable.


There are, however, a lot of similarities between your proposal and 
widgets.  I compared the manifests of both crx and widgets, and I 
believe the metadata included in crx maps to that in widgets as follows:


*Chrome Manifest* | *Widgets Manifest*
(implied) | widget viewmodes=windowed
name  | name
version   | widget version=...
icons | icon src=
- 24  | ... height=24 width=24
- 128 | ... height=128 width=128
permissions   | feature
web_content   | access
- enabled | (implied)
- origin  | ... origin=...
- paths   | N/A - what's the purpose of this, why is it needed?
launch:   | Default start file, e.g. index.html, or
- web_url | N/A
- local_path  | content src=...

Digital signatures are also supported in widgets.  Are there any 
limitations that you are aware of with widgets-digsig compared with crx 
signatures that might make them unsuitable?


http://www.w3.org/TR/widgets-digsig/


I completely agree that app cache is a more webby way of making
apps available offline than packaging. In particular, app cache
preserves the ability to deep-link into an application, which is an
important characteristic of the web.

The source of our support for packaged applications is that we have
gotten a lot of feedback from developers that find packages a very
convenient way to develop applications that work offline. I think
the reason is that packages are conceptually much simpler than app
caches. That said, I think this is mainly a lack of good tool support
for app cache and good documentation, and I think it can eventually
be overcome.

For now, I would like to focus on live web apps, not packaged local
apps.


Fair enough.  I think widgets already cover the packaged local app cases 
anyway.



I think the Webby step to take from here is to introduce the
concept of application bookmarks (still without zip files). To
install a Web application, the user would navigate to the app's
URL and create an application bookmark.


For Chrome this isn't the UX we want. We want users to click a link
in the content area and be presented with an install dialog. We
think that going to something in the browser to applicationify a
web app is too indirect and that many users will not get it.


That was the user experience offered by Safari 4 beta's experimental 
Save as Web Application feature and Mozilla Prism.  I can understand why 
that is perceived as suboptimal for many users.  But they had the 
advantage of allowing the user to turn any website they wanted into an 
application, whereas your proposed model depends on the site explicitly 
providing an application to install.  There are benefits to both models.



That said, I think there is room to support multiple models of
installation (or bookmarking, or whatever you want to call it),
though.


Indeed.


If it's still deemed useful to be able to pre-grant permissions, I
think the app should, again instead of installed zip files,
uselink rel=something  to point to a manifest that shows what the
apps wishes to be pre-granted. When the features to be granted have
obvious JavaScript entry points from the window object (e.g.
navigator.geolocation), the JavaScript names of those entry points
should be used to identify the features in the manifest in order to
avoid having to standardize separate permission names.


We have a growing set of metadata you're trying tolink  to:

- Icons


link rel=icon sizes=24x24 href=icon.png


- Application name (you didn't mention this, but I think it
is nice to have distinct from thetitle, which is often overloaded
with status information)


meta name=application-name content=...


 - Any permissions


Not yet available.


To me, this all leads to the following proposal:

html
head
!-- for UAs that want a button in the browser chrome to appify --
link rel=application-description href=myapp.json
/head
body
!-- for UAs that want a button in the [content area] to appify --
button onclick=navigator.installApplication()install/button


This is reminiscent of the old bb element proposal that used to be in 

Re: [whatwg] WebSockets: what to do when there are too many open connections

2010-05-27 Thread Simon Pieters

On Thu, 13 May 2010 16:47:34 +0200, Simon Pieters sim...@opera.com wrote:


On Wed, 12 May 2010 20:01:11 +0200, Ojan Vafai o...@chromium.org wrote:


On Wed, May 12, 2010 at 4:31 AM, Simon Pieters sim...@opera.com wrote:


establishing a WebSocket connection:

[[
Note: There is no limit to the number of established WebSocket  
connections

a user agent can have with a single remote host. Servers can refuse to
connect users with an excessive number of connections, or disconnect
resource-hogging users when suffering high load.
]]

Still, it seems likely that user agents will want to have limits on the
number of established WebSocket connections, whether to a single  
remote host

or multiple remote hosts, in a single tab or overall.



Why? Is the concern that we'd run out of memory? Overload the user's  
network

connection?


If nothing else, the underlying OS might have a limit on the number of  
open connections.


From our testing it seems that Vista has a limit of 1398 open sockets.  
Apparently Ubuntu has a limit of 1024 file descriptors per process.


On low-end devices and low-end networks, it seems likely that there's a  
relatively low limit on the number of connections.


--
Simon Pieters
Opera Software


[whatwg] Problem with http://www.webmproject.org/

2010-05-27 Thread Michael A. Puls II

Off topic (but I couldn't find any contact info on the site)

Could someone please fix http://www.webmproject.org/? The left side of  
the page is inaccessible at  1024 x 768 (800 x 600 for example), which  
makes the site unusable.


(It has to be some common css that Google uses on their sites as the same  
problem happens on Vemo-branded pages on youtube)


Thanks

--
Michael


Re: [whatwg] Problem with http://www.webmproject.org/

2010-05-27 Thread Ashley Sheridan
On Thu, 2010-05-27 at 11:12 -0400, Michael A. Puls II wrote:

 Off topic (but I couldn't find any contact info on the site)
 
 Could someone please fix http://www.webmproject.org/? The left side of  
 the page is inaccessible at  1024 x 768 (800 x 600 for example), which  
 makes the site unusable.
 
 (It has to be some common css that Google uses on their sites as the same  
 problem happens on Vemo-branded pages on youtube)
 
 Thanks
 


It looks like it's using the old (and pretty buggy) hack of using
negative margins and absolute positioning of 50% to align the site in
the middle, and like you've seen, it breaks very easily.

Can be fixed by removing the positioning and margin and replacing it
with margin: auto;

Thanks,
Ash
http://www.ashleysheridan.co.uk




Re: [whatwg] Problem with http://www.webmproject.org/

2010-05-27 Thread Peter Beverloo
On Thu, May 27, 2010 at 17:12, Michael A. Puls II shadow2...@gmail.com wrote:

 Off topic (but I couldn't find any contact info on the site)

 Could someone please fix http://www.webmproject.org/? The left side of the 
 page is inaccessible at  1024 x 768 (800 x 600 for example), which makes the 
 site unusable.

 (It has to be some common css that Google uses on their sites as the same 
 problem happens on Vemo-branded pages on youtube)

 Thanks

 --
 Michael

Hello Michael,

You should write a message to the WebM discussion groups as it's
listed on the Tools page, and in the latest blog entry.

http://groups.google.com/a/webmproject.org/group/webm-discuss/topics

Thank you,
Peter


Re: [whatwg] WebSockets: what to do when there are too many open connections

2010-05-27 Thread John Tamplin
On Thu, May 27, 2010 at 10:28 AM, Simon Pieters sim...@opera.com wrote:

 From our testing it seems that Vista has a limit of 1398 open sockets.
 Apparently Ubuntu has a limit of 1024 file descriptors per process.


On Linux, that is just the default (which may vary between distros) and can
be configured by the administrator -- see ulimit -n, sysctl -w fs.file-max,
and fs.file-max in /etc/sysctl.conf (location may var between Linux
distros).

-- 
John A. Tamplin
Software Engineer (GWT), Google


Re: [whatwg] WebSockets: what to do when there are too many open connections

2010-05-27 Thread Mike Shaver
On Thu, May 27, 2010 at 11:45 AM, John Tamplin j...@google.com wrote:
 On Thu, May 27, 2010 at 10:28 AM, Simon Pieters sim...@opera.com wrote:

 From our testing it seems that Vista has a limit of 1398 open sockets.
 Apparently Ubuntu has a limit of 1024 file descriptors per process.

 On Linux, that is just the default (which may vary between distros) and can
 be configured by the administrator -- see ulimit -n, sysctl -w fs.file-max,
 and fs.file-max in /etc/sysctl.conf (location may var between Linux
 distros).

I think it is reasonable to assume that the browser must be able to
operate effectively within those default limits, though: mostly the
browser can't adjust those, or usefully instruct the user to do so.

Mike


Re: [whatwg] Problem with http://www.webmproject.org/

2010-05-27 Thread Michael A. Puls II
On Thu, 27 May 2010 11:25:56 -0400, Peter Beverloo pe...@lvp-media.com  
wrote:


On Thu, May 27, 2010 at 17:12, Michael A. Puls II shadow2...@gmail.com  
wrote:


Off topic (but I couldn't find any contact info on the site)

Could someone please fix http://www.webmproject.org/? The left side  
of the page is inaccessible at  1024 x 768 (800 x 600 for example),  
which makes the site unusable.


(It has to be some common css that Google uses on their sites as the  
same problem happens on Vemo-branded pages on youtube)


Thanks

--
Michael


Hello Michael,

You should write a message to the WebM discussion groups as it's
listed on the Tools page, and in the latest blog entry.

http://groups.google.com/a/webmproject.org/group/webm-discuss/topics


Thanks. I can't see a tools menu and didn't read the blog as I was  
looking for a Contact section. I was able to find that page by searching  
google, but when trying to join the group, it was asking me for a  
@webmproject address that I didn't have, so I just closed the page.


I now notice there's a use another email address link. Wasn't sure if my  
gmail address would work, but tried it and it did.


--
Michael


Re: [whatwg] Installable web apps

2010-05-27 Thread Aaron Boodman
On Thu, May 27, 2010 at 5:09 AM, Lachlan Hunt lachlan.h...@lachy.id.au wrote:
 On 2010-05-26 19:10, Aaron Boodman wrote:

 On Wed, May 26, 2010 at 4:30 AM, Henri Sivonenhsivo...@iki.fi
 wrote:

 There's a zip file with a .crx extension that contains an icon, a
 permission manifest and potentially the code of the app (Building
 a serverless app). When the .crx file contains the code of the
 app, a .crx file is essentially like a .wgt file (which is what
 Opera has been pushing and already has a catalog site
 http://widgets.opera.com/ ) except with the manifest XML exorcised
 and replaced with JSON.

 This isn't really the point of this mail, but I just want to point
 out that there are more differences between wgt and crx than the
 format of the manifest file. The most important is that the identify
 of a crx file is a public key, and all crx files are self-signed by
 their key. This makes a crx file's identity unforgeable.

 There are, however, a lot of similarities between your proposal and widgets.
  I compared the manifests of both crx and widgets, and I believe the
 metadata included in crx maps to that in widgets as follows:

 *Chrome Manifest* | *Widgets Manifest*
 (implied)         | widget viewmodes=windowed
 name              | name
 version           | widget version=...
 icons             | icon src=
 - 24              | ... height=24 width=24
 - 128             | ... height=128 width=128
 permissions       | feature
 web_content       | access
 - enabled         | (implied)
 - origin          | ... origin=...
 - paths           | N/A - what's the purpose of this, why is it needed?
 launch:           | Default start file, e.g. index.html, or
 - web_url         | N/A
 - local_path      | content src=...

 Digital signatures are also supported in widgets.  Are there any limitations
 that you are aware of with widgets-digsig compared with crx signatures that
 might make them unsuitable?

Maybe, but I think that debate should be separate from this thread.

 I think the Webby step to take from here is to introduce the
 concept of application bookmarks (still without zip files). To
 install a Web application, the user would navigate to the app's
 URL and create an application bookmark.

 For Chrome this isn't the UX we want. We want users to click a link
 in the content area and be presented with an install dialog. We
 think that going to something in the browser to applicationify a
 web app is too indirect and that many users will not get it.

 That was the user experience offered by Safari 4 beta's experimental Save as
 Web Application feature and Mozilla Prism.  I can understand why that is
 perceived as suboptimal for many users.  But they had the advantage of
 allowing the user to turn any website they wanted into an application,
 whereas your proposed model depends on the site explicitly providing an
 application to install.  There are benefits to both models.

 That said, I think there is room to support multiple models of
 installation (or bookmarking, or whatever you want to call it),
 though.

 Indeed.

 If it's still deemed useful to be able to pre-grant permissions, I
 think the app should, again instead of installed zip files,
 uselink rel=something  to point to a manifest that shows what the
 apps wishes to be pre-granted. When the features to be granted have
 obvious JavaScript entry points from the window object (e.g.
 navigator.geolocation), the JavaScript names of those entry points
 should be used to identify the features in the manifest in order to
 avoid having to standardize separate permission names.

 We have a growing set of metadata you're trying tolink  to:

 - Icons

 link rel=icon sizes=24x24 href=icon.png

My concern with reusing favicons is that some browsers support
changing them at runtime, so they can be overloaded to show status
information. We were actually planning on doing this in Chrome too,
even for the larger sizes. Also, it seems weird to repeat the
application information on every webpage in an app, so I prefer
linking off to a separate resource anyway.

I wonder if it would be too much of a hack to only use the icon listed
in the HTML for use in the launch/bookmark UI, and only display
runtime changes to it in the tab/window titlebar.

 - Application name (you didn't mention this, but I think it
 is nice to have distinct from thetitle, which is often overloaded
 with status information)

 meta name=application-name content=...

You're right -- that one does exist already within the page. And it is
a shame to waste these existing features.

The more I think about it, the more I start to agree that just using
the meta and link tags we already have (with perhaps one addition
for permissions), could work.

Let me think about it some more.

  - Any permissions

 Not yet available.

 To me, this all leads to the following proposal:

 html
 head
 !-- for UAs that want a button in the browser chrome to appify --
 link rel=application-description href=myapp.json
 

Re: [whatwg] Image resize API proposal

2010-05-27 Thread David Levin
On Tue, May 25, 2010 at 3:58 AM, Kornel Lesinski kor...@geekhood.netwrote:


 JPEG can be efficiently decoded at fraction of its size — without full
 decode and scale process. This process also needs only fraction of memory
 required for full scaling, which might matter on low-end mobile devices.
 Letting UA utilize this feature may give huge performance gains.


Agreed. I could see this being done.


 Scaling isn't the only operation desirable — in some cases users might also
 want to crop the image (e.g., to upload only their face as an avatar), and
 cropping interface needs to be platform-specific — on touchscreen devices
 I'd rather use gestures than select-by-click'n'drag interface typical for
 desktop.


ok.



 I think scaling of images before upload might be left completely up to UA.
 From site's perspective it could look like user simply selected scaled-down
 file. It could even be done declaratively — site could define desired size
 and whether user should be asked to crop the image:

 input type=file accept=image/* max-image-size=1000x1000
 crop=allowed


This appears to be so limited that it doesn't allow for the web page to
display a preview of what is being uploaded. Take the gmail example from
that I gave in this thread, where the image is dragged into an email and
then the image is resized before uploading. Ideally, the image shown in the
email would be the image that is being sent.



 Actually, I wish UAs offered scaling even for plain input type=file,
 because I don't expect every site with image upload to add extra code for
 resizing.


I agree that having it be totally declarative would be simpler to write in a
web page.

dave


Re: [whatwg] Image resize API proposal

2010-05-27 Thread David Levin
Summarizing
We've found that a synchronous solution will likely lead to a bad user
experience. As an alternative, we've presented an async
apihttp://lists.whatwg.org/pipermail/whatwg-whatwg.org/2010-May/026292.htmlwhich
solves this frequent use
casehttp://lists.whatwg.org/pipermail/whatwg-whatwg.org/2010-May/026435.htmlfor
web pages (which may involve many images at once) and allows the UA to
optimize the operation (by using the GPU and/or multiple threads):

image.
getBlob(mimeType /* req */, width /* req */, height /* req */, successEvent /*
req */, errorEvent /* op */, qualityLevel /* op */, preserveAspectRatio /*
op */, rotateExif /* op */);



dave


Re: [whatwg] device element, streams and peer-to-peer connections

2010-05-27 Thread Mark Frohnmayer
On Fri, May 21, 2010 at 1:29 AM, Anne van Kesteren ann...@opera.com wrote:
 On Fri, 21 May 2010 10:20:00 +0200, Nicklas Sandgren
 nicklas.sandg...@ericsson.com wrote:

 As mentioned in the draft, the peer-to-peer API must rely on underlying
 protocols/mechanisms to establish the connections and to transport the
 streams. What are the thoughts regarding these protocols, and has there been
 any discussion around this topic?

 Last I checked the hope is that the protocol problem will go away. So far
 it seems that is unlikely. :-)

There has been some limited discussion about the peer-to-peer section
as it relates to real-time peer to peer gaming applications:

http://old.nabble.com/Real-time-networking-in-web-applications-and-games-td27994693.html

And references a proposed lower level (UDP-based) WebSocket-like
protocol: http://github.com/nardo/torque_sockets/raw/master/TorqueSocket_API.txt

The approach here was to punt as much of the flow
control/retransmission policy to the application level, whether you're
streaming video streams, game data or whatever.

 You could also debate how often peer-to-peer media streams will actually
 work. Aren't FWs and NATs going to give problems in many cases? Maybe it
 would be better to design for a situation where the media always go via a
 server. Additional benefits are that WS could be used for media transport,
 and that the media could be transcoded if the codec capabilities of the
 clients do not match.

 I'm not really sure how this is an alternative approach. It would just be
 leaving peer-to-messaging out... Streaming video via WebSocket is something
 we definitely want to enable in due course, irrespective of whether
 peer-to-peer messaging comes to fruition.

To answer the question of problem in p2p regarding FWs and NATs, the
libjingle folks report that 92% of participants are able to connect
directly: 
http://code.google.com/apis/talk/libjingle/important_concepts.html#connections
with the remainder using simple message relay servers.  In practice
this represents a hugely significant bandwidth reduction for
application hosts.  Given the level of possible application
sophistication promise in the next gen web, leaving out such a huge
efficiency win would be a shame.

An approach that allows data output from devices to be adjusted to a
target bit rate and collected in meaningful chunks, but not directly
connected to the transport mechanism could be a viable path.  A device
stream could be transported either via WebSocket or a p2p networking
layer with equal ease, leaving the message marshaling up to the web
app.

Any feedback on the specific p2p packet layer protocol is always welcome.

Regards,
Mark


Re: [whatwg] device element, streams and peer-to-peer connections

2010-05-27 Thread James Salsman
On Thu, May 27, 2010 at 3:34 PM, Mark Frohnmayer
mark.frohnma...@gmail.com wrote:

 There has been some limited discussion about the peer-to-peer section
 as it relates to real-time peer to peer gaming applications:

 http://old.nabble.com/Real-time-networking-in-web-applications-and-games-td27994693.html

 And references a proposed lower level (UDP-based) WebSocket-like
 protocol: 
 http://github.com/nardo/torque_sockets/raw/master/TorqueSocket_API.txt

 The approach here was to punt as much of the flow
 control/retransmission policy to the application level, whether you're
 streaming video streams, game data or whatever.

Why is relying on TCP for reliable delivery inferior to asking
applications to re-implement reliable transmission?


Re: [whatwg] device element, streams and peer-to-peer connections

2010-05-27 Thread Mark Frohnmayer
On Thu, May 27, 2010 at 6:22 PM, James Salsman jsals...@gmail.com wrote:

 Why is relying on TCP for reliable delivery inferior to asking
 applications to re-implement reliable transmission?


In real-time networked applications the retransmission delay imposed
by TCP can cause unnecessary and noticeable hitches in the experience;
hence many real-time games use custom network stacks built atop UDP --
for a more in-depth read you can check out (somewhat dated at this
point but largely relevant) :
http://www710.univ-lyon1.fr/~jciehl/Public/educ/GAMA/2008/tribes_networking_model.pdf
.

This is not to suggest TCP is somehow inferior, just that for certain
applications it's not the right tool.  The next gen web has all the
pieces in at least prototype form to support full, high-performance
apps, but without low-level networking support (real-time, p2p) whole
classes of applications will be excluded.


Re: [whatwg] device element, streams and peer-to-peer connections

2010-05-27 Thread James Salsman
On Thu, May 27, 2010 at 7:59 PM, Mark Frohnmayer
mark.frohnma...@gmail.com wrote:
 On Thu, May 27, 2010 at 6:22 PM, James Salsman jsals...@gmail.com wrote:

 Why is relying on TCP for reliable delivery inferior to asking
 applications to re-implement reliable transmission?


 In real-time networked applications the retransmission delay imposed
 by TCP can cause unnecessary and noticeable hitches in the experience;
 hence many real-time games use custom network stacks built atop UDP

Would it be appropriate to allow selection between reliable delivery
involving delay and unreliable delivery with the shorter delay
characteristics of UDP by allowing the user to select between the
TCP-based asynchronous HTTP/HTTPS multipart/form-encoded POST of input
type=file accept=audio as per http://www.w3.org/TR/device-upload and
use UDP for synchronous or asynchronous device element I/O?

Best regards,
James Salsman