>
>
>
> So what is the background to this thread, are you running into a split
> package issue when trying to migrate something to modules?
>
> -Alan
>
I cannot speak for Jochen but at least this is something we have been
discussing for a long time on the Groovy MLs since we know Jigsaw will
prevent split packages. Basically our problem is binary backwards
compatibility. Groovy has a long history, so before Groovy 2.0, everything
was found in a single jar. We provided several versions of Groovy (we still
do), but that is more a dependency management issue.

The real problem is more that after Groovy 2 we started splitting Groovy
into different jars. But for backwards compatibility we didn't change the
packages. So you can find classes in package groovy.util in both the
`groovy-core` jar and the `groovy-xml` jar. Those jars would be obvious
candidates for modules but as split packages are not allowed this is not
possible. This doesn't give us many options. I was in favor of breaking
everything, since Jigsaw is a long journey in any case, and leverage that
to have Groovy 3 use different packages. Of course not everybody is happy
with this, because it's a huge issue for all existing libraries that rely
on "old" packages. We would basically break every Groovy program out there.
Both at the source and binary level.

It's a very big issue, typically all Gradle plugins written in Groovy would
break. Gradle itself would break. There are things to mitigate that, like
rewriting classes at load time, or an easier solution which is to have a
single Groovy module for all (and come back to the monolith era, sigh...).

We haven't made any decision yet. Not something we can take easy.

Reply via email to