Tenets of User Agency
- An application must clearly represent all information the user is able to edit on the screen. If the user can affect the data, the data should not be hidden. Microsoft Word should not retain text styles for text that is not present. If I backspace through a bold character, my caret (vertical line in the text representing your keyboard position) may retain the bold-text status, such that if I immediately start typing the text will come out bold, but if I move my caret the document should not retain information about the previously extant bold text. The text which informed the user of the bold status is gone, and any lingering side-effects of that prior status would only serve to confuse.
- The application should have a standard, intuitive way of editing chunks of data with a guarantee that the edit will not cause side effects to other data, even to fix invalidity. Alternative methods that allow the user to mass edit data are allowed, but must be backed by a standard way to edit data in parts with no side effects. This is to insure that the User knows how to edit the current data to the state that the user desires.
- The User should never be blocked from editing one chunk of data based on the state of some other chunk of data. Blocking invalid states leads to a Walking the Valid State problem. Exceptions are made for lack of security access, or if a network connection is preventing the changes from being persisted.
- Allow all edits to be immediately reversed by the user.
- Adding new entities should never hide the information or existence of old entities.
- Editing or adding entities should not change the status of other entities.
Plain text files satisfy all of these constraints. Plain text systems often achieve a more intuitive user experience than most full scale applications.