User Tools

Site Tools


gsoc:google-summer-code-2025-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-2025-openprinting-projects [2025/01/28 15:19]
till
gsoc:google-summer-code-2025-openprinting-projects [2025/03/10 11:52] (current)
till [Port CUPS and Printer Applications to Zephyr]
Line 245: Line 245:
 =====Utilizing OSS-Fuzz-Gen to Improve Fuzz Testing for OpenPrinting Projects===== =====Utilizing OSS-Fuzz-Gen to Improve Fuzz Testing for OpenPrinting Projects=====
  
-**Security- and AI-Related ​project**+**Security- and AI-related ​project**
  
 1 contributor full-size (350 hours), Level of difficulty: Hard 1 contributor full-size (350 hours), Level of difficulty: Hard
Line 280: Line 280:
 =====Integrating OSS-Fuzz for Go-Based and Python-Based OpenPrinting Projects===== =====Integrating OSS-Fuzz for Go-Based and Python-Based OpenPrinting Projects=====
  
-**Security-Related ​project**+**Security-related ​project**
  
 1 contributor medium-size (175 hours), Level of difficulty: Intermediate 1 contributor medium-size (175 hours), Level of difficulty: Intermediate
Line 309: Line 309:
 =====System/​Fuzz Testing of Printing Protocols===== =====System/​Fuzz Testing of Printing Protocols=====
  
-**Security-Related ​project**+**Security-related ​project**
  
 1 contributor full-size (350 hours), Level of difficulty: Hard 1 contributor full-size (350 hours), Level of difficulty: Hard
Line 334: Line 334:
 =====Security Auditing for OpenPrinting Projects===== =====Security Auditing for OpenPrinting Projects=====
  
-**Security-Related ​project**+**Security-related ​project**
  
 1 contributor full-size (350 hours), Level of difficulty: Intermediate 1 contributor full-size (350 hours), Level of difficulty: Intermediate
