A 2D printer needs to deal with four or more liquids (ink) or fine pieces of plastic (toner). Rather than just heating the ink up, a tiny electrical current is used to squeeze out a drop at a time. Everywhere the liquid touches can get dried up, and needs to be self-cleaned. And then you have to address the color mixing algorithm, calibration, ICC profiles, etc. There are waste ink absorbers, print heads, etc. many of which involve specialty materials that can only be made in a precision factory, which would not be available for open source development.