LibreShift / red-moon

Android screen filter app for night time phone use.
GNU General Public License v3.0
649 stars 81 forks source link

Decide on a mental model of the app, to inform language we use to describe it #121

Closed smichel17 closed 7 years ago

smichel17 commented 7 years ago

Red Moon used to have a mental model described by this type of language:

Red Moon is a screen filter app. Use the switch to enable and disable the app. When Red Moon is running, it displays a filter to colorize and dim your screen. Use the FAB to start and stop the filter. Use profiles to quickly change the filter's settings. Automatic filter allows you to automatically turn on and off the filter at certain times. Red Moon can automatically suspend the filter in secure apps.

This was a confusing model.* It ended up requiring a lot of verbosity in order to be clear, which doesn't sit well with the limited amount of space available to write preference titles and summaries, and also made variable names really long, which made cleanly formatting the code difficult.

The new mental model I've been using can be described with this language:

Red Moon is an app that filters your screen. When Red Moon is on, it will colorize and dim your screen. Use profiles to quickly change Red Moon's settings. The timer allows you to automatically turn Red Moon on and off. Red Moon can automatically pause in secure apps.

Basically, Red Moon is the screen filter. You can turn it on and off. You can put it on a timer, so it automatically turns on and off. Pausing (in secure apps) isn't a manual action, and is a totally distinct thing from turning on and off.

The downside of this approach is that "filter" is actually the best word to describe how Red Moon works. It's hard to write the explanation on the secure suspend screen without a lot of hand-waving and vagueness. It would be nice to use the word in #101. And personally I prefer being transparent and encouraging people to understand how things work instead of just hand waving.

So, here's what I'm thinking about switching to

Red Moon is an app that filters your screen. When Red Moon is on, it displays a filter that dims and colorizes your screen. Red Moon comes with a couple default filters, or you can create your own custom filters. The timer allows you to automatically turn Red Moon on and off. Red Moon can automatically pause in secure apps.

This way merges the concepts of profiles and filters, instead of merging the filter with Red Moon. I think profiles actually used to be called filters, but it was confusing to talk about turning on the filter in the same breath as selecting a saved filter. But now that you turn Red Moon on and off, we're free to switch back to talking about saved filters. Filters are like tinted glasses -- you can store them, and choose one to wear at a time.

I'm fairly confident in this direction and am going to go ahead with it, but figured I would write this out because

*The old model

This section is just a bit of history and is absolutely not important to read.

There were a bunch of words that referred to subtly different things. You could enable/disable Red Moon, to make sure the app would never do anything -- like hitting the switch on a power strip. Pause/resume and suspend/resume referred to whether the filter was shown on screen, but pause was a manual action while suspend was the automatic one. Stop was like pause, but would also stop the Red Moon service. Start and resume also were the same, but resume meant the service was running. Turning on and off were the same as start/stop. Toggling usually meant start/stop but occasionally pause/resume. The timer was called "Automatic toggle", which was really easy to confuse with "Automatically suspend in secured apps". As I said, a mess.