Software
Writing good software is a continual process, and there is certainly room for improvement. The drivers are a little tightly-coupled to the hardware configuration layer at the moment, and the method for passing global data around is perhaps a little heavy-handed. Otherwise, further correctness checking, including at compile time, would be a great addition to the developer and user experience --- being able to determine a faulty configuration at compilation instead of at trial would be nice.
More of the Pico's hardware resources could be leveraged for our design. For example, much of the data we pass around is in the form of packed integers, which could make use of the interpolator for acceleration. Otherwise, using the DMA and PIO peripherals to start driver data transfers, possibly without CPU intervention, could potentially boost efficiency. While we did some research around it, we did not leverage the Pico's power-gating and CPU sleep capabilities; and didn't tinker with the TinyUSB library on these lines. Measuring power draw would be an interesting benchmark for further improvement.
We also didn't strictly measure performance, and identify methods for improving it. This might include simplifying the ISRs, and continually refining areas to reduce overhead.
Otherwise, we have yet to explore some of the stretch goals that we developed, including wireless operation, embedded scripting, or live configuration. As mentioned in the results section, we believe our existing codebase lends itself to these changes.
Conforming to at least the USB standard is integral to our project. As almost all the functionality we demonstrated worked, we were able to successfully deliver a USB-conforming mouse which works as input. We also satisfied the constraints of the PMW3389's SPI interface, and were able to properly time transmissions.
We did read other peoples' code and use external libraries. Libraries used for reference are never copied directly. However, we are open-sourcing our project under the AGPLv3 license, which is in theory compatible with the other open-source licenses in this project. It only applies to code we produced.
Hardware
As noted in the results, there were a few areas that would be worth improving on. Firstly, there was a lot to be learned from making the 3D model and printing it where putting the hinges together, the height of the mouse being more comfortable, and pieces actually fitting would be the next steps in terms of the actual shell. Speaking of designs, it would've been nice to design our own custom PCB board(s) so that not only the main section of components could be organized and not need a mess of wires, but also we would have a PMW3389 breakout board that we know what it will look like and the pinouts wouldn't be so crowded. If we weren't to use a PCB board, or if we need wires for the sensor, we need to make sure they are the correct length or, with the weird breakout board we got, use a ribbon cable. Then with a better wiring setup whether it's the correct length of wires or lessening the amount we need due to a PCB being included, we could explore more with the idea of interchangeable parts that align with what was seen with the Razer Naga mouse where there is an endless amount of side panels that could be tested, and also we could figure out a design that works for left handed people or have it work both ways.
We did reference off common designs between DIY mice such as the motion sensor and the buttons, and we did take inspiration from commercial mice made by Logitech and Razer. We, however, did expand upon those designs by combining them and leading to a unique design that has not been seen at least from our research. This could be seen with our shell design and combining ideas such as different angled mice, trackballs, and the interchangeable side panels that could be more than just macro buttons for gaming. This mouse has the chance to accommodate to several needs whether it is health based such as conditions in the hand, wrist, and arm or hobby based such as gaming or art. One of our members has experienced owning several mice at a time (the Logitech MX Ergo S and some gaming mouse) where it would be more efficient and possibly cost effective to limit it all to one mouse as long as the performance is comparable to these other mice.