We meet every week via a google meeting. The times alternate each week to encourage attendance from multiple time zones. Each week we will provide a summary here to facilitate historical preservation & further discussion. If you would like to join this meeting, you can do so here: https://meet.google.com/her-tjpt-xmf
* Reminder: no meeting on 12/24 or 12/31 * Authorship PR has been merged (https://github.com/apache/grails-core/pull/15274) - for code that is public domain with author tags, we decided to leave them - for co-authors not in git, we can leave them - opened ticket https://github.com/apache/grails-core/issues/15299 to remove authors except above circumstances * Hibernate 6 discussion - Hibernate 6 removed the Criteria API. Majority of tests are passing, but there are significant tests that may need to be fixed - Hibernate 7 has id generation issues, but otherwise passes the same tests as 6. We need to fix the id generation issues as the next step. Id is likely an issue in hibernate 6 too. - Hibernate 6 & 7 are working on individual branches. - Walter proposal: since most of the code is working on Grails 7.1, we should attempt to use Grails 7.1 to shake out the current progress. - 5 tests are broken (including a proxy related test) - Recap of Migration Strategy for Hibernate 6: DetachedCriteria remains in Gorm and acts as a “collector” for all of the query components. We then call the new API & build the query. - Hibernate 7 Changes -- persist / merge instead of save/update (follows JPA naming) -- persit => save, merge means you have to fetch, merge, and then persit to update - a lot of build work to "choose" between 2 hibernate versions -- maven 3.x doesn't support exclusions -- we'll want to use classifiers to select between versions similar to ehcache strategy - Branches: -- 8.0 Grails => Hibernate 7; 7.1 Grails => Hibernate 6 - Spring Boot 3.x is on Hibernate 6.6 which is JPA 3.1 - Spring Boot 4.0.0 is on Hibernate 7.1.8.Final which is JPA 3.2 - Possible next steps for Hibernate: -- build changes in 8.0 -- release hibernate 6.6 on 8-M1 & Spring Boot 3.x -- possible milestones for hibernate 6 & 8 issues -- Release Hibernate 7.x on 8-M2 and Spring Boot 4 -- Later branches for 8.0 dev * Decision: - build changes in Grails 8.0 to support classifier to select hibernate version - Hibernate 7.x in Grails 8 - will skip general availability of Hibernate 6.x due to documentation and other updates that will need to change on Hibernate 7 * Still need to test https://github.com/apache/grails-core/pull/15266 for breaking change - James will try to do before our next meeting * Discussed dependabot branches and if CI should be running - Mattias pointed out that we want to continue to restrict our branches and then rely on PRs to run CI * Eliminated old tomcat logging library: https://github.com/apache/grails-core/pull/15275 * Groovy issues have been found: - for loop issue: https://issues.apache.org/jira/browse/GROOVY-11818 - invoke dynamic + compile static - https://issues.apache.org/jira/browse/GROOVY-11817 -- opened https://github.com/apache/grails-core/pull/15296 to document performance workaround, and started discussion on Groovy mailing list for performance issues with Groovy 5 - Micronaut Update -- side branch is out there, need volunteers. Only remaining issue is that beans created exclusively in the micronaut context aren't being reflected back into the spring context. If we reflect all beans, it results in bean duplicates. -- need to follow-up with how the spring starter is expected to work for micronaut & spring apps since without selectively reflection, it's unclear how this works with spring - Apache Grails Dec board report -- was pre-approved - Discussion for i18n translations as jar file -- proposal: continue to generate property files by default -- optional: like the webjar added functionality, have a jar option so customizations can be loaded from jar / property files don't have to exist by default -- ticket opened: https://github.com/apache/grails-core/issues/15300 - Liquibase is relicensing & ending OSS support -- fork @ https://github.com/petergeneric/liquibase-oss but not maintained -- liquibase extensions for hibernate 5 versions are still Apache 2.0: https://mvnrepository.com/artifact/org.liquibase.ext/liquibase-hibernate5 and the last release was Apr 03, 2024 -- Liquibase extensions for hibernate 6 versions prior to 5.0.x are Apache 2.0: https://mvnrepository.com/artifact/org.liquibase.ext/liquibase-hibernate6, Liquibase does not plan to release any further 4.x.x updates after 4.33.0 from Jul 09, 2025, and is only focused on 5.0.x. -- There is not, as of 12/17/2025, a version of the Liquibase extensions for hibernate 7, which provides integration including generating changesets based on changed hibernate mapping files, which is odd given Hibernate 7 was released May 19, 2025. The dbmigration plugin is built on top of the Liquibase extensions. The lack of this extension for hibernate 7 might be a bigger issue for us. -- James Fredley still believes there is a good chance hibernate 5.6 jakarta will work in Grails 8 given the minor changes between JPA 3.0 and 3.2, Spring Boot 3.5.x is already JPA 3.1 and we are cheating the version of JPA for grails-data in Grails 7. If it plays out that way, Grails 8 could have two grails-data options hibernate 5.6 jakarta (legacy) and hibernate 7.1 (new) -- For Grails, the dbmigration plugin is a non-default, optional dependency and the liquibase code and binaries are not shipped directly. We need to decide how to handle this going forward. -- Possibility: Additionally we could add a Flyway Plugin to make Liquibase even more optional. Possibly starting with https://github.com/saw303/grails-flyway. But, Flyway is "open core" and the following features are only included in the commercial, subscription-based license, which is not open source. The community edition is Apache 2.0 licensed. -- advanced tools like undo migrations, dry-run previews, error overrides, automated drift detection, schema model generation, integration with Redgate's comparison tools (e.g., SQL Compare), enhanced reporting, and priority support. Enterprise further includes enterprise-grade automation, compliance controls, and scalability for large teams or multi-database environments - mimetype discussion -- Scott noted that the mime detection is turned off by default still and it's confusing that if you set it to empty, it still leaves it turned off. -- proposal for 8.0 to enable detection by default. -- TODO: Open ticket. - we briefly discussed the bom property expansion and Scott's desire to reduce the number of properties. We will revisit that topic in the next meeting.
