Chunky 2016 Spring Update 2016-04-02

In January I published a small snapshot release that added more posing options for player entities. My plan was to improve the posing support and also improve player rendering before I made the 1.3.8 release, however I became very busy with my PhD studies/work and Chunky development has been mostly on hiatus since then. I wanted to write this post to give an update to the Chunky development to everyone who uses Chunky and is interested in the progress of development.

Release 1.3.8

Since the improvements I wanted to add before the 1.3.8 release got delayed, I think it will be a good idea to make the 1.3.8 release anyway because I have made some bugfixes that need to be released. Today I published a new snapshot release, 1.3.8-rc1, which is a release candidate for 1.3.8. If I don’t discover any new issues with this snapshot release I will publish that version as 1.3.8.

User Interface plans

Of all the components in Chunky, the User Interface (UI) is the one I have spent most time on. I actually very much dislike UI programming. It’s tedious, error prone, and time consuming. I am still not pleased with the UI, and there are many things I’d like to improve in it. The most annoying issue right now is that the UI looks and behaves differently on different platforms.

Chunky uses the Java Swing library for its UI components. There are many benefits of using Swing: it is supported on most Java versions and it works on Windows, Mac, and Linux. However, the disadvantages of Swing are also many, and chief among the disadvantages is that the UI components are ugly and behave in some cases unexpectedly. Swing UIs usually end up looking old and janky. The default Swing look and feel is very outdated, but people have tried to remedy this by making their own look and feel libraries for Swing. This is a huge time sink and not at all worth it for small projects like Chunky.

Swing does provide platform-dependent look and feel settings which allow your Java app to look more like a native app, and these settings can make Swing look much better, however it also means that the UI looks different on each platform, and behaves slightly differently. For example, here is a side by side comparison of the control panel from the main window as seen on Windows and Linux:

Swing on Windows vs Linux

I am very displeased with the current state of the Chunky UI, and I’d like to remove these large differences between platforms. I would much prefer if the UI looked the same on all supported platforms. There is a solution to this problem, and that is the Java FX framework. Using Java FX would require users to use Java 8, which I dislike because I really would prefer to support Java 6 as long as possible, however Java FX applications can look really pretty, and they behave well and are consistent between platforms! My plan right now is to try to migrate to Java FX after the 1.3.8 release. Swing components can be used in Java FX and that will allow me to gradually move over to Java FX.

The downside of making a big change in the UI is that it takes a lot of time, and it’s development time that doesn’t help improve the application in a substantial way. In some cases a better working UI can be a big gain, but it won’t add new features or fix existing rendering bugs. So it is difficult to commit to a big UI rework when I know that it detracts from other fixes/improvements that I would like to work on.

Single Document Interface

I had an idea previously to design a single document interface for Chunky. I started working on that, using Swing, but decided to ice the project when I realized that it would take a lot of time to iron out all of the small new issues that were introduced. I still think I’d like to try making a single-document interface in Java FX. Here is a screen shot of one of the partially working single document interface builds:

Single document interface in Chunky

Development hiatus

As mentioned, Chunky development has been mostly frozen for a while. This is due to my PhD studies and all the work I need to do because of it. There will be another hiatus in Chunky development soon, during the summer, because I am returning to Google for a second internship. After that, in August, I am looking forward to taking some vacation time and focusing on Chunky development.

Categories: Uncategorized

Leave a Reply

Your email address will not be published. Required fields are marked *