Hi all, I have discovered that the current (venerable) implementation of the Collection Processing Engine (CPE)[1] does not really play nicely with the "new" Java 8+ common ForkJoinPool that is used by default in many/all places where the JDK or libraries need to run a concurrent task. The details are described in UIMA-6412 [2].
Now, fixing this involves changing the CPE implementation to no longer use the Java ThreadGroup but rather an ExecutionService. And this changes a couple of classes which are "public" and not in a package explicitly marked as "internal". From my perspective, these class should not really be used by anybody directly. So, normally changing "public" API should warrant a new major version (i.e. moving from UIMAv3 to UIMAv4), but I believe the change is sufficiently internal that a major release should not be necessary... ... the alternative of course could also be to introduce completely new CPE module and deprecate the old one - but I could well imagine more changes like this coming and copying the module every time would not be an option. ... finally, it could be considered to release major versions of UIMA more often (i.e. 4, 5, 6, ...) and stick more closely to the definition of semantic versioning. Questions: 1) Is anybody relying on the API of CPE classes such as CPMThreadGroup or ThreadGroupDestroyer? Maybe take a closer look at the PR [3] then please if you think you might be affected. I'll leave the PR open 72h after the last change in case anybody wants to still comment on it, then I merge. 2) Would anybody like to express their opinion on UIMA versioning? Cheers, -- Richard [1] https://uima.apache.org/d/uimaj-v2-current/tutorials_and_users_guides.html#ugr.tug.cpe [2] https://issues.apache.org/jira/browse/UIMA-6412 [3] https://github.com/apache/uima-uimaj/pull/165 P.S.: This is CCed to dev@uima, but the idea is to discussions on user@uima.