OpenPrinting / openprinting.github.io

Organization Pages for OpenPrinting
Apache License 2.0
12 stars 25 forks source link

Tell on the site that most printers are driverless IPP #138

Closed bryanpedini closed 2 years ago

bryanpedini commented 2 years ago

Hi 👋🏻 (newcomer here)

Don't know if it's acceptable in this new community I'm diving into, but I would like to make a feature request for my Epson ET-2721 that I would like to setup wirelessly with a real working setup (not the wireless functions of the printer itself, but with a Raspberry Pi 3 b+). I would also like to contribute as much as possible for what little I know about C or drivers, tho I physically have the printer for testing.

If this is not the right place I ask for forgiveness and clarification on where to start to add a new supported printer (where to file an issue, where to start debugging, etc).

Thank you in advance for this awesome piece of FOSS software already, Bryan.

michaelrsweet commented 2 years ago

@bryanpedini This printer supports AirPrint, so it will work with the IPP Everywhere ("-m everywhere") driver.

bryanpedini commented 2 years ago

Ya? Didn't know, thank you a lot for the info. Perhaps we could add it to the list of supported printers?

zdohnal commented 2 years ago

@bryanpedini IIUC we put there only printers which are supported by classic (deprecated) printer drivers.

In general every printer which supports AirPrint (about 90% office printers released after 2010) works with CUPS, so user can assume that his device works with CUPS if AirPrint/IPP Everywhere is in its specification. But it might be useful to mention this at printers page.

@tillkamppeter do we have a public github for openprinting.org somewhere?

bryanpedini commented 2 years ago

@zdohnal Thank you for your clarifications. IIUC about the links and stuff, this should be what you're searching for (unless they're two different sites, which from the graphics they seem).

tillkamppeter commented 2 years ago

We will not add driverless IPP printers (AirPrint, Mopria, IPP Everywhere, Wi-Fi Direct Print) to the OpenPrinting database, as it is a tedious work which will not be of much help. Non-driverless printers are ether legacy or specialty printers, so will get to be more and more a minority under all printers around, and the standard way to go is simply connect the printer and start printing.

What we should do is prominently tell on our front page GitHub repo for static part of the site and at the top of the printers page GitHub repo for our database web app that most printers are driverless IPP and also how to check when buying. We also need to tell on the printers page that we only list non-driverless printers (but driverless ones could have slipped in, so being in the list does not need "requires a driver").

zdohnal commented 2 years ago

We will not add driverless IPP printers (AirPrint, Mopria, IPP Everywhere, Wi-Fi Direct Print) to the OpenPrinting database, as it is a tedious work which will not be of much help. Non-driverless printers are ether legacy or specialty printers, so will get to be more and more a minority under all printers around, and the standard way to go is simply connect the printer and start printing.

+1

What we should do is prominently tell on our front page GitHub repo for static part of the site and at the top of the printers page GitHub repo for our database web app that most printers are driverless IPP and also how to check when buying.

+1

We also need to tell on the printers page that we only list non-driverless printers (but driverless ones could have slipped in, so being in the list does not need "requires a driver").

That's what I meant in my comment - unaware users can go to the page and if they don't find their printer there, they think it is unsupported. So the suggestion would be like:

'The database contains printers which are supported by classic drivers. Most office printers since 2010 support AirPrint, which is compatible with IPP Everywhere implemented in CUPS, therefore supported by OpenPrinting and such devices are not in the database by purpose. Please check your device specification for AirPrint.'

bryanpedini commented 2 years ago

Okay, thank you everybody for all the clarifications...

If I may ask a final one, is AirPrint just a fancy name for a protocol that can go on USB too, or is it literally something that goes through air (WiFi / etc) only? I'm planning a Pi 3 print server connected via WiFi but the connection between the Pi and the printer itself is USB, printer WiFi is crap.

Thank you.

jsmeix commented 2 years ago

