User:Woozle/software/design specs/AlarmFerret
Synopsis of Need
a brief explanation of why this functionality is needed
Woozle needs to be reminded to do various things at various times of day. Some things only happen on certain days of the week, certain days of the month, every N days, etc. Some of these things need to be flexible as to when they are done, i.e. the reminder should pop up at a specific time, but if Woozle is in the middle of something, she should be able to get the alarm off the screen for some arbitrary length of time after which it will reappear.
Woozle would also like to be able to back up all the current alarm data in case her hard disk fails again, because remembering all the things that she needs to remember is hard. If it were easy, she wouldn't need software to help with it.
similar software
a brief exploration of other software that fills this general niche but is not adequate
KAlarm provides essentially all of the desired functionality, but has one major problem in that it depends on a subsystem called Akonadi which is prone to becoming corrupted, thus causing KAlarm to become unusable. As of my last attempt to research this, there was not even any user documentation explaining what Akonadi does or how to fix it when it breaks. The case for even needing Akonadi remains unclear. It may be a sort of calendar engine -- but there are much stabler and more standardized options for that (e.g. using CalDAV to connect to any of several common pieces of software, including ownCloud/NextCloud and Google Calendar). (KAlarm also did not handle Daylight Saving Time shifts very well, and was prone to randomly deciding to display alarms with an offset of one or more hours. It's not known if this represents a hard fix or not.)
MATE Alarm Clock, while well-designed, stable, and quite usable, lacks any calendar functions beyond weekday. It also lacks a flexible deferral feature, in that deferrals are apparently fixed at 9 minutes exactly (a rather strangely arbitrary choice). It also doesn't confirm alarm deletions, and there is no "undo" function, so it's far too easy to accidentally delete an alarm when you just meant to clear it.
Definitions
- An alert is any means of notifying the user that an alarm has been tripped, and which one. This is most commonly done by displaying a popup on the screen, but could also be in the form of an email or the execution of an external command. This is very similar to a "notification" that doesn't disappear until the user removes it.
- An alarm is a set of parameters regarding when one or more alerts should be tripped and what text should be shown to the user when that happens.
Functionality
feature list -- what the software should be able to do
- User should be able to add, delete or modify alarms as needed.
- An alarm generally is defined as beginning on a specific date at a specific time.
- Any alarm can optionally be set to repeat at any one of the following intervals:
- N minutes (e.g. every 90 minutes)
- N hours (e.g. every 36 hours)
- N days
- N months
- Repeats can be constrained in any of the following ways:
- only on certain days of the week
- only on the Nth day of the month
- only on the Nth day before the end of the month
- this list may be incomplete
Documentation To-Do
- visual for alarm dialog showing alarm list, add/edit/delete controls, activation/deactivation
- visual for alert dialog showing [Accept] and [Defer] functions
- dialog for entering/editing an alarm, with all options
- do we need to describe rules in more detail?