The Ranch runs on the CentOS 6 OS. It reached End-of-Life on
November 30, 2020. CentOS 7 and later are significantly different at a core level: the old Unix-style sysinit was replaced in its entirety by systemd, which has also taken over OS-level logging, is the preferred "cron" and mount mechanism and I shudder to think what else.
The problems with running with a "dead" OS are that first and foremost, no security updates have been release since EOL, which probably means the recent SSL mayhem and system package-supplied Log4J just offhand. Also, the ISP could yank CentOS6 at any time, and almost certainly would if they had any sort of incident with one of their CentOS 6 hosts, whether it was the Ranch or some other equally tardy client.
Java 8 LTS 8 may not yet be End-of-Life, but moving on from it also reveals significant technical debt. The original
Mockito tests were often not actually done according to spec and there are massive breakages when building Version 2 under Java 11 and later as it is much more meticulous. The introspection mechanisms changed considerably from Java 8 to Java 11 and even when it was only warning-level, there was a risk that real errors could be buried in the noise.
Finally, some of the libraries used in Version 2 are incredibly ancient and occasionally non-supported, in some cases no longer compatible (and with security fixes not applied). Because the current build process is based on vanilla
Ant without Ivy, keeping the libraries current is an unpleasant process.
To address these issues, I forked Version 3 off of version 6 a while back. It fixes the Mockito issues - excepting that I don't know what to do with (related to changes in code-page handling post Java 8), can be built automatically via
Jenkins (which also needs upgrading!) under Maven (so libraries can be kept up to date), and removes a rather nasty wart from the DAO production/testing process. Excepting that one area, I have resisted changing the actual application code even in cases where it does things we tell Forum visitors not to do.
So Version 3 is simply a tag off the main Git tree and can be pulled and built fairly simply. What it needs at this point is for some who knows what the right answers are to fix the 2 remaining broken unit tests and to actually test-run the app. I am not a very good tester and even less so when I "know" where the bugs are, so all I can do at this point is wait for someone to handle the next stage in the process. There are about 6 months of merges out of sync from the mainline at this point, but that's trivial if the app can be confirmed as fully functional.