The future of Gutenprint (warning: long and opinionated)

Solomon Peachy via Gimp-print-devel <[email protected]> Sun, 16 Mar 2025 12:09:52 -0400
Newsgroups gmane.linux.printing.gimp-print.devel
Message-ID <[email protected]>
--===============2990426569881631347==
Content-Type: multipart/signed; micalg=pgp-sha512;
	protocol="application/pgp-signature"; boundary="IJkVut3ZKYbY4KKl"
Content-Disposition: inline


--IJkVut3ZKYbY4KKl
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Now that the long-delayed 5.3.5 release is out, it's time to talk about=20
Gutenprint's future.

"Everyone wants to create, but nobody wants to maintain. There is no
 glory in maintenance."

Gutenprint itself is stable and mature.  While there are always areas=20
for improvement, it generally does what it claims to do.  In that sense=20
Gutenprint doesn't need much ongoing maintenance; just fixing bugs as=20
they show up and occasionally adding support for addtional printers. =20
This has effectively been the status quo for some time, but=20
unfortunately, while Gutenprint itself is stable, the rest of the=20
printing world is not.

For many years now, the greater printing ecosystem has been undergoing a=20
foundational shift away from traditional OS/platform-specific printer=20
drivers (such as Gutenprint) towards "driverless" IPP.  Nearly all=20
printers released within the past five to ten years JustWork(tm) out of=20
the box, using driverless IPP, either over a network connection or=20
tunneled over USB.

In other words, modern printers don't generally need something like=20
Gutenprint.  Meanwhile, older printers tend wear out so that over time,=20
fewer and fewer remain in service.  (There are some notable exceptions,=20
and we will get to that later)

 ~ ~ ~

Currently, CUPS itself acts as an driverless IPP wrapper around=20
tradtional PPD-based CUPS drivers.  This will go away in the very near=20
future, but the folks over at OpenPrinting came up with so-called=20
"retrofit printer applications" that provide similar functionality in a=20
self-contained manner.

Additionally, last fall a GSoC project created a "native" Gutenprint=20
printer application around PAPPL.  This differs from the "retrofit"=20
insofar as it directly interacts with libguenprint instead of its=20
CUPS/PPD driver wrapper, but it is not in a usable state, and completing=20
it may not actually make sense, for reasons to do with those=20
aforementioned exceptions.

Basically, at this point, there are only two sets of "modern" printers=20
that still need a traditional "driver" like Gutenprint:

 1) Models that provide an additional low-level/native protocol that=20
    allows a much higher degree of control over what is exposed via IPP.

    Currently this includes high-end Epson Injket printers used to create=
=20
    "fine art" prints, often involving bespoke ink and media.  These=20
    printers expose numerous knobs to ensure the output can be carefully tu=
ned
    to achieve the highest possible quality.

 2) Models that do not provide driverless IPP functionality at all.

    Specifically, high-speed dye-sublimation photo printers (such as=20
    those used in photo booths or drugstore kiosks) and other/similar=20
    models that are used in commercial/production-focused contexts.

Both of these tend to be expensive, have long product lifecycles (that=20
routinely exceed a decade) and nearly always operated on a commercial=20
basis; that is to say they are used to make money for their operators.

The current retrofit application will more than suffice for the folks=20
that have an old printer and want to keep using it for typical=20
home/office stuff. Similarly, it would not likely take too much effort=20
to finish the incomplete native application to the point where it would=20
be an effective replacement for the retrofit applicaiton for these=20
tasks.

However, for those two sets of "modern" printers that we believe make up=20
the primary user base of Gutenprint today, the incomplete application will
require *extensive* additional work before it would be usable.

For the high-end inkjets, a way to usably expose the numerous control=20
knobs is utterly necessary.  As IPP (or more accurately, common IPP=20
print clients) is not currently up for this task, this will likely need=20
to be done from within the printer application itself, through some sort=20
of (web-based) user interface; This needs to be planned, prototyped,=20
developed, and maintained, and is likely to involve allowing the=20
creation and management of selectable profiles that would potentially=20
include adjustments to virtually every knob the printer supports. This=20
is a _huge_ undertaking.

For the dye-sublimation models, the current retrofit application is not=20
even usable because it completely lacks the custom USB backend, which=20
needs to be ported and integrated to work within PAPPL.  There are=20
additional UI/UX warts without easy solutions, and numerous other bits=20
of functionality (eg extensive diagnostic information) that need to be=20
exported, and architectural issues within Gutenprint itself that need=20
addressing before we will be able to fully take advantage of the new=20
functionality that IPP can enable.

