User Tools

Site Tools


gsoc:google-summer-code-2018-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-2018-openprinting-projects [2018/01/31 14:14]
Aveekb [Secure (IPPS/HTTPS) connection support for IPP-over-USB]
gsoc:google-summer-code-2018-openprinting-projects [2018/03/11 15:04] (current)
dli 18 Added Idea: Common Print Dialog Qt implementation
Line 99: Line 99:
  
  
-=====Printing of files directly from the file manager=====+=====6. Printing of files directly from the file manager=====
  
 Sometimes you browse through your files and see some files which you want to print, files in completely different formats: PDFs, photos, LibreOffice files, ... It is awkward to double-click each file, one-by-one, to get it opened in its application,​ and then click "​Print"​ in each application. It would be much easier to mark all these files, right-click and then click "​Print"​ in the context menu. Sometimes you browse through your files and see some files which you want to print, files in completely different formats: PDFs, photos, LibreOffice files, ... It is awkward to double-click each file, one-by-one, to get it opened in its application,​ and then click "​Print"​ in each application. It would be much easier to mark all these files, right-click and then click "​Print"​ in the context menu.
Line 105: Line 105:
 Here the student'​s task is to add this functionality to a popular file manager, for example the one of GNOME. Here the student'​s task is to add this functionality to a popular file manager, for example the one of GNOME.
  
-Mentors: Aveek Basu (basu dot aveek at gmail dot com), Lexmark, upstream developers of GNOME/GTK TBD.+Mentors: Aveek Basu (basu dot aveek at gmail dot com), upstream developers of GNOME/GTK TBD.
  
 Desired knowledge: C programming,​ GTK Desired knowledge: C programming,​ GTK
Line 111: Line 111:
 Code License: LGPL 2+ Code License: LGPL 2+
  
