Each user can have different needs and goals, but currently, they all have to use the same user interface. Some users may need more information/buttons, some may need fewer. However, the current user interfaces are hardwired, and can only be changed at the factory.
Since the UI is usually built out of standard widgets, there's no reason the user shouldn't be able to rearrange and customize the widgets as needed. (Apple already has this capability, thanks to NIB Files.)
The end-user's interface is hard to predict, since software developers are very different from users. Also, very tiny inconveniences in a UI can have disproportionate psychological effects (like an annoying tag in the back of your shirt).
- Infinite undo and "factory reset"
- Share customized interfaces
- Ability to make custom elements with scripts inside them