This is on top of other work that Gutenprint desparately needs,=20
including:

 * Finally migrate off of Sourceforge (likely to codeberg or sourcehut)=20
 * Rework the www site into something modern and relevant
 * Finish cleaning up the littany of build warnings with modern compilers
 * Port the GIMP plugin to GIMP3 (ie GEGL and GTK3)
 * Modernize build system (eg modernized autotools or cmake)
 * etc

Most of these are in of themselves significant undertakings, requiring=20
planning, development, and ongoing maintenance across a broad swath of=20
skillsets.  The problem is... we don't have that.

At its peak, Gutenprint only ever had a handful of active contributors,=20
but shortly after the 5.3.4 release that number fell to just one, where=20
it has languished ever since.=20

Even putting aside this large pile of TODOs, this is not a sustainable=20
position.  What happens if that remaining person gets crushed by a tree?

 ~ ~ ~

The bottom line is that as things stand today, none of this work will=20
happen.  Or if it happens at all, it will be on an extremely glacial=20
scale, driven primarily by the self-interest and time availability of=20
that one contributor.

This is not just a matter of *funding*, except in the sense that a=20
sufficient amount of guaranteed funding can be used to pay for=20
suitably-skilled contributors.

As a poignant example of this, over the course of the past three=20
summers, Google sponsored three GSoC attempts to create a Gutenprint=20
printer application. The first two completely ghosted us, and the third=20
looked to be heading in the same direction before they unexpectedly=20
delivered delivered passable (if incomplete) code at the 11th hour. =20

Even at the lowest end of the GSoC compensation scale, these three=20
students were collectively paid at least triple the amount of funding=20
that Gutenprint itself received during the same time period.  This is=20
actually much worse than it sounds; if not for a generous=20
no-strings-attached "thank you" donation from a commerciaal ISV, the=20
total donations over that three year period would have totaled less than=20
$160!  This greatly-appreciated donation didn't fully cover Gutenprint's=20
_costs_ (eg acquiring hardware and media) over that same period.

It is clear these GSoC participants did so for the stipend rather than=20
of any interest in Gutenprint or printing in of itself.  There is=20
nothing inherently wrong with that, but when one factors in the time and=20
effort Gutenprint (and OpenPrinting) spent on mentoring, it was probably=20
a net loss when one considers that none of the participants elected to=20
continue contributing after they were no longer being paid to do so.

Frustratingly, if those same funds had been paid directly to Gutenprint=20
instead, it would have all but guaranteed completion of the scoped work,=20
and likely much more.  But that window of opportunity/availability has=20
long since closed.

 ~ ~ ~

There are two general rules in play.  The first is the so-called golden=20
rule -- "Whomever has the gold, makes the rules". If there is no gold=20
involved, the second rule kicks in -- "Whomever does the actual work=20
gets to decide what/how it is done"

Given that there is nobody waving around any gold, and there is only one
person doing any work, where does that leave Gutenprint?

 * Will stay on Sourceforge for the time being
 * No feature development planned
 * No additional printer support planned
 * Gutenprint will continue receiving bugfixes as needed
 * Folks can use the retrofit printer application when CUPS finally=20
   drops the guillotine on PPD-based drivers
 * No plans to resume work on the WIP native printer application

In other words, other than critical bugfixes, this is effectively the=20
end of Gutenprint development, at least until a sufficient infusion of=20
money and/or manpower comes along.  Or that one contributor gets taken=20
out by some sort of Florida Man shennanigans.

 ~ ~ ~

What would be considered "sufficent"?  We don't have a good answer for=20
that, but it's going to be infinitely larger than the 'nothing' of today.

While we don't begrudge folks from making money using Free Software,=20
when most of Gutenprint's userbase (or at least the portion that would=20
benefit the most from this work) is actively using it to make money, one=20
tends to get a grumpy when you realize everyone other than you is=20
getting paid.  This is not an exaggeration; entire industry verticals=20
have been built on top of Gutenprint.

Logically, one would expect printer manufacturers to consider it in=20
their best interest to ensure their printers are well supported under=20
Linux -- even at the minimal level of providing documentation and loaner=20
models would be beneficial, as opposed to sending legal nastygrams while=20
their own salescritters are actively sending Gutentprint builds to their=20
customers!  (This has happened more than once)

