[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Public WebGL] Advanced features and the chicken/egg problem

Let me quickly recap our discussions we had so far about features that don't run on mobiles.

A: "Can we have X"?
B: "No, it doesn't run on mobiles."
A: "But it's cool"
B: "We don't know how well received it would be by developers, let's just wait and see"

See what? Wait for when? Will it ever run on mobiles? When will it run on mobiles? and so forth.

The two primary clashing interests in this discussion are these:
Camp conservatives: Appeal to the lowest common denominator of hardware to get WebGL to as many people as possible (angry birds, tic-tac-toe, 3d-tetris, spinning cubes, etc.)
Camp progressives: Use advanced capabilities to make something awesome and accept that only a minority of users will be able to enjoy it (battlefield 3, crysis 3, productivity software, graphics research, realtime terrain errosion, etc.)

We can't resolve this debate on top of WebGL because the "wait and see" approach is extremely slow and possibly does not terminate. In some circumstances you will never "see" because unless you introduce a feature, you don't know how well supported it is, or how popular it turns out to be. But the position of the conservative camp that we shouldn't introduce fragmentary features on WebGL which is intended for the lowest common denominator has validity.

So since I don't see how we could resolve this debate in finite time with WebGL, and I'm less than enthused about waiting for things (I'm impatient, I know), I think this calls for a new strategy to deal with the issue.

I'm just going to throw it out there, can we introduce some kind of API that we can use, that would be quite similar to WebGL, but would allow us to use all the "good bits" as well? For instance something like:

var ctx = canvas.getContext('webgl-and-all-the-good-bits');

The "all the good bits" contexts would have their own extensions that you can't obtain in vanilla webgl. All the good bits contexts would be way more experimental and would ratify extensions quicker, and we can use it as a testbed to measure up support for features as well as developer enthusiasm for them.

I've written http://webglstats.com/ so we can get a good overview of the ecosystem and have a tool at our hands to help us in decisions towards functionality, and to ensure users know what they're gonna get into by relying on some feature. But unless we can actually push ahead new features faster and more safely, it's not gonna help us evaluating features (it's just gonna help us evaluating existing functionality).

What do you think?