Line 404: Line 404:
  
 Desired knowledge: C, Go, image processing and evaluation, computer vision, OCR Desired knowledge: C, Go, image processing and evaluation, computer vision, OCR
 +
 +Code License: Apache 2.0, MIT (licenses of the OpenPrinting projects)
 +
 +=====Port CUPS and Printer Applications to Zephyr=====
 +
 +Probably many of you have already thought about that one can take an SBC, install Linux and [[https://​openprinting.github.io/​cups|CUPS]] or a Printer Application on it, and connect this to an old printer which is still mechanically perfect but needs a driver which is not available any more for some operating systems. Suddenly the printer turns into a modern, driverless IPP printer which can be used with any operating system.
 +
 +But it is a little awkward having a little box dangling behind the printer which also occupies a power outlet. Also one can perhaps also make use of much cheaper SBC.
 +
 +Imagine you could buy a tiny board for a few dollars and put it somewhere inside the printer and grab its power from the printer'​s power supply.
 +
 +Such tiny boards are often not powerful enough to run Linux, but there is also the much more lightweight [[https://​www.zephyrproject.org/​|Zephyr]] operating system. This is a system for IoT applications on low-footprint hardware.
 +
 +And this scenario does not only serve for cheap DIY solutions to save old printers, it also can be a base for cost-effective printer firmware development.
 +
 +This project is about investigating whether one could run the components of the free software printing stack, as [[https://​openprinting.github.io/​cups|CUPS]],​ [[https://​github.com/​michaelrsweet/​pappl/​|PAPPL]],​ [[https://​github.com/​OpenPrinting/​libcupsfilters|libcupsfilters]],​ ... under the Zephyr operating system, and actually let this tiny print server execute printer drivers and print on legacy printers. Also the handling of print data and the need of resources here needs to be investigated. Can we hold several pages? Can we use [[https://​ghostscript.com/​|Ghostscript]]?​ Or do we have to stream raster print data from the client to the printer?
 +
 +Most desirable is to do this with PAPPL (Printer APPlication Library), as it is designed to emulate a driverless IPP printer in software, including the so-called "​Gadget"​ mode to appear as an IPP-over-USB device when connecting the power supply USB port of the SBC with the client computer'​s USB.
 +
 +Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), Iuliana Prodan (iuliana dot prodan at nxp dot com), Zephyr developers TBD
 +
 +Desired knowledge: C, Zephyr, USB, network
  
 Code License: Apache 2.0, MIT (licenses of the OpenPrinting projects) Code License: Apache 2.0, MIT (licenses of the OpenPrinting projects)
Line 429: Line 451:
 To prevent man-in-the-middle attacks between a client and a network IPP printer with encrypted connection, the first time when a new network printer is accessed, the printer'​s certificate is loaded from the printer and saved locally. On subsequent accesses the printer'​s certificate is compared to the locally saved one and on mismatch the error is logged and the printing does not happen. To prevent man-in-the-middle attacks between a client and a network IPP printer with encrypted connection, the first time when a new network printer is accessed, the printer'​s certificate is loaded from the printer and saved locally. On subsequent accesses the printer'​s certificate is compared to the locally saved one and on mismatch the error is logged and the printing does not happen.
  
-often this happens without ​ant attck, just on a change of the printer configuration or a printer firmware update. Then theuser ​screams on internet platforms, ​ehen they are lucky finds information about this problem and how to remove the old certificate to make the CUPS replace it by the current one and the printer print again.+often this happens without ​an attack, just on a change of the printer configuration or a printer firmware update. Then the user screams on internet platforms, ​when they are lucky finds information about this problem and how to remove the old certificate to make the CUPS replace it by the current one and the printer print again.
  
 To solve this nasty problem, we came to the conclusion to [[https://​github.com/​OpenPrinting/​cups/​issues/​1072#​issuecomment-2537216779|pop up a dialog which allows to remove the certificate file ("​Reset certificte"​) by clicking a button.]]. To solve this nasty problem, we came to the conclusion to [[https://​github.com/​OpenPrinting/​cups/​issues/​1072#​issuecomment-2537216779|pop up a dialog which allows to remove the certificate file ("​Reset certificte"​) by clicking a button.]].
Line 484: Line 506:
  
 Desired knowledge: %%C/C++%%, CUPS Desired knowledge: %%C/C++%%, CUPS
- 
-Code License: Apache 2.0 
- 
-=====Modernize the OpenPrinting Website with Next.js===== 
- 
-1 contributor full-size (350 hours), Level of difficulty: Intermediate 
- 
-The current [[https://​openprinting.github.io/​|OpenPrinting]] website uses Jekyll, an older static site generator. To modernize its web presence, this project proposes migrating the OpenPrinting website to modern web development technologies like Next.js with TypeScript, shadCN, and Tailwind CSS. This transition will enable OpenPrinting to adopt a tech stack that aligns with current web development best practices, improving scalability,​ search engine optimization (SEO), and maintainability. 
- 
-The migration will involve rebuilding the OpenPrinting website while preserving the current workflow for content management. Static content will continue to be authored in Markdown and managed via GitHub repositories. A GitHub workflow will be developed to automatically build and update the website whenever content changes are committed to the repository. 
- 
-More importantly,​ the project aims to refactor the [[https://​openprinting.org/​printers|Foomatic database lookup]] pages into static content, integrating them into the new website. This will replace the existing MySQL/​PHP-based web app with a static alternative generated by a GitHub action. This approach will eliminate the need for a database-driven back end, simplifying maintenance and deployment. 
- 
-Contributor Responsibilities:​ 
- 
-- Migrating all existing static content to Next.js while maintaining Markdown-based content entry. 
-- Building a robust GitHub workflow for automating website updates upon content changes. 
-- Refactoring the Foomatic database lookup into static pages with GitHub workflow-based updates. 
-- Ensuring a modern design with responsive layouts and an improved user experience using Tailwind CSS and shadCN. 
-- Ensuring deployment on GitHub Pages (everything should be static). 
- 
-Mentors: Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), TBD 
- 
-Desired Knowledge: JavaScript/​TypeScript,​ React, Next.js, Tailwind, GitHub Actions, Markdown 
  
 Code License: Apache 2.0 Code License: Apache 2.0
  
gsoc/google-summer-code-2025-openprinting-projects.1738077576.txt.gz ยท Last modified: 2025/01/28 15:19 by till