Attributes are passed in from the stream buffers and so change per vertex (or per instance if you use instancing). The vertex position and normal are examples of attributes.

Uniforms are variables...