A possibly dumb question (I don't have an IPP Everywhere printer):

Is there perhaps a public available testing tool (e.g. free software) that could verify if a particular printer model conforms with what CUPS needs in practice at least for basic printing via IPP Everywhere?

What I mean is: When a user has bought some new "ACME HappyPrinter IPP1001XL" printer device at some shop, could he test if that model supports what CUPS actually needs for basic IPP Everywhere printing?

I think a full IPP Everywhere conformance test is not required. If a full IPP Everywhere conformance test exists it would be of course perfect. But I think a simpler "basic IPP Everywhere functionality" test could be sufficient.

michaelrsweet commented 2 years ago

@bryanpedini AirPrint is Apple's profile for IPP. Essentially it requires most of everything in IPP Everywhere plus support for the CUPS supply level attributes ("marker-colors", "marker-levels", etc.), the Apple raster format ("image/urf", which is very similar to PWG Raster or "image/pwg-raster"), and IPP-USB which provides IPP access to a printer over USB.

michaelrsweet commented 2 years ago

@jsmeix Aside from the IPP Everywhere Printer Self-Certification Tools, the "testclient" unit test program included with CUPS is able to test the basic functionality of a printer and print a few test pages.

tillkamppeter commented 2 years ago

It works perfectly well also on USB, using the IPP-over-USB standard. You simply need to install OpenPrinting's ipp-usb on your Pi so that when you plug your printer, it will immediately appear as ipp://localhost:60000/ipp/print on your Pi, and the web admin interface of the printer as http://localhost:60000/.

"Air..." is Apple's marketing speech, no air actually needed, should also work in the vacuum, also nothing against solid connections (USB or Ethernet). And the protocol, independent whether it is called AirPrint, Mopria, IPP Everywhere, or Wi-Fi Direct Print, the principle is just driverless IPP. The device advertises itself via DNS-SD, CUPS (or any other IPP client) discovers it, asks for capability info via IPP (get-printer-attributes request), uses the resulting info for populating print dialogs and rendering pages, and sends off the job in a standard format (one of PDF, Apple Raster, PWG Raster, or PCLm). The differences are small, as @michaelrsweet already told.

And as CUPS by itself does driverless IPP as a server, you replace the weak wireless of your printer by the strong wireless (or Ethernet) of your Raspberry Pi.

tillkamppeter commented 2 years ago

(I don't have an IPP Everywhere printer)

@jsmeix No problem, this is what Printer Applications are good for. Get some of these old printers floating around in SUSE's offices, gar the correct Printer Application from the Snap Store and welcome to the wunderful world of IPP Everywhere.

hifi commented 2 years ago

We will not add driverless IPP printers (AirPrint, Mopria, IPP Everywhere, Wi-Fi Direct Print) to the OpenPrinting database, as it is a tedious work which will not be of much help. Non-driverless printers are ether legacy or specialty printers, so will get to be more and more a minority under all printers around, and the standard way to go is simply connect the printer and start printing.

I'm politely disagreeing with the statement "not be of much help". It may be obvious to people who work with CUPS or the printing stack in general that most printers today just work driverless but for someone who doesn't the sensible thing you do before making a purchase decision is to look online if the printer is garbage or not.

I bought a new printer and thought I'd contribute an entry to OpenPrinting but since it ended up being a driverless model I can't help other people to make that decision.

Maintaining a simple user contributed list of make+model which printers are driverless and which connectivity methods have been tested (WiFi, Ethernet, USB) would boost confidence in buying a model you like otherwise. This could be as simple as a bunch of json files that are loaded with XHR on openprinting.github.io for filtering where users can send PRs against the file(s) to add/modify a printer if there's a maintenance burden that needs to be alleviated.

michaelrsweet commented 2 years ago

@tillkamppeter Someplace on openprinting.org's printer database page, we should mention that users can look for AirPrint, IPP Everywhere, or Mopria Certified. Generally speaking, AirPrint printers are the superset of driverless printers...

Script to pull the current list of AirPrint printers from Apple:

Output JSON file that can be used to populate a web page:

tillkamppeter commented 2 years ago

@michaelrsweet nice script, we could put it somewhere on the server to keep up such a list.

In general, we should prominently put onto our front page something telling that most modern printers are driverless and what to look after, on both the general front page and the front page of the database.

Something like this:

Most modern printers support driverless printing and therefore work under Linux

If you want to buy a printer, most will work out-of-the-box with modern Linux distributions as they are driverless IPP printers. Please check whether they support AirPrint, Mopria, or IPP Everywhere. Only a few specialty printers are not driverless. Due to this we do not add very printer to our database, but we continue offering the database to look up legacy printers.

WDYT?

hifi commented 2 years ago

I can find my new printer from the AirPrint list, seems quite good!

For interactive filtering I'd still break it down by manufacturer as the list is massive and definitely put it on up very visibly on the website. Is there a reason why it couldn't be part of the main new github.io site as it could be rebuilt manually from time to time?

Thanks.

michaelrsweet commented 2 years ago

@tillkamppeter I'd simplify/rewords things as follows:

Most modern printers support driverless printing and therefore work under Linux without additional software. Supported legacy printers are listed in the printer driver database.

If you want to buy a printer, look for AirPrint™, Mopria™, or IPP Everywhere™ support on the box or manufacturer's web page.

@hifi We could easily add search/filter controls like those on the IPP Everywhere Printers page. And FWIW we might be able to merge this with the list of printers that need drivers (Till? Can you generate a JSON snapshot of the current database, maybe with a reference to the printer application that replaces the legacy driver?)

I'd be happy to put together a web page that loads a JSON snapshot, which can be merged from the AirPrint, IPP Everywhere, and legacy printer driver databases.

tillkamppeter commented 2 years ago

@michaelrsweet great, thanks. Your text is much better. I wrote mine up quickly to simply convey the idea.

On the OpenPrinting web server I will add a service to query discovered printers for whther they are supported by a Printer Application and if yes by which one. See my write-up of the idea and how I intend to implement it. This could not only be used to query the printers of the users but also to generate an uip-to-date JSON list of each supported printer model and which is the preferred Printer Application.

We must also take care to not recommend a Printer Application for a driverless printer. So in a JSON list for Printer Application recommendations we have to skip every printer model which is already in at least one of the driverless JSON lists.

michaelrsweet commented 2 years ago

@tillkamppeter I've put a draft page up at https://openprinting.github.io/printers. Right now it is just the AirPrint/IPP Everywhere printer list, but I can merge the results with separate JSON sources for printer applications and drivers.

tillkamppeter commented 2 years ago

@michaelrsweet great, looks nice.

But instead of "driver" I would say something like "driverless printing standards". We should also join the printers of different standards (AirPrint, Mopria, IPP Everywhere) in the list and under "driverless printing standards" list all standards under which they were originally listed. The filters on the top should also allow to select a driverless printing standard for only showing the printers supporting the selected standard.

hifi commented 2 years ago

@michaelrsweet The draft looks pretty good, easy to look up. With a bit more metadata and merging of data sources like @tillkamppeter suggested it'll be the perfect place to confirm the status of a printer.

If all databases are merged together for the end user some color coding and/or rating based on the driver/standard would still be good to have so you can also easily pick up what to avoid. Of course when expanding the JSON there's always the bloat factor of how much data should really be embedded there, maybe a link to details page for legacy printers to the old website?

It would also be good to have a short explanation of all the different standards and what they mean for the user on the printers page if they make a difference. Should also include a paragraph for legacy drivers regardless if they are listed there or not.

The OpenWrt Table of Hardware is one example of having a details page linked elsewhere from the quick filter but still have the things you may search for directly in the table.

Good work!

tillkamppeter commented 2 years ago

So what I would like to have as a first step is the text

Most modern printers support driverless printing and therefore work under Linux

Most modern printers support driverless printing and therefore work under Linux without additional software. Supported legacy printers are listed in the printer driver database.

If you want to buy a printer, look for AirPrint™, Mopria™, or IPP Everywhere™ support on the box or manufacturer's web page.

in large letters on the front page, right under the "OpenPrinting works on the development of ..." and above the news items.

As I am not very familiar with the mechanisms in the index.html file of the site, I appreciate a lot that someone could do it for me, @dheeraj135 @PIYUSHgoyal16?

tillkamppeter commented 2 years ago

@michaelrsweet or could you add this piece of text to the front page?

michaelrsweet commented 2 years ago

@tillkamppeter I'll see what I can do.

@hifi There are limits to the kind of information we can "harvest" from the Apple AirPrint and IPP Everywhere pages. Mopria's certified printers page is woefully out of date so there isn't much point to trying to include those. If Till can generate a JSON report (ideally) of the printer driver database, I can merge the two sources and list whether the printer is driverless or needs a driver or printer application (ideally with links).

tillkamppeter commented 2 years ago

Or let us do this way:

Printer buyers: Most modern printers work under Linux

Most modern printers support driverless printing and therefore work under Linux (and similar, Unix-style operating systems) without additional software. Supported legacy printers are listed in the printer driver database.

If you want to buy a printer, look for AirPrint™, Mopria™, or IPP Everywhere™ support on the box or manufacturer's web page.

michaelrsweet commented 2 years ago

@tillkamppeter @hifi OK, so I've pushed some changes and made the driverless printer list accessible from the home page. Let me know what you think!

tillkamppeter commented 2 years ago

Great, thanks. But could you make the font larger and add a line break after the bold text, so that the other part of the text starts in a new line under the bold part?

It should really jump into the eyes of our visitors that most modern printers are driverless. This should not be in the fine print which no one reads.

And by the way, how is the printer list kept up to date?

michaelrsweet commented 2 years ago

@tillkamppeter I'll see if I can add a break in there - the layout method is a little esoteric...

The printer list is maintained by running a script (update-printer-list.sh) periodically - 3-4 times a year should be enough to stay up to date, but I can setup a background job to do it once a week and commit any changes automatically. (done)

tillkamppeter commented 2 years ago

@michaelrsweet Great, looks better now. Thanks.

Also thanks for setting up the auto-updater job. One question here: If I modify and commit the update-printer-list.sh script, will the weekly update happen with my new version of the script? Where is the update configured?

hifi commented 2 years ago

@michaelrsweet Looks good in my opinion and fairly easy to discover the facts now. Thanks for spending the time!

michaelrsweet commented 2 years ago

@tillkamppeter The update job is setup on one of my dev machines, and it pulls any changes from the repo, runs the update-printer-list.sh script from the repo to update the driverless.json file, and then commits and pushes any changes. Most of the time it'll go through the motions and end up with no changes, but 2 minutes of CPU time once a week is acceptable... :)

michaelrsweet commented 2 years ago

@hifi You're welcome, and it was no problem. I'm hoping we can make the page even more useful (pointing people to a particular printer application for printers that need it) so it is more of a one-stop-shop page.

tillkamppeter commented 2 years ago

Yes, there are still several things, like removing all obsolete links from the Foomatic web app, like for PPR, PDQ, LPRmg, ... and for the forums we do not run any more.

For finding the right Printer Application for a given printer I am planning to add an automatic tool which also printer setup tools can query. See here. There could naturally also be a way to query interactively on the site, using the same backend infrastructure.

michaelrsweet commented 2 years ago

@tillkamppeter I'm hoping we can just update the script to generate an appropriate snapshot for all printers - that lowers the burden on infrastructure and speeds things up in the browser...

michaelrsweet commented 2 years ago

I think this issue has been addressed; we'll continue to improve this page as time and resources permit.