I have a confession to make. I don’t like what Oracle is doing with the IP they get their hands on. This is just one of those times when it’s easly shown why.
FreeplaneGTD has gone over several stages in the past years. It started off as a spin-off of a long abandoned project, that just didn’t cut it. It was clunky and ugly using a simple HTML view. Over the years I tried adding featured, while following the changes in the main Freeplane developments. It got to be a pretty decent solution over the years, but now there is a major set-back thanks to Oracle’s idea of progress.
This is a story of what happened to FreeplaneGTD over the years.
If you like the addon, don’t forget to honor the work put into it by donating to the author.
TL;DRFreeplane 3.0.0 is available for testing at the usual places.
The release is available at the release page, on GitHub and on SourceForge.
It more-or less worked, however I needed a few more features, so I decided to take over and add some enhancements, so I can use it for organizing my own daily activities.
In later versions a simple task editor dialog was, added, then the task pane was redesigned first to use the much better flying-saucer HTML component. Unfortunately there was still no chance of using interactivity in this stage. So marking a task complete could only be achieved by going over to the map and adding a new icon, or using the editor dialog.
To use the flying-saucer library from inside the Freeplane framework was not easy. I remember having sleepless nights until I brought it together. This essentially required going around the security of the framework. This approach no longer works.
Since the library produced quite ugly rendering and it was quite huge at the time (1.8MB added to the addon) I decided to move on to using a technology that is more readily available on the users’ side. JavaFX was created as a replacement for the old-school AWT and Swing UIs shipping with Java. It never played nice with any of the OSGI frameworks especially the one used Freeplane(Knopflerfish). It took another few weeks of sleep deprivation to get it working.
By the time v2.0.0 was released the add-on got way smarter. Not only it had more features, like moving done tasks to review/archive folders at a single keystroke, but icons are displayed in the tasks list, many more configurable features, aliases clipboard copy as formatted text, etc. Also had a few languages supported by some of the users like French, German, Spanish.
It still needed some ugly low-level hacks to work, I managed to pull it through to support Freeplane versions 1.7.x. As a great addition the addon creates tasks from typed text automatically. The list and the map are synchronized, and everything is peaceful, until…
This is when I started getting weird reports from the users. I looked into them and to my horror found Oracle pulled the plug on the best UI interface Java had and removed JavaFX from the JRE altogether. First the developers using the latest JDKs were affected but it is spreading fast. From the Java 11 coming up this year, going forward, JavaFX will no longer be available. Since it is quite big, I rather not add to the distribution of the add-on, especially, since I would have to mess around with the Java security and OSGI loaders for weeks again to get it off the ground.
I took a deep breath and dug up my Swing textbooks from 15+ years ago (literally, it was under a thick layer of dust) Now I recreated an operable interface using nothing but old-school Swing components. I removed most of the security hacks the JavaFx dependencies and some more.
It took a long night to do so, not everything is perfect yet, some features are not yet available, but the new UI is working. Good thing I reorganized the original code when switching from Swing to Flyingsaucer and from FlyingSaucer to JavaFX properly. I “only” had to rewrite a single class to get it to work.
Disclaimer: I HATE SWING! This is the worst thing to use for UI. The layouts are confusing, it takes ages to get anything done. Yet Freeplane UI is written in Swing as long as that won’t change the addon will work.