User Tools

Site Tools


gsoc:google-summer-code-2023-openprinting-projects

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
gsoc:google-summer-code-2023-openprinting-projects [2023/01/19 02:17]
till [Turn cups-browsed into a Printer Application]
gsoc:google-summer-code-2023-openprinting-projects [2023/01/19 14:44] (current)
till [Scanning support in PAPPL]
Line 25: Line 25:
  
 ====Printer Drivers get Printer Applications==== ====Printer Drivers get Printer Applications====
 +
 +**OR%% ​ %%The New Architecture** ([[https://​openprinting.github.io/​current/#​the-new-architecture-for-printing-and-scanning|What it is]], [[https://​www.youtube.com/​watch?​v=P22DOu_ahBo|Video]])
  
 [[https://​github.com/​OpenPrinting/​cups/​|CUPS]],​ printing environment used by Linux and most other non-Windows operating systems, supports the different printer models with the help of printer drivers, consisting of PPD (PostScript Printer Description) files to describe the printer'​s capabilities,​ filters to convert the incoming print jobs into the printer'​s native language, and sometimes also backends, to support non-standard communication protocols between the computer and the printer hardware. [[https://​github.com/​OpenPrinting/​cups/​|CUPS]],​ printing environment used by Linux and most other non-Windows operating systems, supports the different printer models with the help of printer drivers, consisting of PPD (PostScript Printer Description) files to describe the printer'​s capabilities,​ filters to convert the incoming print jobs into the printer'​s native language, and sometimes also backends, to support non-standard communication protocols between the computer and the printer hardware.
Line 65: Line 67:
 So we are going to replace SANE in the role of an interface between scanning user applications and scanner drivers by the sandboxing-ready eSCL. SANE will continue to exist, but to provide the legacy scanner drivers enclosed in a Scanner Application. So we are going to replace SANE in the role of an interface between scanning user applications and scanner drivers by the sandboxing-ready eSCL. SANE will continue to exist, but to provide the legacy scanner drivers enclosed in a Scanner Application.
  
-Work on extending the Printer Application framework [[https://​github.com/​michaelrsweet/​pappl/​|PAPPL]] has already been [[https://​github.com/​Bhavna2020/​GSoC-2021|started in GSoC 2021]] and [[https://​gist.github.com/​Rishabh-792/​b1a2960b7e0e3d2bd3a5f4db3d260fc0|continued in GSoC2022]].+Work on extending the Printer Application framework [[https://​github.com/​michaelrsweet/​pappl/​|PAPPL]] has already been [[https://​github.com/​Bhavna2020/​GSoC-2021|started in GSoC 2021]] and [[https://​gist.github.com/​Rishabh-792/​b1a2960b7e0e3d2bd3a5f4db3d260fc0|continued in GSoC 2022]].
  
 ====What we are currently doing at OpenPrinting==== ====What we are currently doing at OpenPrinting====
Line 152: Line 154:
 1 contributor full-size (350 hours). 1 contributor full-size (350 hours).
  
-In the Google Summer of Code 2021, Bhavna Kosta has started the work on [[https://​github.com/​Bhavna2020/​GSoC-2021|Scanning support in PAPPL]] so that [[https://​github.com/​michaelrsweet/​pappl/​|PAPPL]] not only can be used for creating Printer Applications (emulation of a driverless IPP printer) but also for creating Scanner Applications (emulation of a driverless ​IPP/eSCL scanner), or even an emulation of a driverless IPP multi-function device.+In the Google Summer of Code 2021, Bhavna Kosta has started the work on [[https://​github.com/​Bhavna2020/​GSoC-2021|Scanning support in PAPPL]] ​(Talk on OpenPrinting micro-conference 2021: [[https://​linuxplumbersconf.org/​event/​11/​contributions/​1029/​attachments/​785/​1474/​Scanning%20in%20PAPPL.pdf|Slides]],​ [[https://​youtu.be/​5KogjLb1Hb4?​t=15600|Video]]) ​so that [[https://​github.com/​michaelrsweet/​pappl/​|PAPPL]] not only can be used for creating Printer Applications (emulation of a driverless IPP printer) but also for creating Scanner Applications (emulation of a driverless eSCL scanner), or even an emulation of a driverless IPP multi-function device.
  
 She has created the [[https://​github.com/​michaelrsweet/​pappl/​tree/​scanning|needed data structures and API functions]] needed to extend PAPPL for supporting scanners. She has created the [[https://​github.com/​michaelrsweet/​pappl/​tree/​scanning|needed data structures and API functions]] needed to extend PAPPL for supporting scanners.
Line 179: Line 181:
 1 contributor full-size (350 hours). 1 contributor full-size (350 hours).
  
 +[[https://​openprinting.github.io/​achievements/#​cups-browsed|cups-browsed]] is a helper daemon for CUPS to automatically set up network printers. In the beginning it was to overcome that when CUPS from 1.6.x on used DNS-SD instead of its own browsing/​broadcasting,​ it did not auto-setup client queues any more.
  
 +With the time it got lots of more functionality:​ Legacy CUPS browsing/​broadcasting for interoperability with CUPS 1.5.x and older (often in long-term support enterprise distros), clustering, manually and automatically,​ also for clusters of printers of completely different types, user has one "​universal"​ print queue and by their option settings job goes to the correct printer. Also filtering lists of many printers is supported, and everything can be configured/​fine-tuned by the user or admin.
 +
 +With CUPS already having its temporary queue functionality for network printers without need of explicit manual setup, and the Common Print Dialog Backends getting into the print dialogs and talking to CUPS with modern interfaces, we do not need automatic queue creation for network printers any more, but the other functionality of cups-browsed is still very useful.
 +
 +So we do not want to discontinue cups-browsed,​ but take it into the New Architecture of printing, giving it the appropriate modern interface. Currently cups-browsed discovers printers via DNS-SD, and then creates (or not creates) local print queues pointing to them according to the rules in its configuration file. But currently it creates classic CUPS queues, with PPD files generated according to the printer'​s IPP attributes. What we need is make it working with CUPS 3.x, which drops PPD files and classic printer drivers.
 +
 +For this we want tom turn it into a Printer Application,​ the new printer driver format, emulating a driverless IPP printer. This way CUPS can access the printers created by cups-browsed and create temporary queues for them on-demand. Internally we define with configuration file what these queues should do: Clusters, retro-fit to old CUPS, ...
 +
 +The contributor'​s task is to implement this transition, using PAPPL for all standard elements of a Printer Application,​ like daemon, IPP parser, web admin interface, ... They will make cups-browsed create a queue in the Printer Application if appropriate destination printers get discovered, and remove it when these printers disappear (turned off, user leaves network, ...). CUPS will simply pick up on the emulated IPP printers then. And there will be a web interface to be created, for the configuration of the clusters, filter rules, .... one does not need to edit cups-browsed.conf manually any more.
  
 Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Deepak Patankar (patankardeepak04 at gmail dot com), TBD Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Deepak Patankar (patankardeepak04 at gmail dot com), TBD
Line 261: Line 273:
 1 contributor full-size (350 hours). 1 contributor full-size (350 hours).
  
 +To protect a free software project worked on by several contributors against regressions caused by a committed change, one needs frequent, automated testing of the code, base, ideally triggered by every commit into the repository. This is called Continuous Integration (CI).
  
 +What is triggered on each commit is usually some static analysis of the code using common, specialized tools and also build and execution tests, usually doing `./​configure;​ make; make test` on different system platforms.
  
 +This naturally requires test scripts/​programs which are compiled and run by the `make test` step. For CUPS for example the daemon is started (on an unprivileged port so that it does not need root), queues created and listed, jobs sent, the logs checked whether everything went OK, ... For Ghostscript a large collection of input files (gathered from bug reports) is processed and converted into raster formats.
 +
 +The contributor'​s task here is to write test programs for the different OpenPrinting projects so that `make test` does something useful, being efficient to catch regressions. They should exercise important functionality of the software with different parameters and analyse logs and output files to check whether the program did the expected work.
 +
 +Test programs are also needed for the so-called '​autopkgtest'​ tests which are added to Debian packages and executed whenever the package is uploaded to Debian or Ubuntu.
 +
 +In addition, instruction files and shell scripts are needed to build the software on different platforms/​environments,​ run tests, create GitHub Actions (for the automatic triggering on each commit ...).
 +
 +This subject got discussed on the OpenPrinting micro-conference on Linux Plumbers 2022: ([[https://​openprinting.github.io/​OpenPrinting-News-September-2022/#​openprinting-micro-conference-on-the-linux-plumbers-2022|Summary]],​ [[https://​lpc.events/​event/​16/​contributions/​1161/​attachments/​942/​1851/​lpc-printing-ci-2022.pdf|Slides]],​ [[https://​www.youtube.com/​watch?​v=c--Uki7cvGE|Video]])
 +
 +Here you can see what we already have in terms of CI, and what is missing ...
 +
 +Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Michael Sweet, author of CUPS and PAPPL (msweet at msweet dot org), TBD
  
 +Desired knowledge: C, Shell, PAPPL, CUPS, CI
  
 +Code License: Apache 2.0, MIT
  
 =====GNOME Control Center: List and handle IPP print services for the New Architecture===== =====GNOME Control Center: List and handle IPP print services for the New Architecture=====
gsoc/google-summer-code-2023-openprinting-projects.1674094663.txt.gz · Last modified: 2023/01/19 02:17 by till