I’m John Neffenger, an independent software developer in Vancouver, British Columbia, Canada.
My main open-source contributions are listed below and described in the sections that follow.
- Created strictly-confined packages of Apache Maven and Apache NetBeans.
- Published current releases and early-access builds of OpenJDK and OpenJFX.
- Released the VOLANO chat server under the GPLv3 open-source license.
- Ported the JavaFX application framework to devices with e-paper displays.
- Learned how to contribute to the OpenJDK project by fixing two old font bugs.
In December 2020, I started publishing the current 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 testing, but the Snap packages let me document the process and create up-to-date builds for myself and anyone else who wanted them. The Snap Store now has the current releases and early-access builds of OpenJDK and OpenJFX for Linux, built directly from their source code on GitHub.
In June 2022, I also started publishing strictly-confined packages of Apache Maven and Apache NetBeans. The packages are public, but unlisted, to avoid confusion with the official releases from Apache. They allow me to run my entire toolchain of Apache NetBeans, Apache Maven, and OpenJDK inside a strictly-confined container with limited access to my system. Such confinement is especially important for tools like Maven and NetBeans that download, install, and run third-party plugins, but it also helps protect my system from the dependencies they include during their builds.
VOLANO Chat Server
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
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 in electronic ink. 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 preferred a framework like 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 published a JavaFX application to test the new platform.
Java Font Fix
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, each time I checked, the bug was still there: color fringes so severe that it was impossible to use. I came to the conclusion that I needed to fix the problem myself or abandon the Java platform altogether.
I created the repository OpenJDK FreeType Font Fix to explain the long and convoluted history of the bug and provide a two-line fix. The fix is available in Java 12 or later and has been back-ported to the Java 8 and Java 11 Long Term Support releases. I am happily still using Java today.
JavaFX Font Fix
Before trying to fix the Java font bug, I started with the same bug in JavaFX. Reporting bugs about fonts can be particularly challenging. It’s difficult to convince developers that what you see is a bug rather than a personal preference. By 2017, there were already two bug reports explaining the problem, but both of them had been closed as “Not an Issue.” By 2018, the bug had persisted for five years. If I wanted to open yet another bug report, it was going to 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 the next day. The fix is available in JavaFX 12 or later.
I took on these projects to find out whether I could automate the production of well-formatted books in plain text, HTML, EPUB, MOBI, and several PDF paper sizes, all from a single source. The projects were a success thanks to the open-source tools available in LaTeX, HeVeA, ImageMagick, Potrace, and Inkscape.
Wild & Woolly
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 Read or Free sample button on the Google Play page to view a sample of the work.
The Melancholy of Departure
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 Read or Free sample button on the Google Play page to view a sample of the work.