Wednesday, June 1, 2016

Why you (still) can't Cancel Print Jobs

1) Print jobs had to spool back in the day because that's all the available hardware and software would allow them to do. Spooling was done in the application being run, and not by the OS. This was okay because printers and print jobs themselves weren't complex at all.

2) People decided to make printers more complex by allowing them to monitor the printer and change print jobs, and the 'change print jobs' part is supposed to be what allows you to cancel it. This involved tacking extra functionality onto printer drivers.

3) This extra functionality failed to work properly because it was written and conceptualized poorly, and there was just no way of making sure that their printer would be compatible with whatever print spooling techniques were being used by X application.

4) Microsoft addressed the issue by making print spooling an inherent part of Windows, and allowing printer manufacturers to use standards Microsoft themselves came up with to make sure everything went smoothly.

5) The major printer manufacturers refuse to use these standards. Instead, they all come up with their own fancy-seeming proprietary software using its own printing language. But that software still has to interact with the Spooler Service, and trying to get two standards to work together is always a recipe for disaster.

6) And this is the 'why' of it - The software fails to work because these manufacturers still treat print jobs the old-fashioned way, one thing at a time, process by process - a holdover from the days when hardware was incapable of doing the things it now should be capable of doing. The machine gets the command, and you better believe it's going to finish what it's doing before it takes another command, because that's the entire reason that the spooling process - a now obsolete concept - exists.

7) Canceling it in Windows fails because Windows isn't really in control of it. Turning it off fails because the print job is still sitting there in the printer - it's got its orders from the spool. Sometimes the Print Spooler Service just straight-up crashes because the third-party software is just incapable of taking into account every possible scenario it could come across.

So, even though we have complex operating systems and wonderful hardware like USB, the problem's not going to be fixed until traditional print spooling is dropped and a modern standard is adopted, and a modern standard isn't going to be adopted anytime soon because currently each manufacturer is able to load their printer with 'features' and write their own shiny software for it.

source

No comments:

Post a Comment