Replies: 8 comments 8 replies
-
I think it is important to find the right balance by not giving up on some of the multi-repository plugins, while still moving plugins that are closely related to Grails core into the core repository. Moving plugins that have a circular dependency with the core into the same repository to save time in the build process makes sense. |
Beta Was this translation helpful? Give feedback.
-
Some additional insights: Historically they were combined:Several of these plugins were originally under grails-core. It makes sense to move them back now that development happens at a slower pace & since the group working on grails is smaller. Simplifies Development during a time that Grails is facing a major upgradeIf we want to upgrade to Groovy 4, Hibernate 6, Spring Boot 3, etc there are significant package renames in these major releases. It's a lot more difficult to do this upgrade when we have the upgrade spread across multiple repositories that have to be incrementally updated. @davydotcom recently pointed out that grails-core, grails-data-mapping, and grails-async have a circular dependency. While GORM can still be a separate plugin, I think moving to a single source repo makes sense to simplify the next major upgrade. Going forward, Grails will face these upgrades more in the futureThis will be even more important if Grails wants to maintain pace with the latest Spring Boot version since it now has a much shorter supported lifespan: https://endoflife.date/spring-boot . Simplifies Grails Release ProcessTo expand on what @sdelamo stated, to release Grails currently, the following has to happen:
The package renames would be greatly complicated if we have to follow this release structure. |
Beta Was this translation helpful? Give feedback.
-
I agree with @sbglasius, there is a balance to be found here.
And so on with Isn't there a risk we will make the If this is to be done, is it something that should be resolved before Grails 7? Hopefully package renaming is a rare thing to happen. |
Beta Was this translation helpful? Give feedback.
-
There are cyclical dependencies that need combined at the least. For example, grails-core needs grails-data-mapping to run tests, grails-data-mapping needs grails-async, grails-async cyclically depends on grails-core. There is most definitely a balance that can be accommodated here. I do NOT believe all of these need to necessarily be merged back in. |
Beta Was this translation helpful? Give feedback.
-
@sdelamo How does Micronaut handle this? Micronaut 4.0 is also a major release, are there any best practices to share? |
Beta Was this translation helpful? Give feedback.
-
I agree the project structure should accommodate a smaller team working on it even if that requires the main project to be fatter. What I miss in the list of candidate plugins is the Websocket plugin we are using a lot (we are building web GUIs for industrial machines involving serial port and socket communication that trigger UI changes). Apart from us though, websocket is a standard web technology that, in my opinion, should not be left behind. |
Beta Was this translation helpful? Give feedback.
-
Dependency upgrades and code refactoring are a prerequisite to ensure that tests are not broken. |
Beta Was this translation helpful? Give feedback.
-
agree with this @sdelamo, simplify it right now, move the key plugins back in , except for the GORM related ones. |
Beta Was this translation helpful? Give feedback.
-
Grails have used a multi-repository strategy for a long time.
Positives
Negatives
A Grails Framework release is a multi-release process. It involves plugin releases, updates to the Grails BOM (located in grails-core), and a final
grails-core
release.grails-core
RC version.grails-core
BOM is updated with the GA version of the plugins.grails-core
is released.Pitch - moving several plugins into Grails core.
Nowadays, Grails development is not active. Thus, many of the positives of a multi-repository strategy no longer apply. Because of that, many in the Grails Community Steering Committee consider that it would be worth migrating back into the
grails-core
repository several of the core plugins. Having a fatgrails-core
will simplify releases of the framework. As doing a Grails release would mean doing just agrails-core
release.I have identified the following candidates:
GORM is decoupled from grails. You can use GORM in a plain SpringBoot or Micronaut application.
However, we should evaluate which, if any, of the following repositories we should consider merging back to core:
I want to get feedback from the Grails community. Is it a good idea to merge some of the repositories back into grails-core and archive those merged repositories? What do you think about the list of repository candidates?
Beta Was this translation helpful? Give feedback.
All reactions