The Time Machine watch is built to be an Arduino at its core. This allows the watch to be programmed easily through the Arduino IDE over USB. Most of the hardware used on the watch have open source libraries already available online. This lets me get to a working watch as quickly as possible (I’m lazy).
The question that remains is how the “task” or “app” specified above is implemented. The plan is to implement these in a few ways / in stages.
Write tasks as functions in the Arduino project that the user has to program using the IDE. This would mean the user would have to have the watch plugged in to a computer and load up code using the IDE. This doesn’t really have a nice story when it comes to exploration of a “store” or “repository” of apps.
Write tasks as scripts that are interpreted on the fly. These scripts would probably be managed through github or bitbucket so I don’t have to maintain some server of my own. Each script is downloaded to the SD card and then loaded into memory on startup if it’s “enabled”. The problem with this is the dependence on the SD card. Having an interpreter also means writing… an interpreter. So you either have a lot of dev overhead, or you have a very limited API.
Another option is to take the idea of downloadable code as in Option 2, but have the code be just an Arduino function (or a set or Arduino functions / classes) as a package. The package is automatically unpacked, compiled into the main app that the user has configured so far and sent back to the watch. This has the advantage of discovering “apps” but also has low level C performance – and no need for an interpreter.
Option 3 looks like a good solution so far assuming I can setup compilers on both Android (probably yes, since they already exist) and iOS (seems like this is possible, but is it kosher on the app store??).