For specific changes that are not backward incompatible, github pull requests are ideal. If it’s something you think might be contentious, starting a thread here or opening a GitHub issue is not wrong.
I am not an experienced C++ developer and I know there are many things about Kaleidoscope that can be done better.
There are certainly places where “using all of C++” is not going to be the right thing for us. Similarly, what makes a lot of sense for enterprise systems doesn’t always make sense for embedded systems. And there will be cases where doing things the “right” way for C++ is in conflict with “doing things the Arduino way”
One way to think about how to structure your proposals is through the lens of the code style guide: https://github.com/keyboardio/Kaleidoscope/blob/master/doc/CODING_STYLE.md
It is very much a work in progress. Initially adopted from Google’s C++ style guide, we’ve done some work to start to make it more appropriate for our use case, which is very different than Google’s. At the same time, we’ve done some work to try to start bringing our code up to match the style guide. But we’re not there yet.
The very rough guide for how I think about priorities for the code is here:
One aspect of the project goals is that it be newbie friendly. That means that some things that make sense to an experienced C++ dev might not be ideal. If there’s a good reason for something, then we should document it clearly, both in terms of what’s going on, how it works and why we do it that way.
Another thing is, of course, efficiency of the compiled code. On that tiny little microcontroller, individual instructions sometimes make a big difference in performance or space efficiency. Adding a layer of indirection that isn’t compiled out, is often a straight-up showstopper.
http://www.atmel.com/images/doc8453.pdf is an interesting read. There’s some stuff that…seems counterintuitive.
So, with that context, start making proposals. Possible, start with simpler, more obvious things. That’ll help you get a sense of which kind of crazy @algernon and I are and should help you figure out how to target future proposals or, possibly, make you decide that we don’t “get it”
-jesse