Tantek introduced me to the idea of forgiveness as a property of a trustworthy tool, defined as “Forgiving — if you make a mistake, you should be able to undo or otherwise correct your mistake.”
I was thinking about this when reflecting on a notes archiving tool I made. The tool is forgiving in a few senses. First, if you try to archive a document that isn’t notes or an event page, the tool will notify you that only notes and events pages are accepted. Second, if you set the wrong destination URL — the place where the notes will be archived — you can move the page. When you move the page, a redirect is automatically set up, ensuring that anyone who finds the incorrect URL will be automatically taken to the right one.
Foregiveness ties into both usability and performance. A forgiving tool should allow someone to correct a mistake, and do so as quickly as needed. For example, a more forgiving publishing tool should allow you to edit what you posted with minimal delay. I think about this when I notice a typo on my blog, or something that isn’t formatted as expected. Because my site generator is fast, I can fix issues fast when I see them. My old, slower generator would take several minutes for me to fix a typo.
I think showing status is an essential part of a forgiving interface. If an author publishes a blog post, it should be clear to the author so that they can go and review the article. If something goes wrong — for example, an event organiser trying to archive the wrong page — the tool should highlight what has gone wrong so the author can take action.
Note to self: I need a better preview tool to help prevent accidental layout issues introduced in the publishing process. Such a preview in itself would help make my interface more forgiving, by allowing me to see exactly how a post is laid out before publishing.
When I was designing my publishing tool, I had a requirement that code snippets be formatted in a certain way to enable syntax highlighting. I added a message that appears when code snippets are present in the article to remind me to use specific tags to highlight my code, and to add the language the code is written in. This reminder helps ensure that I format the posts as required. While this isn’t forgiving in the sense of helping undo a mistake, it helps me reduce the number of formatting errors I make.
Another way I have thought about forgiveness on my personal website is in adding redirects to pages whose names I sometimes get confused. For example, I called my web publishing tool Create. But I found myself going to /publish/
a lot because the tool lets me publish my writing. I set up a redirect so that I am taken to the right page.
I wonder in what other ways “forgiveness” comes into design.