uniforms allow us to specify global values to WebGL shaders. attributes allow us to specify per-feature values.
If all features have the same value (i.e. all circles are red), we can disable the attributes using gl.disableVertexAttribArray and set a global value as if it were a uniform.
We converted most data-driven styling related uniforms to attributes in #1257. Then, there were reports of big performance regressions in IE #1336, so we reverted our changes in #1415
One of the big remaining challenges for implementing data driven styling is figuring out how to make disabled attributes performant in IE.
cc @jfirebaugh @tmcw @ansis