Webswing: a valuable and trusted companion

SoftOption uses Webswing technology https://www.webswing.org/ to provide web-based standalone applications for a number of the logic applications.

Some history. The core of the original code here was written about 1986 in Object Pascal to run on Apple Macs, either from a floppy disk or, later, from a physical network in University labs. It was always desirable for Deriver to have wider use and to be able to run using a variety of operating systems. The code, steadily expanding, was transitioned to C++ and then, eventually, about 2000, to Java. Java was to be a write-once-run-anywhere language with a universally installed run-time system. Java's JNLP (Java Net Launch Protocol) helped with this. Also, there were Java applets, which ran in web pages, and which, at one point, were not totally misaligned with Users' expectations. Then, paradise was lost. There were security problems. Steve Jobs said 'we don't want no stinking Java'. And run-everywhere Java seemed done for.

A large portion of SoftOption's code base was rendered legacy. There were some work arounds. The applets were converted to Javascript, using Google's Web Toolkit. But the stand alone applications were rendered more or less useless. The prospect of converting those to Javascript evoked the sunk cost fallacy (always good to avoid that!). The stand-alone applications added valuable functionality to the Deriver functional experience. They could save and restore half-finished proofs (written by the User, or by an Instructor), they could print, etc. We wanted them, but could not have them.

Enter the white knight. Apparently, Webswing had a technology that could run legacy Java applications out of a web browser, no additional installations required on the clients. Basically that seemed too good to be true. But it is true and let me describe my experiences. The demo application was run on a Windows laptop and it worked perfectly. I was delighted to see here a demonstration of Java's Swingset. This was good because Deriver used Swing for its widgets and interface. (There are Themes that can be installed on top of Swing to modernize its look and feel (e.g. https://www.formdev.com/flatlaf/ ) I had a hosted Linux server, and initially I worked with that. The installation of Webswing was alright, but I did have some difficulties as it were keeping all the balls in the air at once. There is a virtual frame buffer (Xvfb), and the installation is sensitive to the Java version. Also, I am a complete beginner with Linux. I think there was no problem or issue with Webswing, the problems were with me interacting with Debian. At this point, I decided to switch to a Docker installation of Webswing, that way I would have everything locked in. Again, this worked perfectly straight way. First off, I tried hosting the Docker on Google, but, if I remember, there was an issue, perhaps with the reverse proxy. Then I switched to letting Amazon Web Services host it, and that is absolutely fine. It's working well.

In sum, Webswing is very good. It is a lifesaver for legacy Java standalone applications. My route was Docker on Amazon Web Services, and with a theme layered on the Swing. The few interactions I have had with Webswing support personnel have been delightful. They are very friendly and helpful.