I’m John Neffenger, an independent software developer doing business as Status Six Communications in Vancouver, British Columbia, Canada.
My open-source contributions are described below, starting with the most recent. My largest project has been to port JavaFX, the Java application framework, to devices with e-paper displays. Before that, I learned how the OpenJDK community works by fixing two font bugs that had bothered me for years.
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 with electronic ink, and it was beautiful. I was determined to reproduce the artwork on my own, but I soon discovered how difficult that would be. The documentation was hard to find, buried deep in manuals for embedded programmers, and provided only a native 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 my desktop computer and run them unmodified on the device. I wanted a framework like Java and JavaFX, Dart and Flutter, or Python and Qt, yet nothing like that existed. Java and JavaFX, though, already had much of what I needed to make it work.
So I added a new platform for e-paper to JavaFX and contributed it to the OpenJDK project. I submitted the changes in two parts, listed below, with a total of 1,831 new lines of code: 1,634 in Java and 197 in C.
The first part implemented the JavaFX platform for Linux systems with e-paper displays, such as the Amazon Kindle and Rakuten Kobo e-readers. See Issue #339 for details on the motivation and design of the new platform. My contribution in Pull Request #369 is available since JavaFX 13.
I developed an application to test the JavaFX support for e-paper displays and published it as the repository “JavaFX on E-Paper.”
Java Font Fix
For 10 years, every time I downloaded a new release of Java, the first thing I did was check whether the font bug had been fixed. And for 10 years, the bug was still there: color fringes in the fonts so severe that it was impossible to use. I was ready to abandon the platform altogether if it wasn’t going to be fixed. It was as if the developers of Java couldn’t even see the bug.
In fact, that was precisely the problem: the developers of Java couldn’t even see the bug! The error didn’t occur on their systems running Oracle Linux. To solve the problem, I created a repository called “OpenJDK Freetype Font Fix” that explained the long history of the bug and provided a two-line fix. My fix is available in Java 12 or later and has been back-ported to Java versions 8 and 11.
JavaFX Font Fix
Before tackling the Java font bug, I started by looking into the same problem in JavaFX. Reporting bugs about fonts is tricky! With so many variations, from anti-aliasing and hinting to subpixel rendering and filtering, everyone’s got an opinion. The challenge is to convince developers that what you’re describing is really a bug and not just a preference. By 2017 there were already two bug reports explaining the problem, but they were both closed as “Not an Issue.” Worse yet, JavaFX, unlike Windows, renders its fonts without hinting, so the developers were used to receiving reports from users complaining about the difference. By 2018 the bug had persisted for five years. If yet another report was to be successful this time, it would have to include some compelling evidence—and probably a fix, too.
I created Issue #229 that provided both the evidence and the fix. My fix in Pull Request #235 was merged into JavaFX within two days and is available in JavaFX 12 or later. Because of a quirk in how this problem occurred, the developers of JavaFX also couldn’t even see the bug!
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 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 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 Free sample button on the Google Play page to view a sample of the work.