User Tools

Site Tools


gsoc:google-summer-code-2021-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-2021-openprinting-projects [2021/02/08 16:28]
till
gsoc:google-summer-code-2021-openprinting-projects [2021/04/19 09:08] (current)
till [GUI for listing and managing available IPP Print/Scan services (or DNS-SD-advertised network services in general)]
Line 63: Line 63:
 This principally happens in the following projects: This principally happens in the following projects:
  
-  * [[https://​github.com/michaelrsweet/​pappl/|PAPPL]] - Printer Application Framework ​library for Printer/​Scanner Applications+  * [[https://openprinting.github.io/cups/|CUPS]] - The standard printing environment for Linux and other POSIX-style operating systems
   * [[https://​github.com/​OpenPrinting/​cups-filters/​|cups-filters]] - filters, backends, cups-browsed,​ ... - Everything which CUPS needs to be used on non-Mac systems   * [[https://​github.com/​OpenPrinting/​cups-filters/​|cups-filters]] - filters, backends, cups-browsed,​ ... - Everything which CUPS needs to be used on non-Mac systems
-  * [[https://​github.com/​OpenPrinting/​ps-printer-app/​|PostScript Printer Application]] - Printer Application for PostScript Printers+  ​* [[https://​github.com/​OpenPrinting/​cups-snap/​|CUPS Snap]] - Snap package of CUPS, for printing in all-Snap OS distributions ([[https://​snapcraft.io/​cups|in the Snap Store]]) 
 +  * [[https://​github.com/​michaelrsweet/​pappl/​|PAPPL]] - Printer Application Framework - library for Printer/​Scanner Applications 
 +  ​* [[https://​github.com/​OpenPrinting/​ps-printer-app/​|PostScript Printer Application]] - Printer Application for PostScript Printers ​([[https://​snapcraft.io/​ps-printer-app|in the Snap Store]])
   * [[https://​github.com/​michaelrsweet/​hp-printer-app/​|HP Printer Application]] - Printer Application for HP PCL printers   * [[https://​github.com/​michaelrsweet/​hp-printer-app/​|HP Printer Application]] - Printer Application for HP PCL printers
-  * [[https://​github.com/​OpenPrinting/​cups-snap/​|CUPS Snap]] - Snap package of CUPS, for printing in all-Snap OS distributions 
   * [[https://​github.com/​alexpevzner/​sane-airscan/​|sane-airscan]] - The "​airscan"​ SANE backend, supports driverless eSCL and WSD scanning, IPP Scan support is planned   * [[https://​github.com/​alexpevzner/​sane-airscan/​|sane-airscan]] - The "​airscan"​ SANE backend, supports driverless eSCL and WSD scanning, IPP Scan support is planned
 +
 +See also
 +
 +  * [[https://​openprinting.github.io/​news/​|OpenPrinting News and Events]] - Monthly news post, software releases, ...
 +  * [[https://​lists.linuxfoundation.org/​pipermail/​printing-architecture/​2021/​thread.html|OpenPrinting mailing list archive]] - Our recent discussions about the development of the printing architecture
  
 ======Project Ideas====== ======Project Ideas======
 +
 +=====GUI for listing and managing available IPP Print/Scan services (or DNS-SD-advertised network services in general)=====
 +
 +As described above, all available printers and scanners will simply be IPP services (physical network printers or Printer Applications) and drivers will be Printer Applications. They are managed by their web administration interfaces and/or IPP System Service. Local CUPS queues are simply automatically popping up for each IPP print service available.
 +
 +Due to this we do not need any more the classic printer management tools where the local CUPS queues are listed and you modify their properties. Instead, your printer/​scanner management tool should list all IPP services, native hardware devices, Printer Applications,​ shared CUPS queues on remote servers. For each service (1 service = 1 host:port) a main entry with sub-entries for each printer, scanner, or fax out facility. These entries should have action buttons, for main entries to open the web interface in a browser, pop up an IPP System Service status/​control window, ... and for sub-entries buttons to go to the web interface page of this printer, pause/​resume/​set-as-default quick-access buttons, ...
 +
 +This way the user knows which IPP services are available and can easily click to their management interfaces (many users do not know about web interfaces for network services or how to find them). Especially if he installs a Printer Application from the Snap Store he needs to know how to set up his printer with it.
 +
 +All the information needed to create the list is provided by DNS-SD (Avahi). DNS-SD advertises all printers, scanners, web interfaces, IPP System Service interfaces, ... see the output of "​avahi-discover"​ and "​avahi-browse"​.
 +
 +And with this one is already close to having a general network service management tool, also listing the DNS-SD services which are not related to printing with buttons to their web interfaces (imagine the user can open the web interface of his router with a simple mouse click). This would be the "​user-friendly"​ avahi-discover then, showing the services in a user-friendly order an presentation.
 +
 +The student'​s task is to implement such a tool in GTK, ideally as a module for the GNOME Control Center.
 +
 +Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), GNOME/GTK developers, TBD
 +
 +Desired knowledge: %%C/C++%%, GTK, DNS-SD/​Avahi,​ CUPS/IPP
 +
 +Code License: GPL-2+ and LGPL-2+
 +
 +
 +=====GUI to guide the user to the correct Printer Application=====
 +
 +Modern printers usually are driverless IPP printers, and those get discovered and set up fully automatically with CUPS, no Printer Application is required for them, so it is easy for users to get up and running with them.
 +
 +Printers which do not do driverless IPP are either legacy printers, themany older printers which got developed before driverless IPP printing existed, and specialty printers. These need Printer Applications. As there will be several different Printer Applications and each one supporting another set of printers it is not trivial for the user to discover available non-IPP-driverless printers and find out which is the Printer Application to use and whether it is already installed.
 +
 +So we need some guide for the user. The idea is a GUI tool which lists available, non-IPP-driverless printers, local (USB) and network devices. If the user selects one of them, all installed Printer Applications which support this printer are shown, and for each a button to open the Printer Application'​s web interface and also a quick auto-add-this-printer button. In addition to the list of suitable Printer Applications there should also be a button which does a fuzzy search for the printer make and model on the Snap Store to find Printer Applications which are not installed on the local system.
 +
 +The student'​s task is to implement such a tool in GTK, ideally as a module for the GNOME Control Center.
 +
 +Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), GNOME/GTK developers, TBD
 +
 +Desired knowledge: %%C/C++%%, GTK, DNS-SD/​Avahi,​ CUPS/IPP
 +
 +Code License: GPL-2+ and LGPL-2+
  
  
Line 116: Line 159:
 Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Michael Sweet, author of CUPS and PAPPL (msweet at msweet dot org), Jai Luthra (luthrajaiji at gmail dot com), Smith Kennedy, HP (smith kennedy at hp dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), TBD Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Michael Sweet, author of CUPS and PAPPL (msweet at msweet dot org), Jai Luthra (luthrajaiji at gmail dot com), Smith Kennedy, HP (smith kennedy at hp dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), TBD
  
-Desired knowledge: C/C ++, CUPS+Desired knowledge: ​%%C/C++%%, CUPS
  
 Code License: Apache 2.0 Code License: Apache 2.0
Line 123: Line 166:
 =====Firmware and other file handling in PAPPL===== =====Firmware and other file handling in PAPPL=====
  
-For some printers there are firmware files, either as an upgrade or if the printer is a cheaper model which does not have non-volatile memory to hold the printer'​s firmware, requiring the firmware be loaded from the computer each time the oprinter ​is turned on. Other printers could be enhanced with fonts or custom color profiles.+For some printers there are firmware files, either as an upgrade or if the printer is a cheaper model which does not have non-volatile memory to hold the printer'​s firmware, requiring the firmware be loaded from the computer each time the printer ​is turned on. Other printers could be enhanced with fonts or custom color profiles.
  
 This can easily be handled by the Printer Application,​ offering an appropriate page in its administration web interface where the user can upload files into Printer Application'​s file space and the Printer Application would apply them somehow, as loading them into the printer as update or enhancement,​ loading them into the printer everytime when the printer is turned on, use them in the job filtering process, ... This can easily be handled by the Printer Application,​ offering an appropriate page in its administration web interface where the user can upload files into Printer Application'​s file space and the Printer Application would apply them somehow, as loading them into the printer as update or enhancement,​ loading them into the printer everytime when the printer is turned on, use them in the job filtering process, ...
Line 135: Line 178:
 Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Michael Sweet, author of CUPS and PAPPL (msweet at msweet dot org), Jai Luthra (luthrajaiji at gmail dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), TBD Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Michael Sweet, author of CUPS and PAPPL (msweet at msweet dot org), Jai Luthra (luthrajaiji at gmail dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), TBD
  
-Desired knowledge: C/C++, CUPS+Desired knowledge: ​%%C/C++%%, CUPS
  
 Code License: Apache 2.0 Code License: Apache 2.0
Line 152: Line 195:
 Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Michael Sweet, author of CUPS and PAPPL (msweet at msweet dot org), Jai Luthra (luthrajaiji at gmail dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), Alexander Pevzner (pzz at apevzner dot com), TBD Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Michael Sweet, author of CUPS and PAPPL (msweet at msweet dot org), Jai Luthra (luthrajaiji at gmail dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), Alexander Pevzner (pzz at apevzner dot com), TBD
  
-Desired knowledge: C/C++, CUPS+Desired knowledge: ​%%C/C++%%, CUPS
  
 Code License: Apache 2.0 Code License: Apache 2.0
Line 167: Line 210:
 Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Sahil Arora (sahilarora dot 535 at gmail dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), TBD Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Sahil Arora (sahilarora dot 535 at gmail dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), TBD
  
-Desired knowledge: C/C++, CUPS+Desired knowledge: ​%%C/C++%%, CUPS
  
 Code License: Apache 2.0 Code License: Apache 2.0
Line 184: Line 227:
 Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Sahil Arora (sahilarora dot 535 at gmail dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), TBD Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Sahil Arora (sahilarora dot 535 at gmail dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), TBD
  
-Desired knowledge: C/C++, CUPS+Desired knowledge: ​%%C/C++%%, CUPS
  
 Code License: Apache 2.0 Code License: Apache 2.0
Line 203: Line 246:
 Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Sahil Arora (sahilarora dot 535 at gmail dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), TBD Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Sahil Arora (sahilarora dot 535 at gmail dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), TBD
  
-Desired knowledge: C/C++, CUPS+Desired knowledge: ​%%C/C++%%, CUPS
  
 Code License: Apache 2.0 Code License: Apache 2.0
Line 218: Line 261:
 Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Sahil Arora (sahilarora dot 535 at gmail dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), TBD Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Sahil Arora (sahilarora dot 535 at gmail dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), TBD
  
-Desired knowledge: C/C++, CUPS+Desired knowledge: ​%%C/C++%%, CUPS
  
 Code License: Apache 2.0 Code License: Apache 2.0
Line 233: Line 276:
 Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Sahil Arora (sahilarora dot 535 at gmail dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), TBD Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Sahil Arora (sahilarora dot 535 at gmail dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), TBD
  
-Desired knowledge: C/C++, CUPS+Desired knowledge: ​%%C/C++%%, CUPS
  
 Code License: Apache 2.0 Code License: Apache 2.0
Line 252: Line 295:
 Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Sahil Arora (sahilarora dot 535 at gmail dot com), TBD Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Sahil Arora (sahilarora dot 535 at gmail dot com), TBD
  
-Desired knowledge: C/C++, CUPS+Desired knowledge: ​%%C/C++%%, CUPS
  
 Code License: Apache 2.0 Code License: Apache 2.0
Line 269: Line 312:
 Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Sahil Arora (sahilarora dot 535 at gmail dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), Alexander Pevzner (pzz at apevzner dot com), TBD Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Sahil Arora (sahilarora dot 535 at gmail dot com), Dheeraj Yadav (dhirajyadav135 at gmail dot com), Alexander Pevzner (pzz at apevzner dot com), TBD
  
-Desired knowledge: C/C++, CUPS+Desired knowledge: ​%%C/C++%%, CUPS
  
 Code License: Apache 2.0 Code License: Apache 2.0
 +
 +
 +=====Turn the scp-dbus-service methods - GetBestDrivers and MissingExecutables - of system-config-printer into C=====
 +
 +system-config-printer was the default printer setup tool in Red Hat/Fedora Linux for a lot of time and also got adopted by Ubuntu around ten years ago. During this time it received a lot of development work, especially on the algorithms for finding the best driver for a printer and for identifying whether printer discovery results from the CUPS backends actually come from the same physical printer.
 +
 +To make these algorithms available for other printer setup tools (both interactive GUI tools and programs which fully automatically create print queues without user interaction) they got moved into a D-Bus service, scp-dbus-service. Now every other program can simply call the needed function via a D-Bus API. The printer setup tool in the GNOME Control Center for example works this way.
 +
 +GNOME Control Center uses two methods - GetBestDrivers and MissingExecutables - for its printer setup. The GetBestDrivers method is used for finding the right printer drivers from ones which are available on the system. The MissingExecutables method is checking method, which is run after finding the best driver and checks if any additional software is needed for getting the printer functional.
 +
 +system-config-printer was written in Python and therefore scp-dbus-service is also written in Python. This makes it depending on Python and also makes it loading the needed Python libraries into memory when started. Also most printer setup tools are written in C, Therefore it makes sense to convert the D-Bus service into the C language.
 +
 +The student'​s task is to turn the two mentioned methods of system-config-printer into C, first as a C library with API, then as a D-Bus service (would
 + work out-of-the-box with many GUIs) if the C library will be finished. This will make it easier to use those methods in other print tools in practically any programming language.
 +
 +Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), system-config-printer upstream developer Zdenek Dohnal (zdohnal at redhat dot com)
 +
 +Desired knowledge: C/%%C++%% programming,​ Python programming,​ autoconf/​automake(creating configure and Makefile), basic testing
 +
 +Code license: GPL 2+ or MIT
  
  
gsoc/google-summer-code-2021-openprinting-projects.1612801698.txt.gz · Last modified: 2021/02/08 16:28 by till