This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
gsoc:google-summer-code-2020-openprinting-projects [2020/03/12 13:55] michaelrsweet [General Printer Application SDK] |
gsoc:google-summer-code-2020-openprinting-projects [2020/04/17 18:08] (current) till |
||
---|---|---|---|
Line 22: | Line 22: | ||
Please see the [[https://openprinting.github.io/OpenPrinting-News-November-2019/#future-work-of-openprinting-printerscanner-applications-and-ipp-system-service|plans for our near future work]] to get an overview of our development direction and architecture changes. | Please see the [[https://openprinting.github.io/OpenPrinting-News-November-2019/#future-work-of-openprinting-printerscanner-applications-and-ipp-system-service|plans for our near future work]] to get an overview of our development direction and architecture changes. | ||
- | =====Linux GUI application (can be part of GNOME printer tool) to admin MF devices using IPP System Service.===== | + | =====Linux GUI application (can be part of GNOME printer tool) to admin MF devices using IPP System Service===== |
Most network printers have a web interface which allows to configure the printer from any computer in the network using a web browser. Advantage is that no printer-model-specific software needs to be installed on the computer in order to configure a printer, and one has no dependency on certain supported operating systems. One can even configure printers using a smartphone. | Most network printers have a web interface which allows to configure the printer from any computer in the network using a web browser. Advantage is that no printer-model-specific software needs to be installed on the computer in order to configure a printer, and one has no dependency on certain supported operating systems. One can even configure printers using a smartphone. | ||
Line 64: | Line 64: | ||
Desired knowledge: C programming, DNS-SD, IPP | Desired knowledge: C programming, DNS-SD, IPP | ||
- | Code License: Apache 2.0 | + | Code License: Apache 2.0 + (L)GPL2 Exception (same as CUPS and PAPPL) |
=====SANE module for IPP driverless scanning===== | =====SANE module for IPP driverless scanning===== | ||
Line 91: | Line 91: | ||
* ippeveprinter (part of [[https://www.cups.org/|CUPS]] for prototyping and supporting existing PostScript printers | * ippeveprinter (part of [[https://www.cups.org/|CUPS]] for prototyping and supporting existing PostScript printers | ||
- | * Printer Application framework from the Google Summer of Code 2019 by Dheeraj Yadav for classic (filters and PPD files) printer drivers ([[https://github.com/dheeraj135/Printer-Applications-Framework|The framework itself]], [[https://github.com/dheeraj135/Printer-Application-Snaps|Snapping the Printer Application]]) | + | * Printer Application framework from the Google Summer of Code 2019 by Dheeraj Yadav for classic (filters and PPD files) printer drivers ([[https://github.com/OpenPrinting/printer-application-framework|The framework itself]], [[https://github.com/dheeraj135/Printer-Application-Snaps|Snapping the Printer Application]]) |
* [[https://www.msweet.org/lprint|LPrint]] for supporting DYMO and ZPL label printers | * [[https://www.msweet.org/lprint|LPrint]] for supporting DYMO and ZPL label printers | ||
* [[https://github.com/michaelrsweet/pappl|PAPPL]], a Printer Application framework/library based on ippeveprinter and LPrint | * [[https://github.com/michaelrsweet/pappl|PAPPL]], a Printer Application framework/library based on ippeveprinter and LPrint | ||
Line 108: | Line 108: | ||
Desired knowledge: C programming, DNS-SD, IPP | Desired knowledge: C programming, DNS-SD, IPP | ||
- | Code License: Apache 2.0, MIT | + | Code License: Apache 2.0 + (L)GPL2 Exception (same as CUPS and PAPPL) |
=====Make Printer Applications configurable===== | =====Make Printer Applications configurable===== | ||
Line 122: | Line 122: | ||
Curremtly, as the IPP System Service standard is still very new and there are no client GUIs implemented yet, IPP printers (and CUPS) use web interfaces, accessible with a web browser, for configuration. Not that comfortable and fast, and also very different from vendor to vendor. Also this could be implemented in Printer Applications to make them configurable. | Curremtly, as the IPP System Service standard is still very new and there are no client GUIs implemented yet, IPP printers (and CUPS) use web interfaces, accessible with a web browser, for configuration. Not that comfortable and fast, and also very different from vendor to vendor. Also this could be implemented in Printer Applications to make them configurable. | ||
- | The student's task is to create libraries, utilities, contribute to the [[https://github.com/dheeraj135/Printer-Applications-Framework|Printer Application framework]] to get configurability in the Printer Applications. One could perhaps have two students, one for IPP System Service and one for a web interface. | + | The student's task is to create libraries, utilities, contribute to the [[https://github.com/OpenPrinting/printer-application-framework|Printer Application framework]] to get configurability in the Printer Applications. One could perhaps have two students, one for IPP System Service and one for a web interface. |
Mentors: Dheeraj Yadav (dhirajyadav135 at gmail dot com), Michael Sweet, author of CUPS (msweet at msweet dot org), Ira McDonald, OpenPrinting (blueroofmusic at gmail dot com), Smith Kennedy, HP (smith kennedy at hp dot com), Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), TBD | Mentors: Dheeraj Yadav (dhirajyadav135 at gmail dot com), Michael Sweet, author of CUPS (msweet at msweet dot org), Ira McDonald, OpenPrinting (blueroofmusic at gmail dot com), Smith Kennedy, HP (smith kennedy at hp dot com), Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), TBD | ||
Line 128: | Line 128: | ||
Desired knowledge: C programming, DNS-SD, IPP | Desired knowledge: C programming, DNS-SD, IPP | ||
- | Code License: Apache 2.0, MIT | + | Code License: Apache 2.0 + (L)GPL2 Exception (same as CUPS and PAPPL) |
=====Turn cups-browsed into a Printer Application===== | =====Turn cups-browsed into a Printer Application===== | ||
Line 144: | Line 144: | ||
Desired knowledge: C programming, IPP, CUPS | Desired knowledge: C programming, IPP, CUPS | ||
- | Code license: LGPL-2.1+ | + | Code license: Apache 2.0 + (L)GPL2 Exception (same as CUPS and PAPPL) |
===== Speed/scaling optimization of cups-browsed===== | ===== Speed/scaling optimization of cups-browsed===== | ||
Line 160: | Line 160: | ||
Desired knowledge: C programming, IPP, CUPS | Desired knowledge: C programming, IPP, CUPS | ||
- | Code license: LGPL-2.1+ | + | Code license: Apache 2.0 + (L)GPL2 Exception (same as CUPS and PAPPL) |
=====Wrapping proprietary printer drivers into a Printer Application===== | =====Wrapping proprietary printer drivers into a Printer Application===== | ||
Line 170: | Line 170: | ||
Proprietary, closed-source printer drivers come as binary RPM or DEB files, or tarballs, or even self-extracting. They require a certain, in classic systems usually available, file system structure to put their files in during installation, and they also need some libraries which are common in classic systems. In a snap you do not have this "standard" file system structure and the binaries with hard-coded paths in them choke on that. | Proprietary, closed-source printer drivers come as binary RPM or DEB files, or tarballs, or even self-extracting. They require a certain, in classic systems usually available, file system structure to put their files in during installation, and they also need some libraries which are common in classic systems. In a snap you do not have this "standard" file system structure and the binaries with hard-coded paths in them choke on that. | ||
- | A solution is to take the [[https://github.com/dheeraj135/Printer-Applications-Framework|Printer Application framework]] and add a chroot to it. The proprietary driver will get installed in that chroot then. | + | A solution is to take the [[https://github.com/OpenPrinting/printer-application-framework|Printer Application framework]] and add a chroot to it. The proprietary driver will get installed in that chroot then. |
The student's task is to add this functionality to the Printer Application framework and create an easy way for users to install proprietary printer drivers into that chroot-equipped Printer Application. | The student's task is to add this functionality to the Printer Application framework and create an easy way for users to install proprietary printer drivers into that chroot-equipped Printer Application. | ||
Line 178: | Line 178: | ||
Desired knowledge: C programming, IPP | Desired knowledge: C programming, IPP | ||
- | Code license: (L)GPL 2+, Apache 2.0, MIT | + | Code license: Apache 2.0 + (L)GPL2 Exception (same as CUPS and PAPPL) |
=====Gutenprint Printer Application===== | =====Gutenprint Printer Application===== | ||
Line 186: | Line 186: | ||
Currently, it supports printing either the classic CUPS way, by a PPD generator and a filter or by a plug-in for the GIMP. It should be rather easy to add more ways of using the core driver functionality, as this functionality is in a library, all capability information of the supported printers, dithering and color correction algorithms, ... | Currently, it supports printing either the classic CUPS way, by a PPD generator and a filter or by a plug-in for the GIMP. It should be rather easy to add more ways of using the core driver functionality, as this functionality is in a library, all capability information of the supported printers, dithering and color correction algorithms, ... | ||
- | The new mode of using this library should be a new Printer Application which will be the student´s task to create. The Gutenprint printer application should wrap the Gutenprint library and so support all the printers the library supports. The basic structure can be like the [[https://github.com/dheeraj135/Printer-Applications-Framework|Printer Application framework]] but here we do not want to create the (deprecated) PPD files but instead, let the IPP server link directly with the library and serve out the printer capability information on client's get-printer-attributes requests. Also see Michael Sweet's work on [[https://github.com/michaelrsweet/pappl|PAPPL]]. | + | The new mode of using this library should be a new Printer Application which will be the student´s task to create. The Gutenprint printer application should wrap the Gutenprint library and so support all the printers the library supports. The basic structure can be like the [[https://github.com/OpenPrinting/printer-application-framework|Printer Application framework]] but here we do not want to create the (deprecated) PPD files but instead, let the IPP server link directly with the library and serve out the printer capability information on client's get-printer-attributes requests. Also see Michael Sweet's work on [[https://github.com/michaelrsweet/pappl|PAPPL]]. |
Mentors: Dheeraj Yadav (dhirajyadav135 at gmail dot com), Michael Sweet, author of CUPS/LPrint/PAPPL and original creator of Gutenprint (msweet at msweet dot org), Ira McDonald, OpenPrinting (blueroofmusic at gmail dot com), Smith Kennedy, HP (smith kennedy at hp dot com), Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Gutenprint developers, TBD | Mentors: Dheeraj Yadav (dhirajyadav135 at gmail dot com), Michael Sweet, author of CUPS/LPrint/PAPPL and original creator of Gutenprint (msweet at msweet dot org), Ira McDonald, OpenPrinting (blueroofmusic at gmail dot com), Smith Kennedy, HP (smith kennedy at hp dot com), Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Gutenprint developers, TBD | ||
Line 192: | Line 192: | ||
Desired knowledge: C programming, IPP | Desired knowledge: C programming, IPP | ||
- | Code license: (L)GPL 2+, Apache 2.0, MIT | + | Code license: (L)GPL 2+, Apache 2.0 + (L)GPL2 Exception (same as CUPS and PAPPL), MIT |
=====Support for IPP Fax Out===== | =====Support for IPP Fax Out===== | ||
Line 212: | Line 212: | ||
Desired knowledge: %%C/C++%% programming, CUPS, IPP | Desired knowledge: %%C/C++%% programming, CUPS, IPP | ||
- | Licenses: MIT, Apache, GPL 2+ | + | Licenses: MIT, Apache 2.0 + (L)GPL2 Exception (same as CUPS and PAPPL), GPL 2+ |
=====Turn the scp-dbus-service methods - GetBestDrivers and MissingExecutables - of system-config-printer into C===== | =====Turn the scp-dbus-service methods - GetBestDrivers and MissingExecutables - of system-config-printer into C===== | ||
Line 249: | Line 249: | ||
Desired knowledge: C programming, CUPS | Desired knowledge: C programming, CUPS | ||
- | Code license: (L)GPL 2+, Apache 2.0, MIT | + | Code license: (L)GPL 2+, Apache 2.0 + (L)GPL2 Exception (same as CUPS and PAPPL), MIT |
=====Real roll paper support in cups-filters===== | =====Real roll paper support in cups-filters===== | ||
Line 269: | Line 269: | ||
Desired knowledge: C programming, IPP | Desired knowledge: C programming, IPP | ||
- | Code license: (L)GPL 2+, Apache 2.0, MIT | + | Code license: Apache 2.0 + (L)GPL2 Exception (same as CUPS and PAPPL) |
=====Add printer output backends to MuPDF===== | =====Add printer output backends to MuPDF===== |