In order to compare for the Mozilla canvas tag, I took a look at the Apple Dashboard canvas tag source code to see what it did. I found the canvas code fairly easily since the KHTML code is pretty understandable, compared to, say, Mozilla's code. Here's the API:

HTMLCanvasElement {
  Context getContext()
}
Context {
  save()
  restore()
  scale(float x, float y)
  rotate(float angle)
  translate(float x, float y)
  beginPath()
  closePath()
  setStrokeColor(string color)
  setStrokeColor(string color, int alpha)
  setStrokeColor(int graycolor)
  setStrokeColor(int graycolor, int alpha)
  setStrokeColor(int r, int g, int b, int a)
  setStrokeColor(int c, int m, int y, int k, int a)
  setFillColor(string color)
  setFillColor(string color, int alpha)
  setFillColor(int graycolor)
  setFillColor(int graycolor, int alpha)
  setFillColor(int r, int g, int b, int a)
  setFillColor(int c, int m, int y, int k, int a)
  setLineWidth(float linewidth)
  setLineCap(string type) - type is either "round" or "square"
  setLineJoin(string type) - type is either "round" or "bevel"
  setMiterLimit(float limit)
  fillPath()
  strokePath()
  moveToPoint(float x, float y)
  addLineToPoint(float x, float y)
  addQuadraticCurveToPoint(float cpx, float cpy, float x, float y)
  addBezierCurveToPoint(float cp1x, float cp1y, float cp2x, float cp2y, float x, float y)
  addArcToPoint(float x1, float y1, float x2, float y2)
  addArc(float x, float y, float r, float startAngle, float endAngle)
  addRect(float x, float y, float w, float h)
  clip()
  clearRect(float x, float y, float w, float h)
  fillRect(float x, float y, float w, float h)
  strokeRect(float x, float y, float w, float h)
  drawImage(image, int x, int y, int w, int h, string composite)
  drawImageFromRect(image, int sx, int sy, int sw, int sh,
                    int dx, int dy, int dw, int dh, string composite)
  setShadow(float width, float height, float blur, string color)
  clearShadow()
  setAlpha(float alpha)
  setCompositeOperation(string composite)
}

It's pretty logical. Could be adapted to other browsers for the most part. One advantage of building an API like this is that Apple can construct it suit their platform. For instance, the Mac has a function CGContextSetMiterLimit, so the canvas has a similar setMiterLimit function. Mozilla doesn't have such a function. Interesting that there are no text drawing in the above set of functions. The Mozilla graphics code has stuff to draw text and get the width of text in certain fonts, which is why these functions would appear in the Mozilla canvas tag. Everyone does code this way, which is why the IE specific features tend to look like things created by Microsoft since developers tend to make things in a similar fashion to the rest of the platform.

If a standardized canvas tag appears, perhaps through the WHAT-WG, I'd imagine it would incorporate the best or worst of everything.