We are custom building a Cartesian 3D printer to be used in a production 3D printing environment, with the following requirements: - Intended Z resolution 0.13mm; - Dual extruders (primary + support material); - Four spools (two per material with y connector, perhaps add auto switch-over functionality later); - Camera; - Onboard 11" touchscreen for control & interaction, run by a Raspberry Pi 3; - Custom board based on ATMega2560 to control the printer; - Printer should gracefully handle conditions like "out of material", etc. Question: How to select firmware? Are there notable differences between the primary firmware options (Marlin/Repetier) for this setup? From the google code groups, I understand the Repetier has a much cleaner code base, and apparently gives smoother physical performance. Yet, from what I can gather, 95% of the community uses Marlin - is that correct? Given that this printer will have the Pi3 to control "higher functions", is it worth considering a compact firmware like Teacup? Edit 12/April/2017: For others looking: After much review, Klipper was selected as the most forward firmware - all kinematic calculations are done on the host computer, instead of on the microprocessor, resulting is significantly faster/smoother stepper movement.