<div dir="ltr">Sounds like a very cool project and way overdue. <div><br></div><div>I wouuld love to be able to follow this project</div><div><br></div><div>Mark</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Mar 12, 2019 at 10:03 AM Till Kamppeter <<a href="mailto:till.kamppeter@gmail.com">till.kamppeter@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
I posted this already last year (see my mail from then below) but there <br>
we finally decided to give preference to other student projects.<br>
<br>
It is about driverless scanning using the IPP (Internet Printing Protocol).<br>
<br>
"Driverless" means that on the client side no software specific to the <br>
scanner model in use is required. The client can ask the scanner for all <br>
its capabilities and use standard commands to do the scanning work.<br>
<br>
For printing this is already standard for several years, originally <br>
developed to allow printing from smartphones. We have support for this <br>
already completely implemented in Linux, so every printer on which you <br>
can print with you phone should also print jobs from Linux clients.<br>
<br>
Now we want to implement this also for scanning, with the help of the <br>
Google Summer of Code.<br>
<br>
We did not do it last year as there was no manufacturer yet who had <br>
adopted driverless IPP scanning. This year we also do not have any <br>
further notice from hardware manufacturers, but we have a new idea of <br>
nmaking use of driverless IPP scanning.<br>
<br>
In SANE scanner drivers are libraries which need to be present in a <br>
given directory of the system so that applications find them and so the <br>
applications can scan on all scanners which are supported by the <br>
available SANE backend libraries.<br>
<br>
This works well on systems with standard Debian or RPM packaging but not <br>
on systems with sandboxed packaging, like Snap for example. Here one <br>
cannot simply let one package (the scanner driver) drop a library in a <br>
directory where other packages (applications) search for it. For printer <br>
drivers we introduce the so-called Printer Applications, a simple <br>
daemon, emulating a driverless IPP printer on localhost and passing jobs <br>
on to the physical printer (which can be on USB or on the network and <br>
Printer Application converts incoming PDF to the printer's native <br>
language). The network-style communication on localhost is no problem <br>
for communication between two sandboxed applications.<br>
<br>
For scanners we want to do the same. We put a collection of SANE <br>
backends with SANE frontend library into a so-called Scanner Application <br>
and let it emulate a driverless IPP scanner on localhost. Such a Scanner <br>
Application can contain the standard SANE modules or it can be a Scanner <br>
Application provided by a scanner manufacturer to hold their <br>
(proprietary) driver. Applications scan then via IPP and for legacy <br>
applications which use SANE we need an IPP backend for SANE.<br>
<br>
This makes up two GSoC projects, one to write the Scanner Application <br>
framework for a sandboxed SANE driver collection and a second for a SANE <br>
backend for IPP driverless scanning.<br>
<br>
The project ideas are in our project idea list:<br>
<br>
Scanner Application framework:<br>
<a href="https://wiki.linuxfoundation.org/gsoc/google-summer-code-2019-openprinting-projects#ipp_scan_or_virtual_mf_device_server_scanner_application" rel="noreferrer" target="_blank">https://wiki.linuxfoundation.org/gsoc/google-summer-code-2019-openprinting-projects#ipp_scan_or_virtual_mf_device_server_scanner_application</a><br>
<br>
IPP scanning SANE backend:<br>
<a href="https://wiki.linuxfoundation.org/gsoc/google-summer-code-2019-openprinting-projects#sane_module_for_ipp_driverless_scanning" rel="noreferrer" target="_blank">https://wiki.linuxfoundation.org/gsoc/google-summer-code-2019-openprinting-projects#sane_module_for_ipp_driverless_scanning</a><br>
<br>
Now I want to ask all of you whether you would like to help us by <br>
mentoring the students who will take these projects.<br>
<br>
Note the following about mentorship:<br>
<br>
1. Google only permits a student [project when it has a dedicated <br>
mentor. One cannot even tell them that one mentor will mentor two <br>
students. But what we can do if mentoring a student alone is too much <br>
for you, is that you are listed as an official mentor and in reality you <br>
do only a part of the actual mentoring and one of us the rest.<br>
<br>
2. Google tells that for mentoring you will need around5 hours/week if <br>
you do the mentoring of one student alone at least.<br>
<br>
3. We pre-select our students with several assignments, so you will <br>
usually get a good student.<br>
<br>
I am very grateful if someone could step up.<br>
<br>
    Till<br>
<br>
<br>
----------<br>
<br>
Hi,<br>
<br>
the Printing Working Group (<a href="http://www.pwg.org/" rel="noreferrer" target="_blank">http://www.pwg.org/</a>) has developed several <br>
standards for printers and multi-function devices (print, scan, copy, <br>
fax) to allow its use without hardware-model-specific software or data <br>
(aka driver).<br>
<br>
There are already all standards needed for driverless printing and they <br>
are actually implemented in printers on the market. The PWG's own <br>
driverless printing standard is IPP Everywhere, but AirPrint, Wi-Fi <br>
Direct, and Mopria us also a lot of the PWG's standards. All of these <br>
standards use the PWG's Internet Printing Protocol (IPP) and DNS-SD but <br>
different standardized formats for the print jobs. Wi-Fi Direct adds a <br>
printer-internal Wi-Fi server for wireless printing without Wi-Fi <br>
router. Via IPP-over-USB also devices connected to USB are supported <br>
(Linux support via ippusbxd, <a href="https://github.com/OpenPrinting/ippusbxd" rel="noreferrer" target="_blank">https://github.com/OpenPrinting/ippusbxd</a>).<br>
<br>
These driverless printing standards are fully supported in Linux, from <br>
Ubuntu 17.10 on and continuously improved.<br>
<br>
The PWG has recently also developed an IPP scanning standard, which <br>
provides a standard protocol for communicating with scanners in IPP <br>
multi-function devices (via network or IPP-over-USB):<br>
<br>
<a href="http://ftp.pwg.org/pub/pwg/candidates/cs-ippscan10-20140918-5100.17.pdf" rel="noreferrer" target="_blank">http://ftp.pwg.org/pub/pwg/candidates/cs-ippscan10-20140918-5100.17.pdf</a><br>
<br>
The best way to access this class of scanners from Linux would be to <br>
create a SANE backend for IPP Scan.<br>
<br>
Therefore I have opened a project for the Google Summer of Code 2018:<br>
<br>
<a href="https://wiki.linuxfoundation.org/gsoc/google-summer-code-2018-openprinting-projects#sane-module-for-ipp-driverless-scanning" rel="noreferrer" target="_blank">https://wiki.linuxfoundation.org/gsoc/google-summer-code-2018-openprinting-projects#sane-module-for-ipp-driverless-scanning</a><br>
<br>
----------<br>
<br>
SANE module for IPP driverless scanning<br>
---------------------------------------<br>
<br>
Version 2.0 and newer of the Internet Printing Protocol (IPP) support <br>
polling the full set of capabilities of a printer and if the printer <br>
supports a known Page Description Language (PDL), like PWG Raster, Apple <br>
Raster, PCLm, or PDF, it is possible to print without <br>
printer-model-specific software (driver) or data (PPD file), so-called <br>
“driverless” printing. This concept was introduced for printing from <br>
smartphones and IoT devices which do not hold a large collection of <br>
printer drivers. Driverless printing is already fully supported under <br>
Linux. Standards following this scheme are IPP Everwhere, Apple <br>
AirPrint, Mopria, and Wi-Fi Direct Print.<br>
<br>
As there are many multi-function devices (printer/scanner/copier <br>
all-in-one) which use the IPP, the Printing Working Group (PWG) has also <br>
worked out a standard for IPP-based scanning, “driverless” scanning, to <br>
also allow scanning from a wide range of client devices, independent of <br>
which operating systems they are running.<br>
<br>
Conventional scanners are supported under Linux via the SANE (Scanner <br>
Access Now Easy) system and require drivers specific to the different <br>
scanner models. Most of them are written based on reverse-engineering <br>
due to lack of support by the scanner manufacturers. To get driverless <br>
scanning working with the software the users are used to the best <br>
solution is to write a SANE module for driverless IPP scanning. This <br>
module will then automatically support all IPP scanners, thousands of <br>
scanners where many of them do not yet exist.<br>
<br>
The student's task is to write this SANE module for IPP driverless <br>
scanning and so make Linux ready for the future of driverless devices.<br>
<br>
Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot <br>
com), SANE upstream developers TBD<br>
<br>
Desired knowledge: C programming, DNS-SD, IPP<br>
<br>
Code license: GPL 2+<br>
<br>
----------<br>
<br>
I want to ask whether someone of you would (together with me) mentor a <br>
student to do this project.<br>
<br>
The SANE project does not need to be mentoring organization at the GSoC <br>
for that. Mentoring organization will be the Linux Foundation.<br>
<br>
Thank you very much in advance<br>
<br>
    Till<br>
<br>
<br>
-- <br>
sane-devel mailing list: <a href="mailto:sane-devel@alioth-lists.debian.net" target="_blank">sane-devel@alioth-lists.debian.net</a><br>
<a href="https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/sane-devel" rel="noreferrer" target="_blank">https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/sane-devel</a><br>
Unsubscribe: Send mail with subject "unsubscribe your_password"<br>
             to <a href="mailto:sane-devel-request@lists.alioth.debian.org" target="_blank">sane-devel-request@lists.alioth.debian.org</a></blockquote></div>