STATUS:6

Welcome

I’m John Neffenger, an independent software developer doing business as Status Six Communications in Vancouver, British Columbia, Canada.

Programming

My main open-source contributions are listed below and described in the sections that follow.

2021
Published the latest releases of OpenJDK and OpenJFX in the Snap Store.
2020
Released the source code of the VOLANO™ chat server under an open-source license.
2019
Ported the JavaFX cross-platform application framework to devices with e-paper displays.
2018
Learned how to contribute to the OpenJDK project by fixing two old font bugs on Linux.

Snap Store

OpenJDK: Verifiable builds for Linux from source In December 2020, I started publishing the latest releases of OpenJDK and OpenJFX in the Snap Store when I saw that they were not available in any current release of Ubuntu. I had been building both projects for years as part of my own testing, but the Snap packages let me document the process and create up-to-date builds for myself and anyone else who wanted to use them. The Snap Store now has the latest general-availability releases, release candidates, and early-access builds of OpenJDK and OpenJFX for Linux, built directly from their source code on GitHub.

VOLANO Chat Server

VOLANO speech-balloon logo I wrote much of the VOLANO chat server and applets in the spring of 1996. In the decade that followed, the software became frozen in time at Java version 1.1 mostly due to the dominance of the Microsoft Java Virtual Machine in Internet Explorer. In the decade after that, it remained frozen in time mostly due to me. Now, more than two decades after launching the proprietary software, I hope to breathe some life back into it as an open-source project.

JavaFX on E-paper

Still frame of JavaFX animation on e-paper While attending the SIGGRAPH conference in Vancouver, I was fascinated by an exhibit in the Art Gallery called Lineographs, by Joseph Farbrook. It was the first time I had seen animation with electronic ink, and it was remarkable. After the conference, I was determined to reproduce the artwork on my own, but I soon learned how difficult that would be. The documentation was hard to find and provided only a C-language interface to the device driver. I wanted to use a cross-platform language and framework that would let me test my applications on a desktop computer and run them unmodified on the device. I wanted to use Java and JavaFX, Dart and Flutter, or Python and Qt, but none of them supported embedded devices with e-paper displays. JavaFX, though, already had much of what I needed to make it work.

So I added the support to JavaFX and contributed the code to the OpenJFX project. I submitted the code in two parts with 1,831 new lines of code in all. The first part, included in JavaFX 13, added a new platform for Linux systems with e-paper displays. See Issue #339 for details on the motivation and design of the new platform and Pull Request #369 for the implementation. The second part, included in JavaFX 15, added support for additional device models. See Issue #521 for details and Pull Request #60 for the implementation. I also developed a JavaFX application to test the new platform, published as JavaFX on E-paper.

Java Font Fix

Screenshot of Java font bug For 10 years, each time I downloaded a new release of Java, I immediately checked whether the font bug had been fixed. And for 10 years, every time I checked, the bug was still there: color fringes so severe that it was impossible to use. I was ready to abandon the platform altogether. It was as if the developers of Java couldn’t even see the bug!

As it turned out, that was precisely the problem: the developers of Java couldn’t even see the bug. It didn’t happen on their systems running Oracle Linux. To solve the problem, I created the repository OpenJDK Freetype Font Fix, explaining the long and convoluted history of the bug and providing a two-line fix. My fix is available starting with Java 12 and has been back-ported to the Java 8 and Java 11 Long Term Support releases.

JavaFX Font Fix

Screenshot of JavaFX font bug Before trying to fix the Java font bug, I started with the same bug in JavaFX. It can be particularly challenging to report bugs about fonts. With so many variations in anti-aliasing, hinting, subpixel rendering, and filtering, everyone has an opinion. It can be difficult to convince the developers that what you’re describing is really a bug and not just a personal preference. By 2017, there were already two bug reports explaining the problem, but they were both closed as “Not an Issue.” By 2018, the bug had persisted for five years. If I was going to open yet another bug report, it would require some compelling evidence—and probably a fix, too.

I created Issue #229 to provide both the evidence and the fix, and my Pull Request #235 was merged into JavaFX within two days. It is available in JavaFX 12 or later. As with the Java font bug, because of a quirk in how the problem occurred, the developers of JavaFX couldn’t see this bug either.

Typography

I took on these projects to find out whether I could automate the production of well-formatted books in plain text, HTML, EPUB, Kindle MOBI, and several PDF paper sizes, all from a single source written in LaTeX. The results were even better than I had expected, thanks to the great open-source tools available in LaTeX, HeVeA, ImageMagick, Potrace, and Inkscape.

Wild & Woolly

Wild & Woolly book cover I designed the e-book versions of Wild & Woolly: A Journal Keeper’s E-book, by Alfred DePew, and automated the production of PDF files in A4, A5, and A6 paper sizes. Click the Free sample button on the Google Play page to view a sample of the work.

The Melancholy of Departure

The Melancholy of Departure book cover I designed the e-book versions of The Melancholy of Departure, by Alfred DePew, and automated the production of PDF, EPUB, and Kindle MOBI files. Click the Free sample button on the Google Play page to view a sample of the work.