> In short it seems that for you “predictability” refers to output while “uniformity” refers to…

No. Predictability is the ability for a particular user to predict the behavior of a UI element. Uniformity is the ability for the UI…

> In short it seems that for you “predictability” refers to output while “uniformity” refers to input.

No. Predictability is the ability for a particular user to predict the behavior of a UI element. Uniformity is the ability for the UI designer to use precisely the same code in a variety of circumstances. Predictability is a side effect of education, while uniformity is a side effect of mass production.

Both predictability and uniformity relate to both input and output.

> Well, if we’re talking about a mail app, then all users are experienced, even my mom.

A user who is experienced with a small number of applications can substitute a memorized set of actions and responses specific to a particular application for the kind of generalized grand-unified-theory of widget behavior that UI style guides specify. The side effect is that none of this knowledge transfers to an unfamiliar application. This is a problem, because the primary reason people try to keep UIs uniform is in order to allow familiarity with one application to transfer to another.

If your mom is like my parents or grandparents, she probably has written down a rote set of steps for how to perform particular actions in her mail app on a piece of paper and keeps that piece of paper next to the computer. Because these steps do not expose the underlying logic that guided the design of the mail app’s interface, having these steps (either on paper or memorized) does not help her understand how to recover if she accidentally misses one, how to deal with unexpected events like failure to send mail due to a network outage, how to use her mail application in the case of even a minor UI change, or how to use a different application that uses the same widgets. In other words, uniformity has done nothing for her because uniformity requires a substantial familiarity, across many contexts, to become a source of predictability.

Predictability comes from having a nuanced mental model of the rules by which a system operates. For instance, we have internalized the idea that buttons become dark when pressed (and usually move down and to the right as well), and so we know that if a button doesn’t do that, there’s a good chance that the button hasn’t been pressed or the button press event hasn’t been processed. We learned this from experience, and we had a wide enough variety of experience to know that this behavior isn’t specific to a particular button or a particular application — all buttons go dark when pressed, but only some buttons send email when pressed. This isn’t obvious to otherwise-intelligent adults who have never used a computer with this kind of interface before. For instance, I needed to explain this to my grandfather, who has both an art degree and and engineering degree. Likewise, we have learned that only one of a group of radio buttons is selected at a time. This is in no way obvious from the visual design of radio buttons — and there isn’t even a physical analogue like perspective change; one simply needs to learn, by rote, that certain kinds of checkboxes or buttons are actually not really checkboxes or buttons and have a kind of spooky action at a distance that causes them to obey certain constraints.

Predictability can come from a model inherited from language, or from analogy with a physical device, or from being integrated with common practices, though. Finding the right way to make an interface predictable to its audience is important. Uniformity is probably not the right way to make an interface predictable unless your audience is composed entirely of people who use computers all the time (which is a growing portion of the population but has a much smaller overlap with infants and the elderly).