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/21 00:40]
till
gsoc:google-summer-code-2024-openprinting-projects [2024/02/11 13:41]
till [Videos/Podcasts]
Line 8: Line 8:
 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]])
  
-IRC#​openprinting on [[https://libera.chat/|Libera.Chat]]+Telegram: [[https://t.me/+RizBbjXz4uU2ZWM1|OpenPrinting Channel]] 
 + 
 +Mastodon/​Fediverse:​ [[https://​ubuntu.social/​tags/​OpenPrinting|#​OpenPrinting]]
  
 Our code repositories:​ [[https://​github.com/​OpenPrinting|OpenPrinting GitHub]] Our code repositories:​ [[https://​github.com/​OpenPrinting|OpenPrinting GitHub]]
Line 32: Line 34:
   * [[https://​podcast.asknoahshow.com/​368?​t=2837|Ask Noah: Till Kamppeter on how OpenPrinting improved printing with Linux/​Unix]]   * [[https://​podcast.asknoahshow.com/​368?​t=2837|Ask Noah: Till Kamppeter on how OpenPrinting improved printing with Linux/​Unix]]
   * [[https://​www.youtube.com/​watch?​v=m5QKJH9tDjQ|Linux Saloon: Till Kamppeter about how he got Snap enthusiast]]   * [[https://​www.youtube.com/​watch?​v=m5QKJH9tDjQ|Linux Saloon: Till Kamppeter about how he got Snap enthusiast]]
 +
 +====Talk about OpenPrinting====
 +
 +  * [[https://​fosdem.org/​2024/​schedule/​event/​fosdem-2024-1930-openprinting-we-make-printing-just-work-/​|OpenPrinting - We make printing just work! Till Kamppeter, FOSDEM 2024, Brussels, Belgium]]
  
 ====Printer Drivers get Printer Applications==== ====Printer Drivers get Printer Applications====
Line 134: Line 140:
 =====Desktop integration:​ CPDB support for the print dialogs of Mozilla (Thunderbird/​Firefox) and LibreOffice===== =====Desktop integration:​ CPDB support for the print dialogs of Mozilla (Thunderbird/​Firefox) and LibreOffice=====
  
-1-2 contributors full-size (350 hours).+1-2 contributors full-size (350 hours), Level of difficulty: Hard
  
 Most print jobs are sent via the print dialog of a desktop application,​ like evince, Chrome, LibreOffice,​ DarkTable, … Print dialogs are usually, like “Open …” or “Save as …” dialogs, provided by the GUI toolkits, in most cases GTK or Qt, sometimes applications come also with their own creations, like LibreOffice or Firefox. Most print jobs are sent via the print dialog of a desktop application,​ like evince, Chrome, LibreOffice,​ DarkTable, … Print dialogs are usually, like “Open …” or “Save as …” dialogs, provided by the GUI toolkits, in most cases GTK or Qt, sometimes applications come also with their own creations, like LibreOffice or Firefox.
Line 166: Line 172:
 =====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).+1 contributor full-size (350 hours), Level of difficulty: Intermediate
  
 Originally, we already had discontinued the development of system-config-printer and put it into maintenance mode, only fixing bugs and collecting UI translations. Originally, we already had discontinued the development of system-config-printer and put it into maintenance mode, only fixing bugs and collecting UI translations.
Line 179: Line 185:
  
 And this is the contributor'​s task in this project. And this is the contributor'​s task in this project.
 +
 +Note that system-config-printer is written in Python.
  
 Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), TBD Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), TBD
Line 187: Line 195:
  
 =====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), Level of difficulty: Hard
 +
 +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)=====
  
-1 contributor full-size (350 hours).+1 contributor full-size (350 hours), Level of difficulty: Hard
  
 Like [[https://​openprinting.github.io/​cups/​|CUPS]],​ [[https://​github.com/​OpenPrinting/​libcupsfilters|libcupsfilters]] is principally written in regular C and not in %%C++%%. We want to avoid %%C++%% as it has often problems with binary compatibility and the mechanism with which the Debian/​Ubuntu build services auto-detect dependencies between Debian packages get very awkward with %%C++%%. Like [[https://​openprinting.github.io/​cups/​|CUPS]],​ [[https://​github.com/​OpenPrinting/​libcupsfilters|libcupsfilters]] is principally written in regular C and not in %%C++%%. We want to avoid %%C++%% as it has often problems with binary compatibility and the mechanism with which the Debian/​Ubuntu build services auto-detect dependencies between Debian packages get very awkward with %%C++%%.
Line 209: Line 237:
  
 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=====
  
-1 contributor full-size (350 hours).+1 contributor full-size (350 hours), Level of difficulty: Intermediate
  
 [[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. [[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.
Line 240: Line 262:
 =====Converting Braille embosser support into a Printer Application===== =====Converting Braille embosser support into a Printer Application=====
  
-1 contributor full-size (350 hours).+1 contributor full-size (350 hours), Level of difficulty: Hard
  
 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. 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.
Line 261: Line 283:
 =====Make a native Printer Application from Gutenprint===== =====Make a native Printer Application from Gutenprint=====
  
-1 contributor full-size (350 hours).+1 contributor full-size (350 hours), Level of difficulty: Hard
  
 [[http://​gimp-print.sourceforge.net/​|Gutenprint]] is a high-quality printer driver for a wide range of inkjets, especially Epson and Canon, dye-sublimation printers and even monochrome PCL laser printers. It does not only cover many printers to give them support under Linux and free software operating systems at all, but also is optimized for highest possible print quality, so that at least on some printers and with the right settings you can even get better print quality than with the original (Windows/​Mac) drivers. [[http://​gimp-print.sourceforge.net/​|Gutenprint]] is a high-quality printer driver for a wide range of inkjets, especially Epson and Canon, dye-sublimation printers and even monochrome PCL laser printers. It does not only cover many printers to give them support under Linux and free software operating systems at all, but also is optimized for highest possible print quality, so that at least on some printers and with the right settings you can even get better print quality than with the original (Windows/​Mac) drivers.
Line 287: Line 309:
 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), Level of difficulty: Intermediate
  
 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). 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).
Line 297: Line 319:
 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 311: Line 333:
 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=====
  
-1 contributor half-size (175 hrs)+1 contributor half-size (175 hrs), Level of difficulty: Intermediate
  
 Scanning with IPP Scan gives the user the possibility to request the scanned image in PDF format. If the IPP Scan server is a Scanner Application,​ a filter function from cups-filters would convert the the raster image coming from the scanner into PDF. Scanning with IPP Scan gives the user the possibility to request the scanned image in PDF format. If the IPP Scan server is a Scanner Application,​ a filter function from cups-filters would convert the the raster image coming from the scanner into PDF.
gsoc/google-summer-code-2024-openprinting-projects.txt · Last modified: 2024/04/01 09:28 by till