Logically, one would expect systems integrators to treat Gutenprint as a=20
critical supplier instead of an infinite free resource (and nearly=20
inevitably violating Gutenprint's GPL license along the way..)

Instead, they have created an XKCD #2347 situation.

 ~ ~ ~

So, all that said, where would this contributor like to see things go,=20
if sufficient time and/or money was made available?

(Horay, no more speaking in the third person)

As one can probably surmise from the wall of text preceding this, I=20
don't think it's worth continuing meaningful work on "classic"=20
Gutenprint.  The retrofit application will work fine for folks with=20
ancient printers until they inevitably fall to prey to the vagracies of=20
time.

The glaring exception to this are dye-sublimiation (and other thermal)=20
printers. Indeed, over at least the past five years these have=20
represented the primary area of (expressed) user interest and actual=20
deploments.  (There's also the aforementioned Epson injkets, but that's=20
not something I personally care about)

Consequently, I think it makes more sense to build out a new printer=20
application that caters solely to these dyesub models.  It would borrow=20
some printer-specific code from Gutenprint (and re-use most of the=20
backend) but will otherwise be a clean-sheet implementation.  It still=20
faces numerous hurdles but not having to uplift the rest of Gutenprint=20
along the way will greatly reduce the overall project scope and=20
complexity.

This also aligns with my personal interests, but unless other interested=20
parties step up with funding or other resources, it will remain a (very)=20
part-time effort, if it gets started at all -- My personal printing=20
needs can be met by just keeping an old CUPS installation around, and=20
I'd rather spend my evenings with my family and my weekends doing things=20
outside -- really, anything other than staring at a computer screen=20
performing unpaid commercial software development.

Comments and feedback welcome.  Contributors even more so.

But any proposal that entails my undertaking _more_ unpaid work for=20
other folks' benefit will be mercilessly mocked.  This goes double for=20
suggesions on how to make Gutenprint "more attractive to potential=20
contributors" unless that suggestion comes in the form of a bag of=20
cash.

 - Solomon
--=20
Solomon Peachy			      pizza at shaftnet dot org (email&xmpp)
                                      @pizza:shaftnet dot org   (matrix)
Dowling Park, FL                      speachy (libera.chat)

--IJkVut3ZKYbY4KKl
Content-Type: application/pgp-signature; name=signature.asc

-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEE3H5Sx9DyiyB5hnENrGLLO/XVulEFAmfW98oACgkQrGLLO/XV
ulE+Eg//Tsullad2Gntd+PQHbbs5grtonzARmrwgL8IILRLNVH4cPsrqlmJ0rOsH
QQctX4ToKXfiOuBzcdUpe7aakNzMIgLxjIyzv9+RWqIiuVxqclWXDloLxHu4wPcT
rM4Xub7oN1FCM9rAZ6oX6m4/JwMvfmKyEc2GIwcPDa4iWUrBNha4Pz+ADOhhS+pW
+Ss2XJR7tBQePET6HBbn6SChN2EogQRHDnp9jJ68uEwjHzB9tci0Kg1hNB0V1tEQ
DsXB3xBqg4a/yX52cAklB/AGTvceRB0rUKAWrsKgcDJwOUVmYXmszPyctODAa8JN
L5Bkww291uARzUUhHqX4XUeHnaULFukOGey4vJ0bWM//uHirdKXxP7l39dHsO+JO
qpkMWPeCUpZgHIeybh2MLxk2awn64bGVN1zZYYdlLhgbQiOAm0DauTS+IdiZpfbp
wivksXxtQmJUcZmBEtmsynXUZz+dp0OAu9jCD85J3hnGYfEYIqv42xyHcRP4pCx3
yKggz2D4WPJGWEbFM/tiIaiOfbkXh2yypb9t21SALhYjzGnJBgGNERGOlGQkRMzl
xwHLE07n4uPCEyFI/FEsmtM3x7haStAR/ZkbPhfULAD1JBzpiDYT9BvtpUoeamvg
g4DH+O+dLi89a3d7DEm7MRrAQU037J2Uhrs+Wp5No2c6MVX4U7E=
=ry6Y
-----END PGP SIGNATURE-----

--IJkVut3ZKYbY4KKl--


--===============2990426569881631347==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============2990426569881631347==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Gimp-print-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gimp-print-devel

--===============2990426569881631347==--