I would say there's a spectrum though, even among JavaScript apps, of standards adherence. For example you could draw your own glyphs on a HTML canvas element. That would still be "the open web" in some literal sense, but it's less of a web app in that case and more of a JavaScript app that can run in the browser.
You're right that using the browser as the runtime is a key requirement for an open web app, but I would add a bunch more criteria:
- every user-relevant resource has a URL.
- content is rendered with the semantic tags HTML provides when possible
- the app is performant in common browsers
- you use HTML and CSS in a way that things degrade gracefully on older browsers
- you use standard interactions (hyperlinks, forms) wherever possible and implement your own widgets only when necessary.
By these criteria many pure HTML apps are not good open web apps. The old practice of rendering text in GIFs to get typefaces and anti-aliasing was a step away from "the open web".
I don't think it's strictly a technical line people are talking about. It's a set of conventions that let us write code that is cross platform and gets many benefits for free (sharability, printability, responsive design, etc)
There are many apps that don't consist of representing and manipulating hyperlinked documents, though. For example, games. Would Angry Birds be better if it was built out of DOM nodes? Would an night-sky astronomy visualization app? Would a synthesizer?
These are the types of things people make Chrome apps for. And frankly, I don't see the advantage of those being built out of "standards-conforming semantic markup" versus just manipulating the browser's APIs directly.
I would say there's a spectrum though, even among JavaScript apps, of standards adherence. For example you could draw your own glyphs on a HTML canvas element. That would still be "the open web" in some literal sense, but it's less of a web app in that case and more of a JavaScript app that can run in the browser.
You're right that using the browser as the runtime is a key requirement for an open web app, but I would add a bunch more criteria:
- every user-relevant resource has a URL.
- content is rendered with the semantic tags HTML provides when possible
- the app is performant in common browsers
- you use HTML and CSS in a way that things degrade gracefully on older browsers
- you use standard interactions (hyperlinks, forms) wherever possible and implement your own widgets only when necessary.
By these criteria many pure HTML apps are not good open web apps. The old practice of rendering text in GIFs to get typefaces and anti-aliasing was a step away from "the open web".
I don't think it's strictly a technical line people are talking about. It's a set of conventions that let us write code that is cross platform and gets many benefits for free (sharability, printability, responsive design, etc)