-Please see the plans for our near future work to get an overview of our development direction and architecture changes. +Please see the plans for our near future work to get an overview of our development direction and architecture changes.
## GSoC 2020 Students @@ -150,4 +150,4 @@ We are looking into finishing up CPDB after GSoC. - **Mentors:** Michael Sweet, Alexander Pevzner - **Status:** WITHDRAWN (shortly after first evaluation) -We replaced this project by a 2-student LFMP project ([details](/OpenPrinting-News-September-2020/#linux-foundation-mentorship-program)). +We replaced this project by a 2-student LFMP project ([details](/OpenPrinting-News-September-2020#linux-foundation-mentorship-program)). diff --git a/contents/gsoc/gsoc2021.md b/contents/gsoc/gsoc2021.md index cb2e522f..008c7676 100644 --- a/contents/gsoc/gsoc2021.md +++ b/contents/gsoc/gsoc2021.md @@ -47,7 +47,7 @@ The participation of the Linux Foundation in the Google Summer of Code is organi-Please see the plans for our near future work to get an overview of our development direction and architecture changes. +Please see the plans for our near future work to get an overview of our development direction and architecture changes.
## GSoC 2021 Students diff --git a/contents/gsoc/gsoc2022.md b/contents/gsoc/gsoc2022.md index e96ca314..8588a8e5 100644 --- a/contents/gsoc/gsoc2022.md +++ b/contents/gsoc/gsoc2022.md @@ -47,5 +47,5 @@ The participation of the Linux Foundation in the Google Summer of Code is organi-Please see the plans for our near future work to get an overview of our development direction and architecture changes. +Please see the plans for our near future work to get an overview of our development direction and architecture changes.
diff --git a/contents/gsoc/gsoc2023.md b/contents/gsoc/gsoc2023.md index 180ffdfb..ff6bbd78 100644 --- a/contents/gsoc/gsoc2023.md +++ b/contents/gsoc/gsoc2023.md @@ -47,5 +47,5 @@ The participation of the Linux Foundation in the Google Summer of Code is organi-Please see the plans for our near future work to get an overview of our development direction and architecture changes. +Please see the plans for our near future work to get an overview of our development direction and architecture changes.
diff --git a/contents/gsoc/gsoc2024.md b/contents/gsoc/gsoc2024.md index 671fe443..156968a1 100644 --- a/contents/gsoc/gsoc2024.md +++ b/contents/gsoc/gsoc2024.md @@ -47,5 +47,5 @@ The participation of the Linux Foundation in the Google Summer of Code is organi-Please see the plans for our near future work to get an overview of our development direction and architecture changes. +Please see the plans for our near future work to get an overview of our development direction and architecture changes.
diff --git a/contents/gsoc/gsoc2025.md b/contents/gsoc/gsoc2025.md index 48c8f7b6..a447d9e9 100644 --- a/contents/gsoc/gsoc2025.md +++ b/contents/gsoc/gsoc2025.md @@ -47,5 +47,5 @@ The participation of the Linux Foundation in the Google Summer of Code is organi-Please see the plans for our near future work to get an overview of our development direction and architecture changes. +Please see the plans for our near future work to get an overview of our development direction and architecture changes.
diff --git a/contents/gsoc/gsoc2026.md b/contents/gsoc/gsoc2026.md index 2a4afc68..810e1f4e 100644 --- a/contents/gsoc/gsoc2026.md +++ b/contents/gsoc/gsoc2026.md @@ -47,5 +47,5 @@ The participation of the Linux Foundation in the Google Summer of Code is organi-Please see the plans for our near future work to get an overview of our development direction and architecture changes. +Please see the plans for our near future work to get an overview of our development direction and architecture changes.
diff --git a/contents/pages/achievements.md b/contents/pages/achievements.md index f0819ad3..c4b139e7 100644 --- a/contents/pages/achievements.md +++ b/contents/pages/achievements.md @@ -91,7 +91,7 @@ Flatpaked desktop applications communicate with the host system/the outside worl In contrary to Snap's interfaces the Portal is not an AppArmor permission to access a certain part of the host system (or another Snap) or a mount of certain parts of the host's (or another Snap's) file system, but instead, it is a D-Bus API which provides **common GUI dialogs** for common tasks (choose file, save file, **print**, ...), where the dialog comes from the desktop environment (GNOME or KDE) and so is the one of the desktop environment, a *common* dialog and is de-coupled from the user application via the D-Bus interface. So when using the GNOME desktop and printing from a flatpaked KDE app we should see GNOME's print dialog. -See more details in my "[Flatpak and Printing](/OpenPrinting-News-March-2022/#flatpak-and-printing)" article. +See more details in my "[Flatpak and Printing](/OpenPrinting-News-March-2022#flatpak-and-printing)" article. ## Grand Unified Ghostscript: CUPS support, third-party built-in drivers ... @@ -203,7 +203,7 @@ CUPS has a [new home page](/cups/) now and what was formerly our fork is now the So today Apple CUPS is the version of CUPS that is provided with macOS® and iOS® while OpenPrinting CUPS is the version of CUPS being further developed by OpenPrinting for all operating systems. -This way we could establish a [roadmap](/OpenPrinting-News-October-2021/#cups) for upcoming CUPS releases, especially in the end of 2023 releasing CUPS 3.x with the NEW Architecture of handling printers IPP-only without PPDs and classic drivers. Michael has presented development plans on [Linux Plumbers 2021](/OpenPrinting-News-October-2021/#openprinting-micro-conference-on-the-linux-plumbers-2021) and the [OpenPrinting Summt/PWG Meeting 2022](/OpenPrinting-News-June-2022/#openprinting-summitpwg-meeting). +This way we could establish a [roadmap](/OpenPrinting-News-October-2021#cups) for upcoming CUPS releases, especially in the end of 2023 releasing CUPS 3.x with the NEW Architecture of handling printers IPP-only without PPDs and classic drivers. Michael has presented development plans on [Linux Plumbers 2021](/OpenPrinting-News-October-2021#openprinting-micro-conference-on-the-linux-plumbers-2021) and the [OpenPrinting Summt/PWG Meeting 2022](/OpenPrinting-News-June-2022#openprinting-summitpwg-meeting). ## The CUPS Snap @@ -215,7 +215,7 @@ Snap has also a rigorous security system, encapsulating the application's file s My work on the CUPS Snap got motivated by Canonical's plans of creating an all-Snap Linux distribution, not using Debian packages at all any more. So everything, including the printing system (and also the printer drivers) had to be in Snaps. -Fortunately, Snap was so well-designed that it allows also packaging command line tools and even system daemons ([Flatpak](https://flatpak.org/) for example only packages GUI applications, see [my blog post](/OpenPrinting-News-March-2022/#flatpak-and-printing)) and so I could snap right away. +Fortunately, Snap was so well-designed that it allows also packaging command line tools and even system daemons ([Flatpak](https://flatpak.org/) for example only packages GUI applications, see [my blog post](/OpenPrinting-News-March-2022#flatpak-and-printing)) and so I could snap right away. But there were a lot of challenges in these 5 years until the CUPS Snap got into production use for the first time: - [How to add printer drivers](https://forum.snapcraft.io/t/snapping-cups-drivers-as-plugins) (note that Michael Sweet brought in the solution with the Printer Applications only on the [OpenPrinting Summit 2018](https://pwg.org/chair/meeting-info/may-2018-sunnyvale.html), [slides](https://ftp.pwg.org/pub/pwg/liaison/openprinting/presentations/cups-plenary-may-18.pdf)) @@ -270,7 +270,7 @@ But now one can think why did we rush the classic printer drivers into Printer A And all the talk about an all-Snap Ubuntu distribution ... -Yes, I have transferred [all free software printer drivers](/OpenPrinting-News-November-2021/#practically-all-free-printer-drivers-in-printer-applications) which come with Debian (and so also with Ubuntu) into [4 driver-retro-fitting Printer Applications](https://snapcraft.io/search?q=OpenPrinting). Only driver not transferred (yet) is the Braille printer driver included in cups-filters (but this is in the works now). +Yes, I have transferred [all free software printer drivers](/OpenPrinting-News-November-2021#practically-all-free-printer-drivers-in-printer-applications) which come with Debian (and so also with Ubuntu) into [4 driver-retro-fitting Printer Applications](https://snapcraft.io/search?q=OpenPrinting). Only driver not transferred (yet) is the Braille printer driver included in cups-filters (but this is in the works now). But do not think I have all these drivers rewritten into filter functions and turned their PPD file generators into `get-printer-attributes` IPP responders. No, I would never do it, as such code changes one has to test, and how should I test the drivers for ~10000 printer models without having the actual printers, but having a hall with 10000 printers inside one would also need a lot of people to do the testing. So the way to go is "do not touch the running code" and encapsulate it in Printer Applications. @@ -293,7 +293,7 @@ And Michael Sweet has also made a Printer Application for label printers, based - [**LPrint**](https://github.com/michaelrsweet/lprint) ([Snap Store](https://snapcraft.io/lprint)): Supports Dymo LabelWriter and Zebra ZPL label printers, with all label-printer-typical options: Label modes, tear-off offsets, media tracking, media top offset, print darkness, resolution, roll selection, speed, ... Note that this is a native Printer Application. It does not simply encapsulate the CUPS filters and PPD files which come with CUPS. -And there is also a [Legacy Printer Application](/OpenPrinting-News-November-2021/#your-driver-not-in-a-printer-application---the-legacy-printer-application) (included in the pappl-retrofit) project which, when classically installed (do not try to snap it) sees all classically installed CUPS drivers and makes them available in a Printer Application. This is especially useful for proprietary drivers. +And there is also a [Legacy Printer Application](/OpenPrinting-News-November-2021#your-driver-not-in-a-printer-application---the-legacy-printer-application) (included in the pappl-retrofit) project which, when classically installed (do not try to snap it) sees all classically installed CUPS drivers and makes them available in a Printer Application. This is especially useful for proprietary drivers. So we will not lose the support for any of the currently supported printers when switching over into the PPD-less, all-IPP New Architecture ... Now the third generation of printing with free software can start ... @@ -328,7 +328,7 @@ Due to this there is no known operating system using ippusbxd any more. Therefor Linux distributions use ipp-usb and with this driverless printing and scanning on USB-connected devices generally works. -Only problem is that this connection type has many device-specific quirks and Alexander is following the reports and trying to fix as many as possible, producing an everytime longer list of quirk workarounds in ipp-usb's code. Especially there are also devices which [support the IPP-over-USB USB protocol but not driverless printing and scanning](/OpenPrinting-News-May-2022/#ipp-usb-printer-does-ipp-over-usb-but-not-driverless-ipp-and-driver-vs-driverless). +Only problem is that this connection type has many device-specific quirks and Alexander is following the reports and trying to fix as many as possible, producing an everytime longer list of quirk workarounds in ipp-usb's code. Especially there are also devices which [support the IPP-over-USB USB protocol but not driverless printing and scanning](/OpenPrinting-News-May-2022#ipp-usb-printer-does-ipp-over-usb-but-not-driverless-ipp-and-driver-vs-driverless). ## "localhost" support in Avahi @@ -348,7 +348,7 @@ Most modern printers do driverless IPP and many of them are multi-function devic Driverless scanning means, as also for driverless printing, not needing a driver, where a driver is any type of device-model-specific software or data. And this means that the device has to use standard protocols, for which client software can easily be made part of the operating system. The standard here is AirScan, Apple's extension of AirPrint so that the complete multi-function device can be used with an iPhone or iPad. The underlying communication protocols are eSCL (an HTTP-based protocol, the more common one) and [WSD](https://en.wikipedia.org/wiki/Web_Services_for_Devices) (Web Services for Devices, from Microsoft), one of the two the device has to support in order to fulfill the standard. -Back in 2019 the situation was really inSANE, there was no SANE backend supporting eSCL or WSD, but "between the years" 2019 and 2020, between Christmas and New Year I was reading great news on the SANE mailing list: [Two independently developed backends for eSCL support](/OpenPrinting-News-January-2020/#driverless-scanning) got announced! +Back in 2019 the situation was really inSANE, there was no SANE backend supporting eSCL or WSD, but "between the years" 2019 and 2020, between Christmas and New Year I was reading great news on the SANE mailing list: [Two independently developed backends for eSCL support](/OpenPrinting-News-January-2020#driverless-scanning) got announced! These are “[escl](https://gitlab.com/sane-project/backends/merge_requests/242)” (small, light, basic, already included in SANE 1.0.29) and “[airscan](https://github.com/alexpevzner/sane-airscan)” (complete functionality). And there is also an AirScan server, [AirSane](https://github.com/SimulPiscator/AirSane), which is a SANE frontend which emulates an AirScan (eSCL) scanner scanning on any physical scanner supported by SANE, so it is nothing more than an early Scanner Application. @@ -356,12 +356,12 @@ After that I worked a lot together with the authors to make it all working on my Both "escl" (as part of sane-backends) and "airsane" (separate package) made it into all major Linux distributions and so the scanners in thousands of multi-function printers are working under Linux now. -And the specs of eSCL got finally [published by Mopria](/OpenPrinting-News-May-2021/#driverless-scanning) in May 2021! +And the specs of eSCL got finally [published by Mopria](/OpenPrinting-News-May-2021#driverless-scanning) in May 2021! ## The OpenPrinting web site -[From the March 2022 New](/OpenPrinting-News-March-2022/#openprinting-web-site) +[From the March 2022 New](/OpenPrinting-News-March-2022#openprinting-web-site) The part of the web site for looking up (legacy, non-driverless) printers and drivers (the [OpenPrinting database web app](https://github.com/OpenPrinting/foomatic-db-webapp/) has moved to a new server at Oregon State University Open Source Lab ([OSUOSL](https://osuosl.org)). As the old server did not receive a system upgrade for many years there were a lot of problems with the compatibility of the code (SQL and PHP) with the new, modern server. @@ -371,4 +371,4 @@ The UI of the web app did not change, but there are changes in the internal func Also the `query.php` script for machine queries got fixed and is fully working again. -This is especially important as we want to add a [query service for printer setup tools](/OpenPrinting-News-November-2021/#printer-querying-on-the-openprinting-web-server) to find the correct Printer Application(s) for a printer based on its device ID. This is currently [in the works](/current/#printer-application-look-up-via-the-openprinting-web-site). +This is especially important as we want to add a [query service for printer setup tools](/OpenPrinting-News-November-2021#printer-querying-on-the-openprinting-web-server) to find the correct Printer Application(s) for a printer based on its device ID. This is currently [in the works](/current#printer-application-look-up-via-the-openprinting-web-site). diff --git a/contents/pages/current.md b/contents/pages/current.md index 45881e06..6bc2b4f6 100644 --- a/contents/pages/current.md +++ b/contents/pages/current.md @@ -19,7 +19,7 @@ Also there has been a lot of development of the systems and environments for whi In addition we need to improve on things like CI and automated testing of our code. There will also be some work on documentation needed, especially for the APIs of our libraries. -For all this we are always in search for contributors of the community. Therefore we are once reaching out by presenting on several conferences, like the OpenPrinting micro-conferences on the Linux Plumbers Conference ([2019](/OpenPrinting-Microconference-on-Linux-Plumbers-Conference-2019/), [2020](/OpenPrinting-News-September-2020/#openprinting-microconference-on-linux-plumbers-conference-2020), [2021](/OpenPrinting-News-October-2021/#openprinting-micro-conference-on-the-linux-plumbers-2021), [2022](/OpenPrinting-News-September-2022/#openprinting-micro-conference-on-the-linux-plumbers-2022)), [Linux App Summit](/OpenPrinting-News-Flash-OpenPrinting-and-Ubuntu-on-the-Linux-App-Summit-2022/), [GUADEC](/OpenPrinting-News-July-2022/#guadec-2022), ..., and also internet platforms, like [Ubuntu on Air](https://ubuntu.com/blog/ubuntuonair) ([YouTube channel](https://www.youtube.com/UbuntuOnAir)). And second, we are participating in the [Google Summer of Code](http://g.co/gsoc) (GSoC) every year, having 5-8 3-month projects each year and some of the contributors continue to work with us voluntarily. +For all this we are always in search for contributors of the community. Therefore we are once reaching out by presenting on several conferences, like the OpenPrinting micro-conferences on the Linux Plumbers Conference ([2019](/OpenPrinting-Microconference-on-Linux-Plumbers-Conference-2019), [2020](/OpenPrinting-News-September-2020#openprinting-microconference-on-linux-plumbers-conference-2020), [2021](/OpenPrinting-News-October-2021#openprinting-micro-conference-on-the-linux-plumbers-2021), [2022](/OpenPrinting-News-September-2022#openprinting-micro-conference-on-the-linux-plumbers-2022)), [Linux App Summit](/OpenPrinting-News-Flash-OpenPrinting-and-Ubuntu-on-the-Linux-App-Summit-2022), [GUADEC](/OpenPrinting-News-July-2022#guadec-2022), ..., and also internet platforms, like [Ubuntu on Air](https://ubuntu.com/blog/ubuntuonair) ([YouTube channel](https://www.youtube.com/UbuntuOnAir)). And second, we are participating in the [Google Summer of Code](http://g.co/gsoc) (GSoC) every year, having 5-8 3-month projects each year and some of the contributors continue to work with us voluntarily. I am leading OpenPrinting as my day job, thanks to my full-time employment at Canonical, the company behind Ubuntu, right for doing that. Thanks a lot to Canonical for supporting printing on Linux and other POSIX-style operating systems this way. @@ -51,7 +51,7 @@ For 22 years now, since its 1.0 launch, [CUPS](#cups) uses principally the same We especially want to get rid of the PPD files, because ... - In 1984 Adobe stopped development on PPDs (and also PostScript), so we started with an obsolete (but useful) format right away. -- In 2006 we [abolished PostScript as print job format](/achievements/#pdf-instead-of-postscript-as-standard-print-job-format) and replaced it by PDF. +- In 2006 we [abolished PostScript as print job format](/achievements#pdf-instead-of-postscript-as-standard-print-job-format) and replaced it by PDF. - PPD files can represent user-settable options only as enumerated choice or boolean. Ugly workarounds for things like passwords or color adjustment are needed, implemented in [CUPS](/cups/doc/spec-ppd.html) and [Foomatic](https://openprinting.org/printers). As CUPS was always following the standards of the Printer Working Group ([PWG](http://www.pwg.org/)), a consortium of printer, OS, general IT, ... industry with which OpenPrinting works closely together and with Michael Sweet (author of CUPS) actively developing on the Internet Printing Protocol (IPP) for decades, we follow them even more to create an all-IPP CUPS without the legacy of PPD files and driver filters. @@ -90,9 +90,9 @@ This way the New Architecture also helps printer/scanner manufacturers who for s ## CUPS CUPS is the standard print environment in Linux and other POSIX-style oprating systems for more than 20 years now.It is the daemon managing print queues with appropriate printer drivers, receiving, queueing, spooling, and printing print jobs from applications, sharing print queues on the netwok, ... -With [CUPS having moved from Apple to OpenPrinting](/achievements/#cups-upstream-home-is-openprinting-now), developemnt, especially of new fetures, has resumed. We do annual feature releases again and bug fix releases as needed inbetween. +With [CUPS having moved from Apple to OpenPrinting](/achievements#cups-upstream-home-is-openprinting-now), developemnt, especially of new fetures, has resumed. We do annual feature releases again and bug fix releases as needed inbetween. -Michael Sweet has presented a [roadmap](OpenPrinting-News-October-2021/#cups) for the further development o CUPS on the [Linux Plumbers Conference 2021](/OpenPrinting-News-October-2021/#openprinting-micro-conference-on-the-linux-plumbers-2021) ([slides](https://linuxplumbersconf.org/event/11/contributions/1023/attachments/737/1443/lpc-cups-2021.pdf)) and on the [OpenPrinting Summit/PWG meeting 2022](/OpenPrinting-News-June-2022/#openprinting-summitpwg-meeting) ([slides](https://ftp.pwg.org/pub/pwg/liaison/openprinting/presentations/cups-plenary-may-2022.pdf)). +Michael Sweet has presented a [roadmap](OpenPrinting-News-October-2021/#cups) for the further development o CUPS on the [Linux Plumbers Conference 2021](/OpenPrinting-News-October-2021#openprinting-micro-conference-on-the-linux-plumbers-2021) ([slides](https://linuxplumbersconf.org/event/11/contributions/1023/attachments/737/1443/lpc-cups-2021.pdf)) and on the [OpenPrinting Summit/PWG meeting 2022](/OpenPrinting-News-June-2022#openprinting-summitpwg-meeting) ([slides](https://ftp.pwg.org/pub/pwg/liaison/openprinting/presentations/cups-plenary-may-2022.pdf)). ### CUPS 2.5.x Its development is supposed to start soon and it is scheduled to be released towards the end of 2022. This is the last series in the 2.x generation, still supporting the current architecture based on print queues with PPD files and printer-model-specific filters (aka drivers). @@ -104,7 +104,7 @@ OAuth authentication should replace the more awkward Kerberos which requires roo ### CUPS 3.x The next generation of CUPS implements the New Architecture: Classic printer drivers based on PPDs and printer-model-specific filters are not supported any more. In adition, the CUPS project gets split into various smaller modules: libcups, commands, local server, sharing server. -Release is scheduled for the end of 2023, meaning that until then all related software, like [cups-filters](#cups-filters), [all printer drivers](/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps), [print dialogs](#the-print-dialogs), [printer setup tools](#gnome-control-center---printers-module), ... needs to be prepared for the New Architecture, which is subject of most of our work currently. +Release is scheduled for the end of 2023, meaning that until then all related software, like [cups-filters](#cups-filters), [all printer drivers](/achievements#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps), [print dialogs](#the-print-dialogs), [printer setup tools](#gnome-control-center---printers-module), ... needs to be prepared for the New Architecture, which is subject of most of our work currently. Michael Sweet has already started the development on the new [libcups3](https://github.com/michaelrsweet/libcups). @@ -142,13 +142,13 @@ cups-filters provides filters (to convert data formats for printing) and backend With the replacement of classic printer drivers consisting of PPD files and filter executables by Printer Applications we are also changing the architecture of cups-filters, in the new 2.x generation. -The first time when I mentioned that the architecture of cups-filters needs to get changed and that for this I would start a cups-filters 2.x generation was in [March](/OpenPrinting-News-March-2020/#cups-filters) and [April](/OpenPrinting-News-April-2020/#cups-filters) 2020. +The first time when I mentioned that the architecture of cups-filters needs to get changed and that for this I would start a cups-filters 2.x generation was in [March](/OpenPrinting-News-March-2020#cups-filters) and [April](/OpenPrinting-News-April-2020#cups-filters) 2020. -Development started mid-2020 (2 years ago) with creating a libppd containing all PPD support functionality of libcups (in libcups3 it will get removed) for retro-fitting classic drivers and PostScript PPDs in [July](/OpenPrinting-News-July-2020/#cups-filters). +Development started mid-2020 (2 years ago) with creating a libppd containing all PPD support functionality of libcups (in libcups3 it will get removed) for retro-fitting classic drivers and PostScript PPDs in [July](/OpenPrinting-News-July-2020#cups-filters). -The next step was turning all the individual filter executables into library functions, the filter functions, for being easily used by [Printer Applications](#printer-applications), starting in [August](/OpenPrinting-News-August-2020/#cups-filters) and with this separating the cups-filter 1.x development into its own branch. +The next step was turning all the individual filter executables into library functions, the filter functions, for being easily used by [Printer Applications](#printer-applications), starting in [August](/OpenPrinting-News-August-2020#cups-filters) and with this separating the cups-filter 1.x development into its own branch. -These changes have been all performed already and have been made use of in the [printer-driver-retro-fitting Printer Applications](/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps). +These changes have been all performed already and have been made use of in the [printer-driver-retro-fitting Printer Applications](/achievements#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps). To finalize cups-filters 2.x, the support for PPD files in the filter functions has been completely separated from libcupsfilters and moved into libppd, so that libcupsfilters can be installed without installing libppd and so distributions do not need to keep the PPD-file-retro-fitting library in their standard installation. @@ -158,10 +158,10 @@ Currently we are in the phase of final testing, code clean-up and separating the ## Printer Applications As mentioned earlier Printer Applications are the new format for printer drivers, emulations of IPP printers, to turn the all-IPP New Architecture into reality. They also can be easily put into sandboxed, distribution-independent packages like Snaps, for easy distribution of printer drivers by hardware manufacturers. -We already have [retro-fitted the drivers for ~10000 printer models](/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps), the drivers which are usually available in Linux distributions into 4 Printer Applications and put up those in the Snap Store, to not lose any printer support when switching to the New Architecture, but there are still a lot of things to do. +We already have [retro-fitted the drivers for ~10000 printer models](/achievements#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps), the drivers which are usually available in Linux distributions into 4 Printer Applications and put up those in the Snap Store, to not lose any printer support when switching to the New Architecture, but there are still a lot of things to do. ### PAPPL -Michael Sweet's [PAPPL](https://github.com/michaelrsweet/pappl/) is the base for all currently available Printer Applications, the [4 retro-fitting ones of OpenPrinting](/achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps) and also Michael Sweet's [LPrint](https://github.com/michaelrsweet/lprint) and [hp-printer-app](https://github.com/michaelrsweet/hp-printer-app). +Michael Sweet's [PAPPL](https://github.com/michaelrsweet/pappl/) is the base for all currently available Printer Applications, the [4 retro-fitting ones of OpenPrinting](/achievements#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps) and also Michael Sweet's [LPrint](https://github.com/michaelrsweet/lprint) and [hp-printer-app](https://github.com/michaelrsweet/hp-printer-app). It provides everything which every Printer Application needs: - A daemon which emulates an IPP printer @@ -217,9 +217,9 @@ Our support for Braille embossers is currently provided in the [cups-filters](ht ### Reviving legacy printers under Windows I am working at [Canonical in the Desktop Team](https://discourse.ubuntu.com/t/desktop-team-updates-monday-15th-august-2022/29954/8?u=till-kamppeter), my job being leading the OpenPrinting project, and in the Desktop Team we also have a sub-team working on WSL (Windows Subsystem for Linux), a facility to run Linux applications under Windows. This brought me to the idea of running Printer Applications under WSL, to revive legacy printers which got abandoned by Microsoft and also by their manufacturers. -My first public mention of this idea was during the [virtual release party of Ubuntu 22.04](https://www.youtube.com/watch?v=CBPefa0Ckq8&t=15480s) on the [LAS 2022](/OpenPrinting-News-Flash-OpenPrinting-and-Ubuntu-on-the-Linux-App-Summit-2022/), in [my second part](https://youtu.be/CBPefa0Ckq8?t=17455) praising the WSL team. +My first public mention of this idea was during the [virtual release party of Ubuntu 22.04](https://www.youtube.com/watch?v=CBPefa0Ckq8&t=15480s) on the [LAS 2022](/OpenPrinting-News-Flash-OpenPrinting-and-Ubuntu-on-the-Linux-App-Summit-2022), in [my second part](https://youtu.be/CBPefa0Ckq8?t=17455) praising the WSL team. -The first working implementation of this idea is available now, the first [HOWTO](/wsl-printer-app/) of WSL team member Carlos Nihelton, which he has worked out and written in cooperation with me. Thanks a lot to him! +The first working implementation of this idea is available now, the first [HOWTO](/wsl-printer-app) of WSL team member Carlos Nihelton, which he has worked out and written in cooperation with me. Thanks a lot to him!  @@ -235,7 +235,7 @@ My intention is to present the idea at the [Ubuntu Summit](https://summit.ubuntu ## Scanner Applications Most modern printers do driverless IPP and many of them are multi-function devices with built-in scanner, and these ones do not only driverless printing but also driverless scanning! -We have [Linux support for the underlying scanning protocols eSCL and WSD](/achievements/#sane-backends-for-driverless-scanning---escl-and-wsd-airscan) and the eSCL communication protocol is also [published](/OpenPrinting-News-May-2021/#driverless-scanning), but what we still do not have is PAPPL support for scanning, to easily create Scanner Applications for non-driverless scanners as we already have Printer Applications. +We have [Linux support for the underlying scanning protocols eSCL and WSD](/achievements#sane-backends-for-driverless-scanning---escl-and-wsd-airscan) and the eSCL communication protocol is also [published](/OpenPrinting-News-May-2021#driverless-scanning), but what we still do not have is PAPPL support for scanning, to easily create Scanner Applications for non-driverless scanners as we already have Printer Applications. Currently, we have the SANE backends as scanner drivers, which are dynamically linkable libraries. They must be put into a defined system directory to be found by the applications which scan and they also need to have binary compatibility with the applications. This can usually only be achieved by applications and scanner drivers being built for the host operating system distribution, for security reasons even preferably by the maintainers of the distribution. @@ -285,7 +285,7 @@ Also print dialogs need changes for the New Architecture. They first of all shou The most obvious approach would be that all print dialogs (GTK, Qt, LibreOffice, Firefox, Chromium, ...) get changed appropriately, but this requires the maintainer's, often volunteers, time, is not top-priority in the projects, ... and so takes time if done at all. -Therefore we created the concept of the [Common Print Dialog Backends](/achievements/#common-print-dialog-backends) (CPDB) to not only let all print dialogs support multiple print technologies (CUPS, print to file, cloud printing services, ...) but also move the responsibility of correct support of each print technology to the maintainers of that print technologies, for example to OpenPrinting for CUPS. +Therefore we created the concept of the [Common Print Dialog Backends](/achievements#common-print-dialog-backends) (CPDB) to not only let all print dialogs support multiple print technologies (CUPS, print to file, cloud printing services, ...) but also move the responsibility of correct support of each print technology to the maintainers of that print technologies, for example to OpenPrinting for CUPS. This is done by the print technology support being in separate modules (backends) which are available to the print dialogs as D-Bus services. This way the backends can get updated separately and they can also be in separate sandboxed packages, allowing easy Linux support for any cloud/online printing service provider. @@ -307,24 +307,24 @@ Linux distributions are usually composed of binary packages (RPM or DEB in most To overcome this, and get a packaging system which is distribution-independent and also to get enough security to run third-party binary code, sandboxed packaging methods were introduced. Each package comes with all its libraries and other parts it depends on in a security-encapsulated sandbox. Also what comes with the package is an immutable, manipulation-proof file system image. It also can only communicate with the host system and other packages only through well-defined channels. -The most sophisticated system in terms of security and flexibility is [Snap](https://snapcraft.io/) because it is very similar to smartphone app packaging. See also the [Ubuntu Indaba with Mark Shuttleworth](/OpenPrinting-News-May-2022/#openprinting-snaps-and-the-ubuntu-indaba-with-mark-shuttleworth). +The most sophisticated system in terms of security and flexibility is [Snap](https://snapcraft.io/) because it is very similar to smartphone app packaging. See also the [Ubuntu Indaba with Mark Shuttleworth](/OpenPrinting-News-May-2022#openprinting-snaps-and-the-ubuntu-indaba-with-mark-shuttleworth). -This is also the system I have most experience with. Right when it was launched back in mid-2017 I started [snapping (packaging as a Snap) CUPS](/achievements/#the-cups-snap). I posted several feature requests on Snap and worked together with the Snap developers to integrate the CUPS Snap in the Snap infrastructure, creating an [interface](https://forum.snapcraft.io/t/new-interface-cups-for-all-snaps-which-print/) for snapped applications being able to safely print without being able to mess up the system. +This is also the system I have most experience with. Right when it was launched back in mid-2017 I started [snapping (packaging as a Snap) CUPS](/achievements#the-cups-snap). I posted several feature requests on Snap and worked together with the Snap developers to integrate the CUPS Snap in the Snap infrastructure, creating an [interface](https://forum.snapcraft.io/t/new-interface-cups-for-all-snaps-which-print/) for snapped applications being able to safely print without being able to mess up the system. -Not only CUPS, but also [ipp-usb](/achievements/#driverless-printers-on-usb---ipp-over-usb) and the [4 retro-fitting Printer Applications](achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps) I have snapped and are available in the [Snap Store](https://snapcraft.io/search?q=openprinting). I am regularly updating all of these for new versions of the contained classic printer drivers and other included software. +Not only CUPS, but also [ipp-usb](/achievements#driverless-printers-on-usb---ipp-over-usb) and the [4 retro-fitting Printer Applications](achievements/#all-free-drivers-in-a-ppd-less-world---or---all-free-drivers-in-snaps) I have snapped and are available in the [Snap Store](https://snapcraft.io/search?q=openprinting). I am regularly updating all of these for new versions of the contained classic printer drivers and other included software. Having snapped CUPS I wondered why not packaging CUPS also in other formats, as Flatpak or AppImage. I investigated and found out the following: -- **[Flatpak is not suitable](/OpenPrinting-News-March-2022/#flatpak-and-printing):** It is especially made for desktop/GUI applications. One cannot package daemons. The packaged app cannot be run as root. The channels to communicate with the outside world are not file system mounts or AppArmor allowances as with Snap, but portals, D-Bus interfaces to common GUI dialogs as "Open", "Save as ...", and "[Print](/achievements/#common-print-dialog)". -- **[AppImage is not suitable, too](/OpenPrinting-News-April-2022/#appimage-and-printing):** AppImage does nothing more than providing an immutable file system image with the packaged application and all its libraries and other dependencies. It is an executable which simply opens the file system and runs the included application. There is no security concept, the application has access to the whole system (or at least to what the invoking user has access to). There is also no support for daemons, like for example auto-starting it. -- **[Docker is an alternative](/OpenPrinting-News-May-2022/#official-docker-image-of-cups-and-printer-applications):** Especially on systems based on a minimal/immutable/atomic/image-based OS designed for applications being installed as Flatpaks or systems not based on systemd, not using AppArmor, Snaps cannot get installed and an alternative method to install distribution-independent packages of CUPS and Printer Applications is needed. Here Docker images (OCI-compatible containers) as official versions from OpenPrinting on [DockerHub](https://hub.docker.com/) were suggested. I had some discussion with Robert McQueen and he posted on [the Flatpak list](https://lists.freedesktop.org/archives/flatpak/2022-May/002244.html) and then there were [further suggestions](https://lists.freedesktop.org/archives/flatpak/2022-May/thread.html). +- **[Flatpak is not suitable](/OpenPrinting-News-March-2022#flatpak-and-printing):** It is especially made for desktop/GUI applications. One cannot package daemons. The packaged app cannot be run as root. The channels to communicate with the outside world are not file system mounts or AppArmor allowances as with Snap, but portals, D-Bus interfaces to common GUI dialogs as "Open", "Save as ...", and "[Print](/achievements#common-print-dialog)". +- **[AppImage is not suitable, too](/OpenPrinting-News-April-2022#appimage-and-printing):** AppImage does nothing more than providing an immutable file system image with the packaged application and all its libraries and other dependencies. It is an executable which simply opens the file system and runs the included application. There is no security concept, the application has access to the whole system (or at least to what the invoking user has access to). There is also no support for daemons, like for example auto-starting it. +- **[Docker is an alternative](/OpenPrinting-News-May-2022#official-docker-image-of-cups-and-printer-applications):** Especially on systems based on a minimal/immutable/atomic/image-based OS designed for applications being installed as Flatpaks or systems not based on systemd, not using AppArmor, Snaps cannot get installed and an alternative method to install distribution-independent packages of CUPS and Printer Applications is needed. Here Docker images (OCI-compatible containers) as official versions from OpenPrinting on [DockerHub](https://hub.docker.com/) were suggested. I had some discussion with Robert McQueen and he posted on [the Flatpak list](https://lists.freedesktop.org/archives/flatpak/2022-May/002244.html) and then there were [further suggestions](https://lists.freedesktop.org/archives/flatpak/2022-May/thread.html). After releasing [cups-filters 2.0b1](#cups-filters-2-x) and [pappl-retrofit 1.0b1](#pappl-retrofit) I will look into creating the Docker images of CUPS and the Printer Applications. ## Printer Application look-up via the OpenPrinting web site -The part of the website for looking up (legacy, non-driverless) printers and drivers (the [OpenPrinting database web app](https://github.com/OpenPrinting/foomatic-db-webapp/) has [successfully moved](/achievements/#the-openprinting-web-site) to a new server at Oregon State University Open Source Lab ([OSUOSL](https://osuosl.org)). Violet Kurtz and Lance Albertson, both from OSUOSL have helped a lot on this. +The part of the website for looking up (legacy, non-driverless) printers and drivers (the [OpenPrinting database web app](https://github.com/OpenPrinting/foomatic-db-webapp/) has [successfully moved](/achievements#the-openprinting-web-site) to a new server at Oregon State University Open Source Lab ([OSUOSL](https://osuosl.org)). Violet Kurtz and Lance Albertson, both from OSUOSL have helped a lot on this. -This is the base for being able to do further development and updates on our web app, especially the [Printer Application look-up service](/OpenPrinting-News-November-2021/#printer-querying-on-the-openprinting-web-server) which is needed for the printer setup tools to find the correct Printer Application to install when submitting the printer's device ID as search term. The service is especially needed as the developers of the Snap Store [did not show interest on hardware-signature-based search](https://forum.snapcraft.io/t/hardware-associated-snaps-snap-store-search-by-hardware-signature) and we also want to provide the Printer Applications [in other formats in the future](#distribution-independent-packaging). +This is the base for being able to do further development and updates on our web app, especially the [Printer Application look-up service](/OpenPrinting-News-November-2021#printer-querying-on-the-openprinting-web-server) which is needed for the printer setup tools to find the correct Printer Application to install when submitting the printer's device ID as search term. The service is especially needed as the developers of the Snap Store [did not show interest on hardware-signature-based search](https://forum.snapcraft.io/t/hardware-associated-snaps-snap-store-search-by-hardware-signature) and we also want to provide the Printer Applications [in other formats in the future](#distribution-independent-packaging). Violet Kurtz is making good progress on the [extension of the web app for this functionality](https://github.com/OpenPrinting/foomatic-db-webapp/pull/15). diff --git a/contents/pages/gsod.md b/contents/pages/gsod.md index ebda5a75..8a6628df 100644 --- a/contents/pages/gsod.md +++ b/contents/pages/gsod.md @@ -5,8 +5,8 @@ permalink: /gsod/ ## Year-Wise GSoD Project List -### 1. [GSoD 2020](/gsod2020/) +### 1. [GSoD 2020](/gsod2020) ## Year-Wise GSoD Students -### 1. [GSoD 2020](/gsod-2020-students/) \ No newline at end of file +### 1. [GSoD 2020](/gsod-2020-students) \ No newline at end of file diff --git a/contents/pages/gsod2020.md b/contents/pages/gsod2020.md index e06617cd..10429eb2 100644 --- a/contents/pages/gsod2020.md +++ b/contents/pages/gsod2020.md @@ -50,7 +50,7 @@ The participation of the Linux Foundation in the Google Season of Docs is organi-Please see the plans for our near future work to get an overview of our development direction and architecture changes. +Please see the plans for our near future work to get an overview of our development direction and architecture changes.
-Please see the plans for our near future work to get an overview of our development direction and architecture changes. +Please see the plans for our near future work to get an overview of our development direction and architecture changes.
This page lives at ${htmlTarget}.
+ + +`; +} + +function routeUrl(relativeHtmlPath: string): string { + const withoutExtension = relativeHtmlPath.slice(0, -".html".length); + const segments = withoutExtension.split(path.sep); + return `${BASE_PATH}/${segments.join("/")}`; +} + +function walk(dir: string, files: string[] = []): string[] { + for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { + const full = path.join(dir, entry.name); + if (entry.isDirectory()) { + // Nothing under `_next/` is a routable page. + if (path.relative(OUT_DIR, full) === "_next") continue; + walk(full, files); + } else if (entry.isFile() && entry.name.endsWith(".html")) { + files.push(full); + } + } + return files; +} + +function main() { + if (!fs.existsSync(OUT_DIR)) { + console.warn( + `Export directory ${OUT_DIR} not found; skipping trailing-slash aliases.`, + ); + return; + } + + let written = 0; + let skipped = 0; + + for (const file of walk(OUT_DIR)) { + if (SKIP_FILES.has(path.basename(file))) continue; + + const relative = path.relative(OUT_DIR, file); + const aliasDir = path.join(OUT_DIR, relative.slice(0, -".html".length)); + const aliasFile = path.join(aliasDir, "index.html"); + + // Never overwrite a directory index owned by a real page or by the + // Foomatic legacy stubs, which run before this script. + if (fs.existsSync(aliasFile)) { + skipped += 1; + continue; + } + + fs.mkdirSync(aliasDir, { recursive: true }); + fs.writeFileSync(aliasFile, redirectHtml(routeUrl(relative)), "utf8"); + written += 1; + } + + console.log( + `Wrote ${written} trailing-slash alias stubs ` + + `(/