To me, the "SDK" has a meaning of adding tools, examples, etc. to a core thing. Using it as a top-level collection name for the various framework implementations seems a bit "off".
I agree with that meaning of SDK, but seem to have come to the opposite conclusion. :) What I was proposing as uima-sdk does break down into uimaj-core, uimaj-tools and uimaj-examples, among other things. It really does capture the whole SDK.
I think our big code bases (Java, C++, maybe others in the future - e.g. C#, javaScript) could go into their own top-level things. One criteria to balance here is independence of releases. Each top level thing might reasonably be assumed to be release independent from other top level things. This isn't quite true with C++ and Java - they often have some (weak) dependencies due to naming issues, usually.
I'm not quite getting why Java-C++ have a tighter coupling than Java-C# might have. I do agree that the deciding factor should be whether these code bases are released as one. A related question would be whether they have the same version number. In the past our C++ version numbers have not been in sync with our Java version numbers, but I don't think we were ever entirely happy with that. Maybe a tighter synchronization of releases would be a good thing. -Adam