I know @greggman has made this argument strongly and repeatedly. He’s not wrong, and he’s definitely an authority on the subject, he’s done amazing, amazing things for WebGL. But I keep bumping into this argument and I find the strict insistence on the 2d part exceeding the argument’s usefulness.
It’s useful to know that you’re on your own to handle projections and matrices. They aren’t built-in to the fixed function pipeline the way they used to be. It’s useful to be able to think of WebGL as a rasterization engine, and it’s useful to understand how the pieces fit together.
It’s not useful to claim that WebGL isn’t 3d at all ever, or to stick firmly to that interpretation. WebGL does have support for 3d coordinates, 3d textures, 3d matrices, and it’s main function is to present 3d graphics. Say what you want about having to roll your own transforms, there is absolutely 3d support and 3d intent designed into WebGL.
If you really want to insist that WebGL is a 2d API only, then get the Khronos Group to say that. Currently the WebGL page says: “WebGL is a cross-platform, royalty-free web standard for a low-level 3D graphics API based on OpenGL ES, exposed to ECMAScript via the HTML5 Canvas element.” Appeal to them to change the wording to 2d. As long as Khronos calls it 3d, then it’s 3d. Trying to convince people otherwise on the internet can never work.