The Grand Compromise

I propose the following Grand Compromise:

  1. The WHATWG and W3C revise the Canvas API to align with Flash’s Display List API.
  2. Adobe donates the Flash Player to the WebKit project to serve as an initial implementation of the revised Canvas API.
  3. Apple, Google and Microsoft adopt and implement the revised Canvas API in all of their desktop and mobile browsers.

I think this is an ideal compromise: everyone gives a little, everyone gains a lot. There are no losers.

I’ll address each point in more detail this week.

Tags: , , ,

  • dgieselaar

    I'm curious as to what extent donating to Webkit/W3C will stifle innovation of the Flash Player. As far as I'm concerned, that's the biggest selling point for the Flash Player.

  • troygilbert

    I wouldn't donate to the W3C as they don't create browsers, they
    create standards. The WebKit browser moves along at a good pace.

    The pace may be slower than it could be at Adobe; the compromise is
    that there would be many more eyes on the code, improving its
    stability, efficiency and security.

  • fabianvercuiel

    Too much faith in W3C to solve the webs problems :)

    It sounds good as an ideal but we need browser plugins to push innovation

  • troygilbert

    Not expecting the W3C to solve any problems, asking them to adopt solutions that already exist. The WebKit project, on the other hand, has a fine track record of moving forward and benefiting web developers and users everywhere.

    Browser plugins are good, I don't want them to go away. The idea is to adopt the innovations made by plugins once they become widely standardized. Flash has reached this point. The standards groups and browser makers are moving forward with the Canvas element. Aligning this element with Flash benefits all of the existing content as well as jumpstarting Canvas.

    It's time to retire the Flash plugin as a proprietary, closed source extension to browsers. It's ubiquitous and well-understood. Continuing to pile features into a single plugin is not sensible engineering.

  • http://www.silentkraken.com/ Seth Illgard

    It is almost the perfect solution, and I'd love to see this happening, but I don't think that any of the 3 points would be taken into consideration by any of the parts involved. Sad.

    The first move should be point number 2, then 1, and after that, 3 will come on it's own.

  • troygilbert

    I originally had them in that order as I felt Adobe would be the best able to make an initial gesture, particularly considering their efforts with the Open Screen Project.

    But after considering it further, I felt that contributing the Flash Player to WebKit would be useless if the standards bodies wouldn't adopt its API. Additionally, the standards bodies are in a better position to compromise for two reasons: first, they don't have any commercial interests at stake; second, the whole point of a standards body is to achieve consensus through compromise.

  • http://blog.touchmypixel.com/ Tarwin

    Yeah, after reading some of the comments below I do think this would be a bad idea, if only because it would stop innovation. We've had CANVAS for ages now, and VML for even longer, and no one used them because:

    a) You had to target specific browsers with less than 90% coverage
    b) You didn't have great development environments for it

    As much as I bitch and mown about having to use the buggy as hell Flash environment (not even talking about coding here, just animation and design) it is a great utility to work with. There's been a lot of other Flash creation tools, and I'm sure more will appear now with Open Screen project, but none have been as useful, easy to use or fully featured as the default Flash one. When it comes to programming that's a whole other story though (mtasc, haXe, FDT in a way ect)

    I know Adobe is already working on ways to get a good Canvas target from their Flash environment, and there are already tools that can read simple animations from SWFs and play them in Canvas. But both of these are slowe and bulkier than Flash (SWF).

    Imagine having a long animation made in Canvas? Apart from all the control script (JS) that you'd have to load, all the cross browser fixes (JS) you'd have to implement in that, just the vectors themselves are stupidly verbose in Canvas (SVG). Imagine if you tried decided you wanted a human readable image format. Or a human readable video format! How uselessly slow would that be. That is both in transport (bits per pixel / vertex) and time for your computer to work out how to display it!

    I tried a little experiment a while back (just because it sounded insane enough to work) where I exported arrays of 0s and 1s from Flash, that represented each frame of an animation. I got a little JS script to play these back by changing coloured squares on a Canvas element. I know this is a bad way to do things, but this is how you're going to have animations in Canvas! It's not a binary format. Things are big!

    And this doesn't even come down to the whole problem of “what am I targeting?”. Of course this can be solved by the development environment (which currently stands as being Flash anyway) but how much is that going to work? How much have good development environments for web designers fixed the problem of cross browser CSS? And how simple is that! Imagine if you had to target 5 different implementations of Canvas over 10 different computer speeds on at least 3 different OSs, and get it showing perfectly on each.

    I'm sorry this is dragging on but this whole discussion is really getting on my nerves.

    When it comes down to it, it is a fight between two large companies that both want to dominate a market. At least one of them is trying to be open about what they make (Adobe). It just gets me angry when Jobs wants to cut people off from creating games in anything but his chosen environment when he doesn't even offer a “games development environemnt”. In the same way how can you tell people they have to use Canvas instead of Flash when there just isn't a great way to make things in it. Until there is everything people do with it is just a hack – for the kinds of “interactives” that people use Flash for at least – and the stupid thing in the whole arguement is that it's likely that Adobe is going to be the one to make the tools to make it easy to create interesting Canvas stuff anyway! I'm not talking about places where people use Flash as a stop-gap for things HTML just doesn't to yet/nicely/supported widely – like gradients, or sounds, or fonts or graphs. These SHOULD be taken over by Canvas, or some system that can be handled natively in the browser. And 3D should be done another way too (worried here that WebGL is just going to be as verbose as Canvas).

    I don't care if I can't look at the source of a SWF (unless I de-compile anyway). Most things done in Flash are too complex to just look at their source and find out how someone did something, or why, or if it is the best way to do things. The fact that there is an amazing community that helps each other, teaches each other and is willing to give their secrets away for free is good enough for me, and one I want to be part of! Yes I think anyone should be able to create content that is viewable on the web. But even here Flash can be used by anyone, sites that let you program directly into a browser and get Flash out of them. Is that not enough?

    Now a real response.

    What is it about the Flash display list that you think is good, and why would you want it in Canvas? The sorting? The drawing modes? The way mouse events are handled? The way text is rendered? The way inheritance of translation is performed?

  • http://blog.touchmypixel.com/ Tarwin

    One more comment. Flash can be buggy. And I'd love to have more people to complain to and hope it gets fixed. But unless it's taken on a by someone who wants to listen to a lot of people bitch about small problems this isn't going to happen anyway. At least with Adobe you know WHO to complain to – even if they don't listen.

    PS – ever tried …. “video.smoothing = false; video.clear(); video.smoothing = true;” OUCH!

  • http://blog.touchmypixel.com/ Tarwin

    Yeah, after reading some of the comments below I do think this would be a bad idea, if only because it would stop innovation. We've had CANVAS for ages now, and VML for even longer, and no one used them because:

    a) You had to target specific browsers with less than 90% coverage
    b) You didn't have great development environments for it

    As much as I bitch and mown about having to use the buggy as hell Flash environment (not even talking about coding here, just animation and design) it is a great utility to work with. There's been a lot of other Flash creation tools, and I'm sure more will appear now with Open Screen project, but none have been as useful, easy to use or fully featured as the default Flash one. When it comes to programming that's a whole other story though (mtasc, haXe, FDT in a way ect)

    I know Adobe is already working on ways to get a good Canvas target from their Flash environment, and there are already tools that can read simple animations from SWFs and play them in Canvas. But both of these are slowe and bulkier than Flash (SWF).

    Imagine having a long animation made in Canvas? Apart from all the control script (JS) that you'd have to load, all the cross browser fixes (JS) you'd have to implement in that, just the vectors themselves are stupidly verbose in Canvas (SVG). Imagine if you tried decided you wanted a human readable image format. Or a human readable video format! How uselessly slow would that be. That is both in transport (bits per pixel / vertex) and time for your computer to work out how to display it!

    I tried a little experiment a while back (just because it sounded insane enough to work) where I exported arrays of 0s and 1s from Flash, that represented each frame of an animation. I got a little JS script to play these back by changing coloured squares on a Canvas element. I know this is a bad way to do things, but this is how you're going to have animations in Canvas! It's not a binary format. Things are big!

    And this doesn't even come down to the whole problem of “what am I targeting?”. Of course this can be solved by the development environment (which currently stands as being Flash anyway) but how much is that going to work? How much have good development environments for web designers fixed the problem of cross browser CSS? And how simple is that! Imagine if you had to target 5 different implementations of Canvas over 10 different computer speeds on at least 3 different OSs, and get it showing perfectly on each.

    I'm sorry this is dragging on but this whole discussion is really getting on my nerves.

    When it comes down to it, it is a fight between two large companies that both want to dominate a market. At least one of them is trying to be open about what they make (Adobe). It just gets me angry when Jobs wants to cut people off from creating games in anything but his chosen environment when he doesn't even offer a “games development environemnt”. In the same way how can you tell people they have to use Canvas instead of Flash when there just isn't a great way to make things in it. Until there is everything people do with it is just a hack – for the kinds of “interactives” that people use Flash for at least – and the stupid thing in the whole arguement is that it's likely that Adobe is going to be the one to make the tools to make it easy to create interesting Canvas stuff anyway! I'm not talking about places where people use Flash as a stop-gap for things HTML just doesn't to yet/nicely/supported widely – like gradients, or sounds, or fonts or graphs. These SHOULD be taken over by Canvas, or some system that can be handled natively in the browser. And 3D should be done another way too (worried here that WebGL is just going to be as verbose as Canvas).

    I don't care if I can't look at the source of a SWF (unless I de-compile anyway). Most things done in Flash are too complex to just look at their source and find out how someone did something, or why, or if it is the best way to do things. The fact that there is an amazing community that helps each other, teaches each other and is willing to give their secrets away for free is good enough for me, and one I want to be part of! Yes I think anyone should be able to create content that is viewable on the web. But even here Flash can be used by anyone, sites that let you program directly into a browser and get Flash out of them. Is that not enough?

    Now a real response.

    What is it about the Flash display list that you think is good, and why would you want it in Canvas? The sorting? The drawing modes? The way mouse events are handled? The way text is rendered? The way inheritance of translation is performed?

  • http://blog.touchmypixel.com/ Tarwin

    One more comment. Flash can be buggy. And I'd love to have more people to complain to and hope it gets fixed. But unless it's taken on a by someone who wants to listen to a lot of people bitch about small problems this isn't going to happen anyway. At least with Adobe you know WHO to complain to – even if they don't listen.

    PS – ever tried …. “video.smoothing = false; video.clear(); video.smoothing = true;” OUCH!