I just set up my laptop to print on my color laser printer

It's a Brother MFC-L3780CDW.

I used the local IP address like so:

socket://192.168.1.102:9100

And it just worked.

It also gave a deprecation warning.

I don't expect it to keep working.

Ah! #linux!

A #poem

But I was able to print tonight.

I now have a picture of my son.

With a cat.

He rounded out the edges with a scissors.

He's 9.

I am 47 or 48 or something.

I'm on Mastodon,

posting 500 characters:

linux printer drivers!

@poleguy i have this snippet in one of our systems. It’s so dumb and so cool that it just works like that. No drivers!

cat production_rack_support.pdf | ncat 172.16.0.5 9100

@karlcswanson @poleguy

You can thank Apple for that.

About 15 years ago, they strong-armed the printer manufacturers into implementing the server side of a standardized, open-source protocol stack in their printers.

Now macOS (and also other platforms like Linux) can drive any printer by implementing the client side of that protocol stack.

Apple calls it AirPrint. Everyone else calls it driverless printing.

@karlcswanson @poleguy

The specifics are:

* Printers must be IPP servers.

* …including IPP over USB.

* When connected to a network, printers must announce themselves on Zeroconf (aka Bonjour).

* Printers must accept a standard format for page images called PWG Raster (though they may accept other formats too).

@karlcswanson @poleguy

IPP has been around for a long time, as have page description languages like PostScript.

But it used to be that you needed to run print server software on a computer, and it would use a printer driver to translate those into the vendor-specific commands understood by the printer.

By 2010, it was feasible to move all of those functions onto the computer embedded in the printer itself. Now the printer *is* a print server.

@karlcswanson @poleguy

Also, Apple eliminated things like PostScript and PCL.

These page description languages are fancy, but they're also complicated to implement and use. PostScript, in particular, is a full-blown programming language, which the printer or print server has to compile and execute!

PWG Raster, on the other hand, is a simple, dumb image format, like BMP or PNG. Rendering an image of the page to be printed is now the computer's job, not the printer's.

@argv_minus_one @karlcswanson I had no idea. Very interesting.

I knew Apple was involved in some ways with CUPS. But whenever I hear AirPrint or AirDrop or whatever I think Apple and that generally doesn't apply to me.

Since I heard of Apple's approach, I've always preferred to stay away from the Apple walled garden model of computing. I'm a computer engineer now.

Staying away from walled gardens still feels like a valuable choice for me.

Wow... way off topic. Go to sleep Dietz.

@poleguy @karlcswanson

Apple owns CUPS. They bought the company that made it. As far as I know, nobody else has made a from-scratch replacement for it.

OpenPrinting maintains a soft fork of CUPS https://openprinting.github.io/cups/ for use on non-Apple operating systems. Apple CUPS and OpenPrinting CUPS are both on GitHub, and their READMEs contain links to each other.

But I don't think there is any outright replacement for CUPS.

OpenPrinting CUPS

@poleguy @karlcswanson

Although, now that printing is driverless and plug-and-play, the only remaining function of CUPS is print spooling and access control. So you could in theory replace it with an Apache reverse proxy or something, if you wanted to.

@karlcswanson I wonder why the deprecation warning. Hmmm?

CUPS did ask me for a driver and I selected the make/model of my printer.

Linux printing is wild!