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.

Reply via email to