I really like that DoMore is rapidly adding simple instructions for all the common things you need to do. I do NOT like the massive toolbox approach that seems to be common today. I need two wrenches but I have to carry the 100 lb tool box up the ladder to apply them to the task. Ladder? Who uses ladders? Get a manlift to carry the tool box!
I could probably write a book on design methodology, but there are a couple of fundamental ideas that dominate ours:
Tinker Toys) A handful of simple pieces designed to bolt togather to create more complex things. There is an optimization function here, where you balance the complexity and power of each piece...we don't want to be too granular or too monolithic. When done right, you can solve lots of problems very well.
Functional Tiers) Comm is a great example.
- High level: PEERLINK, designed for the guy who doesn't want to work that hard at it and doesn't need the performance...just needs it to work.
- Mid level: RX/WX/MRX/MWX/DLRX/DLWX, still pretty easy, but certainly requires more effort to gain more reward.
- Low level: Custom protocol instructions. For the guy willing to put in the effort, he can do dang near everything he needs.
You can build a debounce function with timers (tinker toys) but when you do this often enough that it results in a significant increase in code size, there is an obvious case for adding a tier. We frequently start with the low level instructions and then add layers above as we better understand the problem. When we did the SDCard for BRX, we started with the low level file functions, and then added FILELOG, because we knew that 90% of users just want to log stuff without becoming file I/O experts.
And y'all definitely play a role in this. If you see a hole, say something...we do listen.