-=====Enhancements for ipptool=====+=====7. Enhancements for ipptool=====
  
 ipptool is a command line tool for issuing IPP requests and receiving the printer'​s/​the server'​s answer. This tool is maintained as free software in the [[https://​github.com/​istopwg/​ippsample|ippsample]] collection from the Printer Working Group ([[http://​www.pwg.org/​|PWG]]). It is mainly for development and debugging of IPP-related software. ipptool is a command line tool for issuing IPP requests and receiving the printer'​s/​the server'​s answer. This tool is maintained as free software in the [[https://​github.com/​istopwg/​ippsample|ippsample]] collection from the Printer Working Group ([[http://​www.pwg.org/​|PWG]]). It is mainly for development and debugging of IPP-related software.
Line 125: Line 125:
 Code License: Apache 2.0 Code License: Apache 2.0
  
-=====PWG Raster "​lint"​ program=====+=====8. PWG Raster "​lint"​ program=====
  
 The PWG Raster format is a universal, multi-page raster format, supporting various color spaces and color depths, and near arbitrary resolutions and page sizes and also printing-related meta data, like paper type, duplex, ... It is designed as a universal raster-based Page Description Language (PDL) which allow all types of printers having a common input data format. As this format is raster-based it does not need high amounts of memory and computing power in the printer for rendering the pages and can therefore be implemented also in very cheap printers. The PWG Raster format is a universal, multi-page raster format, supporting various color spaces and color depths, and near arbitrary resolutions and page sizes and also printing-related meta data, like paper type, duplex, ... It is designed as a universal raster-based Page Description Language (PDL) which allow all types of printers having a common input data format. As this format is raster-based it does not need high amounts of memory and computing power in the printer for rendering the pages and can therefore be implemented also in very cheap printers.
Line 139: Line 139:
 Code License: Apache 2.0 Code License: Apache 2.0
  
-=====Enhance "​ippserver"​ to support the full range of IPP data types=====+=====9. Enhance "​ippserver"​ to support the full range of IPP data types=====
  
 ippserver is a simple daemon which emulates an IPP printer. It has a lot of possibilities to configure it to emulate the desired printer, it can even emulate real printers using an appropriate spec sheet, which can be extracted from the real printer by a bug-reporting user and the client software developer can emulate the user's printer. ippserver is a simple daemon which emulates an IPP printer. It has a lot of possibilities to configure it to emulate the desired printer, it can even emulate real printers using an appropriate spec sheet, which can be extracted from the real printer by a bug-reporting user and the client software developer can emulate the user's printer.
Line 153: Line 153:
 Code License: Apache 2.0 Code License: Apache 2.0
  
-=====Common Print Dialog Backends projects=====+=====10. Common Print Dialog Backends projects=====
  
 The [[https://​github.com/​OpenPrinting|OpenPrinting]] project "​Common Print Dialog Backends"​ provides a [[https://​github.com/​OpenPrinting/​cpdb-libs|D-Bus interface]] to separate the print dialog GUI from the communication with the actual printing system (CUPS, Google Cloud Print, ...) having each printing system being supported with a backend and these GUI-independent backends working with all print dialogs (GTK/GNOME, Qt/KDE, LibreOffice,​ ...). This allows for easily updating all print dialogs when something in a print technology changes, as only the appropriate backend needs to get updated. Also new print technologies can get easily introduced by adding a new backend. The [[https://​github.com/​OpenPrinting|OpenPrinting]] project "​Common Print Dialog Backends"​ provides a [[https://​github.com/​OpenPrinting/​cpdb-libs|D-Bus interface]] to separate the print dialog GUI from the communication with the actual printing system (CUPS, Google Cloud Print, ...) having each printing system being supported with a backend and these GUI-independent backends working with all print dialogs (GTK/GNOME, Qt/KDE, LibreOffice,​ ...). This allows for easily updating all print dialogs when something in a print technology changes, as only the appropriate backend needs to get updated. Also new print technologies can get easily introduced by adding a new backend.
Line 173: Line 173:
 Code license: MIT Code license: MIT
  
-=====Turn the scp-dbus-service of system-config-printer into C=====+=====11. Common Print Dialog Qt implementation (1 student)===== 
 +The [[https://​doc.qt.io/​qt-5.10/​qtprintsupport-index.html | Qt Print Support]] framework should be updated with the CPD support. The goal is to provide the CPD GUI features and d-bus communications with the [[https://​github.com/​OpenPrinting/​cpdb-libs | CPD backend support]] for printing from Qt5 applications on support platforms. 
 + 
 +Based on the GSoC work of the previous year, one example of Qt CPD implementation outside of Qt Print Support can be found at: [[https://​github.com/​rithvikp1998/​CPDv2]]. For this task, the implementation is expected to start with [[https://​github.com/​openwebos/​qt/​blob/​master/​src/​gui/​dialogs/​qprintdialog_unix.cpp|QPrintDialog]] instead. 
 + 
 +Mentors: Dongxu Li (dongxuli2011 at gmail dot com), Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), TBD 
 + 
 +Desired knowledge: C++ programming,​ Qt, CUPS 
 + 
 +Licenses: Qt Contribution Agreement 
 + 
 +=====12. ​Turn the scp-dbus-service 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. 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.
Line 189: Line 200:
 Code license: GPL 2+ or MIT Code license: GPL 2+ or MIT
  
-=====Google Cloud Print: Desktop-integrated solution for registering local CUPS printers=====+=====13. Google Cloud Print: Desktop-integrated solution for registering local CUPS printers=====
  
 [[https://​developers.google.com/​cloud-print/​docs/​overview|Google Cloud Print]] is a service from Google which allows to print from anywhere with internet access to anywhere else with internet access, for example from a mobile phone to printer at home or in the office. [[https://​developers.google.com/​cloud-print/​docs/​overview|Google Cloud Print]] is a service from Google which allows to print from anywhere with internet access to anywhere else with internet access, for example from a mobile phone to printer at home or in the office.
Line 211: Line 222:
 Desired knowledge: C/C++ programming,​ GUI programming,​ GTK Desired knowledge: C/C++ programming,​ GUI programming,​ GTK
  
-=====Improve the pdftoraster and bannertopdf filters to not need copying Poppler source code or unstable APIs=====+=====14. Improve the pdftoraster and bannertopdf filters to not need copying Poppler source code or unstable APIs=====
  
 The cups-filters project at OpenPrinting (included in all Linux distributions using CUPS 1.6.x or newer) provides the filters needed to convert the print job output of desktop applications (usually PDF) into the printer'​s native language or into the universal CUPS/​PWG-Raster format as input for a separate printer driver. It also provides the pdftopdf filter to apply page management (N pages per sheet, selected pages, even/odd pages for manual duplex, mirror for iron-on sheets, ...) to the PDF data stream. The cups-filters project at OpenPrinting (included in all Linux distributions using CUPS 1.6.x or newer) provides the filters needed to convert the print job output of desktop applications (usually PDF) into the printer'​s native language or into the universal CUPS/​PWG-Raster format as input for a separate printer driver. It also provides the pdftopdf filter to apply page management (N pages per sheet, selected pages, even/odd pages for manual duplex, mirror for iron-on sheets, ...) to the PDF data stream.
Line 224: Line 235:
  
 Code License: MIT Code License: MIT
-=====Foomatic:​ Generating CUPS PPD generator (/​usr/​share/​cups/​drv/​*.drv files) from Foomatic data=====+=====15. Foomatic: Generating CUPS PPD generator (/​usr/​share/​cups/​drv/​*.drv files) from Foomatic data=====
  
 CUPS has two mechanisms for on-the-fly-PPD generation to avoid the wasting of disk space by thousands of uncompressed (or slightly compressed) PPD files. One is to put an executable file into the /​usr/​lib/​cups/​driver/​ directory which lists and generates PPD files on request, the other is using *.drv files in /​usr/​share/​cups/​drv,​ which contain the data for the PPDs in a simpler and more compact format. CUPS has two mechanisms for on-the-fly-PPD generation to avoid the wasting of disk space by thousands of uncompressed (or slightly compressed) PPD files. One is to put an executable file into the /​usr/​lib/​cups/​driver/​ directory which lists and generates PPD files on request, the other is using *.drv files in /​usr/​share/​cups/​drv,​ which contain the data for the PPDs in a simpler and more compact format.
Line 239: Line 250:
  
 Code License: GPL Code License: GPL
-=====Get the cairo color management code upstream=====+=====16. Get the cairo color management code upstream=====
  
 Adrian Johnson did a lot of the work needed to make cairo color managed. Finishing this work and getting the code upstream would allow us to simplify a lot of applications that use cairo. See [[http://​cgit.freedesktop.org/​%7Eajohnson/​cairo/​log/?​h=color-space|http://​cgit.freedesktop.org/​~ajohnson/​cairo/​log/?​h=color-space]] for the branch. Adrian has also patched Inkscape to use the new features, and that needs cleaning up and pushing upstream [[http://​cgit.freedesktop.org/​%7Eajohnson/​inkscape/​log/?​h=color-space|http://​cgit.freedesktop.org/​~ajohnson/​inkscape/​log/?​h=color-space]] Also see [[http://​lists.cairographics.org/​archives/​cairo/​2012-July/​023353.html|http://​lists.cairographics.org/​archives/​cairo/​2012-July/​023353.html]] and [[https://​mail.gnome.org/​archives/​gimp-developer-list/​2012-August/​msg00084.html|https://​mail.gnome.org/​archives/​gimp-developer-list/​2012-August/​msg00084.html]] for more details. Adrian Johnson did a lot of the work needed to make cairo color managed. Finishing this work and getting the code upstream would allow us to simplify a lot of applications that use cairo. See [[http://​cgit.freedesktop.org/​%7Eajohnson/​cairo/​log/?​h=color-space|http://​cgit.freedesktop.org/​~ajohnson/​cairo/​log/?​h=color-space]] for the branch. Adrian has also patched Inkscape to use the new features, and that needs cleaning up and pushing upstream [[http://​cgit.freedesktop.org/​%7Eajohnson/​inkscape/​log/?​h=color-space|http://​cgit.freedesktop.org/​~ajohnson/​inkscape/​log/?​h=color-space]] Also see [[http://​lists.cairographics.org/​archives/​cairo/​2012-July/​023353.html|http://​lists.cairographics.org/​archives/​cairo/​2012-July/​023353.html]] and [[https://​mail.gnome.org/​archives/​gimp-developer-list/​2012-August/​msg00084.html|https://​mail.gnome.org/​archives/​gimp-developer-list/​2012-August/​msg00084.html]] for more details.
Line 248: Line 259:
  
 Contact: Richard Hughes (hughsient at gmail dot com) Contact: Richard Hughes (hughsient at gmail dot com)
-=====Add printer output backends to MuPDF=====+=====17. Add printer output backends to MuPDF=====
  
 MuPDF is a lightweight PDF renderer made by Artifex, the company behind Ghostscript. In contrary to Ghostscript,​ MuPDF is a pure PDF renderer. It does not contain a PostScript interpreter nor parts of it are written in PostScript. This makes it smaller, faster, and less resource-consuming,​ the ideal solution for mobile devices like tablets or smartphones. MuPDF is a lightweight PDF renderer made by Artifex, the company behind Ghostscript. In contrary to Ghostscript,​ MuPDF is a pure PDF renderer. It does not contain a PostScript interpreter nor parts of it are written in PostScript. This makes it smaller, faster, and less resource-consuming,​ the ideal solution for mobile devices like tablets or smartphones.
gsoc/google-summer-code-2018-openprinting-projects.1517408089.txt.gz · Last modified: 2018/01/31 14:14 by Aveekb