Modern Printer, Retro Mac

I have too many projects on at the moment. I really need to finish the new version of Innecto. I need to finish MailRaider. I have ports of PetsciiRobots and ChipWits in flight (although lower down the queue) and a list of other projects in various states of completeness. What I don't need is fresh ideas for software that I'll never have time to write. And yet, here we are.

I've heard that some people are trying this vibe coding malarkey, although I guess that that doesn't extend to generating useful ideas for applications. So here's an idea that should be feasible - either hand crafted or vibe crafted. Does anyone want to pick holes in it - or maybe just see if it's feasible?
AirPrint can work with wired as well as wireless networks. Therefore, my thinking goes, it should be possible to write a driver for any ethernet connected Mac to use an AirPrint printer. AirPrint should be a nice choice because it means that you'll have a universal driver that works with many different types of modern printer - albeit that it will be slow because the rendering will have to be done by the Mac. Still, it shouldn't end up being ImageWriter slow!

AirPrint is proprietary - but it seems to just be a proprietary bundling of open source technologies (mDNS, IPP and PWG Raster). The first step, which might be useful in its own right, would be to build libraries for these functions which work on System 6(?) and newer.

Documentation for classic MacOS printer drivers can be found in Inside Macintosh, with sample code on the MPW disc. The CUPS source code (guessing) should contain much of what is required for AirPrint. Now, what objections can people come up with for this idea?
 
My only thought is that, so long as you can find a .ppd file for your modern printer or a printer similar enough to your modern printer, you can already natively print to any modern printer over the network from MacOS9 and probably a few earlier versions. And .ppd files are typically bundled with linux drivers. By and large, it's a solved problem.

But who am I to discourage the creation of more software for classic MacOS? There are many printers with AirPrint and no .ppd files, I own such printers myself! And AirPrint drivers would obviate the need to find the .ppd files.
 
PPD only works for postscript printers - and (as far as I can see) fewer and fewer modern printers support postscript (well, either that - or they just don't advertise support anymore). For example, my Epson WF-3540 supports AirPrint but it doesn't support postscript (hence no PPD).
 
Netatalk + CUPS is what you are looking for. Seamlessly bridge the old with the new. Now if you want a "native" driver, you got your work cut out for you as you'll need:
  • An mDNS/Bonjour stack: This is needed for printer discovery.
  • An IPP 2.0 Port Driver: This is how AirPrint and other driverless printers communicate with the host over the network. The spec itself is only 2nd to the Uniform Commercial Code in complexity.
  • The Actual Printer Driver: Driverless printers accept input from several file formats, but they all will accept a format called "Apple Raster", which means you'll have to write a driver that rasterizes QuickDraw output. In addition, you'll have to support the various options your printer has by IPP queries (similar to PPD PostScript drivers). Its not a "simple" driver by any means.
I'd stick with the easy route. Let CUPS handle all the messy stuff above.
 
Back
Top