User Tools

Site Tools


gsoc:google-summer-code-2024-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
Next revision Both sides next revision
gsoc:google-summer-code-2024-openprinting-projects [2024/01/20 22:18]
till
gsoc:google-summer-code-2024-openprinting-projects [2024/01/21 23:34]
till [Contact]
Line 7: Line 7:
  
 Mailing list: [[https://​lore.kernel.org/​printing-architecture/​|printing-architecture at lists dot linux dot dev]] ([[https://​subspace.kernel.org/​lists.linux.dev.html|Instructions]]) Mailing list: [[https://​lore.kernel.org/​printing-architecture/​|printing-architecture at lists dot linux dot dev]] ([[https://​subspace.kernel.org/​lists.linux.dev.html|Instructions]])
 +
 +Telegram: [[https://​t.me/​+RizBbjXz4uU2ZWM1|OpenPrinting Channel]]
 +
 +Mastodon/​Fediverse:​ [[https://​ubuntu.social/​tags/​OpenPrinting|#​OpenPrinting]]
  
 IRC: #​openprinting on [[https://​libera.chat/​|Libera.Chat]] IRC: #​openprinting on [[https://​libera.chat/​|Libera.Chat]]
Line 165: Line 169:
  
 =====Desktop Integration:​ Update system-config-printer for the New Architecture of printing===== =====Desktop Integration:​ Update system-config-printer for the New Architecture of printing=====
 +
 +1 contributor full-size (350 hours).
 +
 +Originally, we already had discontinued the development of system-config-printer and put it into maintenance mode, only fixing bugs and collecting UI translations.
 +
 +But system-config-printer s still used a lot. There are practically only 3 printer setup tools around: The "​Printers"​ module of GNOME Control Center, the printer manager of KDE Settings, and system-config-printer. There are many more desktop environments than just GNOME and KDE, and distributions using many of those use system-config-printer as their printer setup tool.
 +
 +For switching distributions into the New Architecture,​ meaning from CUPS 2.x to CUPS 3.x, the printer setup tool needs to get appropriately adapted, to list IPP print destinations with appropriate configuration options, especially access to their web admin interfaces, and assign Printer Applications to non-driverless printers.
 +
 +One could also think about dropping the concept of printer setup tools altogether as modern, driverless printers are simply there, but it is not very intuitive for a user to have to find a Printer Application and install it to make a non-driverless printer working and that for driverless printers and Printer Applications there are web admin interfaces and how to access them.
 +
 +So to assure continued coverage of all desktops we need to revive development of system-config-printer and make it supporting the New Architecture,​ but as with GNOME Control Center and KDE Settings we also need to keep the old functionality,​ to allow a switchover to the new CUPS at any time and already while still using CUPS 2.x, have a better support for driverless printers.
 +
 +And this is the contributor'​s task in this project.
 +
 +Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), TBD
 +
 +Desired knowledge: Python, C, CUPS
 +
 +Code License: GPL-2+ (GPL 2 or any later version)
  
 =====Desktop Integration:​ User interfaces for using OAuth2 with printers and scanners===== =====Desktop Integration:​ User interfaces for using OAuth2 with printers and scanners=====
 +
 +1 contributor full-size (350 hours).
 +
 +From version 2.5.x on CUPS uses OAuth2 ([[https://​en.wikipedia.org/​wiki/​OAuth|Open Authorization]]) for authorization purposes and drops the formerly used Kerberos with the CUPS 3.x generation. See latest state-of-the-art presentation from Michael Sweet: [[https://​events.canonical.com/​event/​35/​contributions/​285/​attachments/​66/​111/​oos-cups-september-2023.pdf|slides]],​ [[https://​www.youtube.com/​watch?​v=vzu0FIyDfOo|video]],​ slide 11).
 +
 +Authorization in printing is needed to once protect the data of confidential jobs, and second, to protect printer resources, like toner or paper.
 +
 +OAuth2, standard for authorization for internet services ("Log in with Google"​) is also used as authorization standard for IPP (Internet Printing Protocol) printing.
 +
 +As described in a talk on the OpenPrinting microconference on Linux Plumbers 2022 ([[https://​lpc.events/​event/​16/​contributions/​1165/​attachments/​1093/​2097/​LPC2022_OAuth2_for_IPP.pdf|slides]],​ [[https://​www.youtube.com/​watch?​v=8UjrKos6LuY|video]]) when accessing an IPP printer requiring authorization,​ it returns the URL to request the authorization from the authorization server in the response to the get-printer-attributes IPP request. Now the print client (print dialog, printer setup tool) has to open the URL in a browser so that the user can log in, create an account, or whatever the authorization server needs to identify the user. On success the server returns a URL with authorization code with which the client can get the access code to the printer.
 +
 +This works for all kinds of IPP print destinations which require authorization,​ not only physical network printers but also print servers and IPP-based cloud printing services.
 +
 +The contributor'​s task is to add the functionality to open the authorization server URLs and to supply the access code to the printer to the desktop printing workflow. This can be implemented in print dialogs or perhaps even made independent of concrete print dialogs by the [[https://​github.com/​OpenPrinting/​cpdb-backend-cups|CPDB backend for CUPS]] triggering a D-Bus service for opening the URL (perhaps desktops always have such a thing?). Investigating what the best solution is for this task is part of the project.
 +
 +Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Gaurav Guleria (gaurav dot gen3 at gmail dot com), TBD
 +
 +Desired knowledge: %%C/C++%%, GTK or Qt, DNS-SD/​Avahi,​ CUPS/IPP
 +
 +Code License: Apache 2.0, MIT, GPL-2+ and LGPL-2+
  
 =====Replace QPDF by PDFio as PDF manipulation library in libcupsfilters (cfFilterPDFToPDF() filter function and others)===== =====Replace QPDF by PDFio as PDF manipulation library in libcupsfilters (cfFilterPDFToPDF() filter function and others)=====
Line 189: Line 233:
  
 Code License: Apache 2.0 Code License: Apache 2.0
- 
-=====CPDB backend for IPP infrastructure/​cloud printers===== 
- 
- 
- 
- 
  
 =====Turn cups-browsed into a Printer Application===== =====Turn cups-browsed into a Printer Application=====
Line 218: Line 256:
 Code License: Apache 2.0 Code License: Apache 2.0
  
-=====Printer Application ​for Braille embossers=====+=====Converting Braille embosser support into a Printer Application=====
  
 +1 contributor full-size (350 hours).
  
 +cups-filters currently supports Braille embossers through a series of PPD files and shell scripts that convert documents into a textual layout, convert the text into Braille dots, and convert the Braille dots to braille embosser-specific formats.
 +
 +For long-term support and wide availability,​ this needs to be converted to the newer CUPS infrastructure,​ Printer Applications.
 +
 +The contributor'​s task is thus:
 +
 +  * Converting these shell scripts into filter functions in libcupsfilters
 +  * Creating a Printer Application that exposes Braille embossers configuration to users
 +
 +The contributor does not need to own any specific hardware, a comparison can be made between the output of the existing shell-script-based implementation and the output of the converted implementation.
 +
 +Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Samuel Thibault, Braille expert (samuel dot thibault at ens-lyon dot org)
 +
 +Desired knowledge: %%C/C++%%, Shell, CUPS
 +
 +Code License: Apache 2.0
  
 =====Make a native Printer Application from Gutenprint===== =====Make a native Printer Application from Gutenprint=====
Line 250: Line 305:
 Code License: Apache 2.0 Code License: Apache 2.0
  
-=====CI Testing programs for libcupsfilters, ​libpappl-retrofitlibppd, CPDB, ...=====+=====CI Testing programs for libpappl-retrofit ​and libppd=====
  
 1 contributor full-size (350 hours). 1 contributor full-size (350 hours).
Line 260: Line 315:
 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. 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.+The contributor'​s task here is to write test programs for the OpenPrinting projects ​libppd and pappl-retrofit ​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. 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.
Line 274: Line 329:
 Desired knowledge: C, Shell, PAPPL, CUPS, CI Desired knowledge: C, Shell, PAPPL, CUPS, CI
  
-Code License: Apache 2.0, MIT+Code License: Apache 2.0
  
 =====cups-filters:​ Create OCR filter to deliver scans as searchable PDFs===== =====cups-filters:​ Create OCR filter to deliver scans as searchable PDFs=====
gsoc/google-summer-code-2024-openprinting-projects.txt ยท Last modified: 2024/04/01 09:28 by till