- From: Lachlan Hunt <lachlan.hunt@lachy.id.au>
- Date: Mon, 30 Jul 2007 03:00:44 +1000
- To: public-html <public-html@w3.org>
Hi,
Recently, John Foliot asked for evidence to support the inclusion of
the <canvas> element in HTML5 [1]:
> Please point me to the research that proves that <canvas> is
> REQUIRED, WANTED OR NEEDED by *users* - not developers, *USERS!*.
The way to demonstrate a need or want for a feature by users in this
case, is to look at the functionality that existing websites provide for
users using alternative tools and methods, which ultimately form the use
cases for the canvas element.
Users want an increasingly dynamic and interactive experience on the
web. Providing dynamic graphics is one way in which this can be
achieved. So by providing examples where dynamic and interactive
graphics have been used in the past, demonstrates the need for canvas.
In the past, Flash and Java have been used for dynamic and/or
interactive graphics (among other things). Canvas provides a way to do
that with HTML and JavaScript, and there are already examples of it
being put to use in the wild.
Here are a few examples demonstrating the use cases. Some use Java,
others use canvas. I couldn't find any relevant Flash examples, though
one site mentioned that they had used Flash before switching to canvas.
*Mathematics*
(Shapes, Graphs, etc.)
1. http://mathworld.wolfram.com/Cylinder.html
This example uses a Java applet to render a cylinder that the
user can move around by dragging the mouse to inspect it.
There are many other similar examples on this site.
2. http://polyhedra.org/poly/show/45/square_pyramid
This examples actually uses the canvas element for rendering
various 3D models. The site appears to be a some sort of
educational site about polyhedra shapes. Interestingly, the
about page on the site describes how they had used Flash in the
past, but changed to using canvas when it became available.
http://polyhedra.org/poly/about/
3. http://gcalc.net/
This example is an online graphics calculator. It's built using
a Java applet and allows the user to plot graphs of mathematical
equations.
4. http://www.liquidx.net/plotkit/
PlotKit is a script that can draw graphs from a set of data
(e.g. in a table) using either canvas or SVG.
*Applications*
5. http://pipes.yahoo.com/pipes/
Yahoo! Pipes uses canvas to provide the interactive application
to build "pipes".
6. http://canvaspaint.org/
Canvas Paint is a clone of MS Paint built using canvas. You might
argue that such an application doesn't really serve a practical
purpose, which may be true because basic paint applications probably
come with most operating systems. However, there a variety of ways
it could be put to a real practical use:
a. A Shared Whiteboard allows users to draw on their screen and have
it replicated on another. MSN Messenger, for example, provides
that ability over their IM chat network. Canvas, in conjunction
with XMLHttpRequest, Server Sent Events or maybe even the
TCPConnection interfaces being worked on in the Web API WG would
allow this to be done using an ordinary web browser.
b. A web based email application could provide a basic paint tool for
drawing quick sketches to be emailed to someone.
*Games and Puzzles*
7. Rubik's Cube Java Applets
http://www.rubiks.com/cube_online.html
There are quite a few of these on various web sites, that's
just one of them. It uses a java applet to render the
interactive cube.
8. http://nic-nac-project.de/~jcm/index.php?nav=puzzle
This example implements slide puzzles using canvas.
9. http://www.abrahamjoffe.com.au/ben/canvascape/textures.htm
This is a prototype of a first-person shooter game built using
canvas. It allows the user to walk around the map, but doesn't
yet provide any actual game play beyond that.
*Widgets and Extensions*
10. http://www.oxymoronical.com/web/firefox/TabSidebar
The Tab Sidebar extension for Firefox uses canvas to render
smaller preview of web pages in the side bar, which makes it
easier to recognise and select the page to switch to.
11. Apple originally invented canvas for their OSX Dashboard, and so it
seems likely that there would be a wide variety of widgets that make
use of canvas for something. It's likely that there would also be
widgets for Opera that use canvas too. Although I'm not familiar
with many widgets, or how they work, so I can't provide any specific
examples.
*Art and Presentation*
12. http://cow.neondragon.net/stuff/reflection/
This example uses canvas to add a reflection effect to images.
There's a list of implementations at the bottom of that page
showing practical uses of the effect.
Note that several of those use cases are also use cases for introducing
a 3D context, in addition to the existing 2D context.
It is also worth noting that canvas was implemented by 3 major browsers
before it got added to the spec, so the implementers clearly saw a
market demand for it. Since it needs to be interoperably implemented to
be useful, it needs to be specced, and HTML5 is the ideal place to do it.
[1] http://lists.w3.org/Archives/Public/public-html/2007Jul/1118.html
--
Lachlan Hunt
http://lachy.id.au/
Received on Sunday, 29 July 2007 17:01:09 UTC