My preference for reminders over alarms is because the reminder can tell you why it was created, but alarms (as far as I am aware) can’t do that. For example an alarm going off every Monday is less useful if you forgot what the alarm was for vs Mycroft telling you “Reminder: Take out the trash.”
I’d say some of the differences between the three categories of timed alert are:
Alarm: happens at a fixed time, possibly with a repeating schedule, possibly with a “snooze” delay.
Timer: a countdown given a duration from the present moment
Reminder: for me, this is less “formal” than an alarm…the difference is mainly in the interface than the action.For example I could imagine that the Reminder skill has options for default reminder times (ie., 8AM and 12n and 4PM and 7PM), default repeat/delay (ie., repeat reminder 3x, every 15min, unless dismissed). The use case would be setting a simpler timed alert than an alarm ie., “Hey Mycroft, remind me to take out the garbage on Mondays” would use the default skill settings of 8AM/12n/4p/7p unless the reminder was dismissed. Maybe the skill could be smart enough to parse “remind me to take out the garbage on Monday mornings” to only announce the reminder at 8AM (similar for “noon”, “afternoon”, and “evening”).
Maybe the underlying code could actually implement the “reminder” as a series of alarms.
For each class of alert, I would expect that the name of the event could be specified, ie “Set a timer for pasta water in 10 minutes” or “Set a timer to move laundry from washer to dryer in 1 hour” would result in an alert that speaks (and displays on-screen, if possible) the event (“pasta water” or “move laundry from washer to dryer”), with the same type of behavior for named alarms and reminders.
The primary difference should be when the event takes place. I expect an alarm to be loud such that it could wake you from sleeping and keep making noise until dismissed. A reminder should be a spoken reminder. MyCroft should speak up saying “Hey! This is a reminder to to take the trash out.” Maybe it will repeat this sentence twice in a row (thats the default Amazon Echo behavior) and then stop. The user doesnt need to dismiss it. Thats the difference.
Just some thoughts from a developer perspective, and admittedly without any actual knowledge of how the current skills are built or the specific complexities around them, I could see all of these behaviors being encompassed in the same skill with different possible behaviors wrapped around a common core of maintaining different event timers. For example:
Is this a one-time or repeating event?
Will the event alert via an alarm noise or spoken prompt?
Should an on-screen countdown timer be displayed?
The method in which the event is created (and maybe user-defined preferences) would determine which of those behaviors get applied to a created event.
“Start a timer for x minutes” would be a one-time event, with visual countdown, alerted by alarm sound until dismissed or some threshold is reached.
“Remind me about x at y time” would be a one-time event, no visual countdown, alerted by repeating x until dismissed or some threshold is reached.
“Set an alarm at y time” would be a one-time event, no visual countdown, alerted by alarm sound until dismissed or some threshold is reached.
“Remind me about x every y” would be a repeating event, no visual countdown, alerted by repeating x until dismissed or some threshold is reached.
Basically the different prompts would evoke the same core functionality but differ in which of those behaviors are applied to the event. Additional commands and functionality that got built on top of that core functionality (such as the ability to snooze or delay an ongoing or upcoming event, or the ability to show or dismiss the on-screen countdown timer(s)) could then apply to any event no matter how it was created.
I admit maybe that’s a bit of an optimistic approach with the possibility of falling apart once it gets to the nitty gritty details, but if I were to start building a reminder/alarm/timer skill for my own use it’s the approach I’d take (at least initially).