+1 (binding) Den søn. 18. okt. 2026 kl. 15.03 skrev James Fredley < [email protected]>:
> Hi Everyone, > > Priority is Grails 9.0.x by the end of November 2026 on Groovy 6 to > catch up. Follow with a quick 8.1.x on Spring Boot 4.1. Do the Spring > Boot 4.2 upgrade as 9.1.x on the Groovy 6 line. Treat 8.2.x as optional > and not preferred. Start a Grails 10 branch on Groovy 7 in the next few > months. Major versions will be driven by Spring Boot majors, Groovy > majors, or extreme breaking changes, targeting roughly one major per year. > > VERSIONING PRINCIPLES > > Major Grails versions are triggered by: > 1. Spring Boot / Spring Framework major releases (e.g. Spring Boot 5). > 2. Groovy major releases (now on an annual cadence). > 3. Extreme breaking changes > > Prefer to align the third category with the first two. This produces at > least one major version per year going forward (an acceleration from the > historical pace). Spring Boot ships a new major or minor roughly every 6 > months (typically May and November). Majors have historically landed > every 4 or 5 releases, aligned with Jakarta EE bumps, which are on a 2 > year schedule. When a Spring Boot major and a Groovy major coincide, we > will try to line them up so we do not ship two Grails majors in the same > year, going forward. > > Our existing versioning policy is documented in RELEASE.md (Appendix: > Versioning): > > https://github.com/apache/grails-core/blob/8.0.x/RELEASE.md > > As Apache Grails is built on the Spring Framework (Spring Boot), we > follow the Spring release versioning scheme and also release soon after > a Spring Boot release. > > The versioning scheme format is MAJOR.MINOR.PATCH[-MODIFIER] where: > - MAJOR: Indicates significant changes that may include breaking > changes. If incremented, may involve a significant amount of work to > upgrade. > - MINOR: Represents new features that are backward compatible. If > incremented, should involve little to no work to upgrade. > - PATCH: Refers to backward-compatible bug fixes. If incremented, should > involve no work. > - MODIFIER: Optional (e.g. -M<COUNT>, -RC<COUNT>, -SNAPSHOT). Final > releases have no modifier. > > MINOR VERSIONS > > Minor versions (x.y) are used for new features that remain backward > compatible and should involve little to no work to upgrade. In this plan: > - 8.1.x is a minor on the current Spring Boot 4.1 line for low-risk, > ready changes. > - 9.1.x is a minor on the Groovy 6 line for the Spring Boot 4.2 upgrade > so the major version bump is reserved for material breaking changes later. > - We prefer to use minors for Spring Boot upgrades that do not force > extreme breaking changes, keeping majors aligned with Groovy majors, > Spring Boot majors, or truly breaking changes. > > PROPOSED PLAN > > Most of these branches already exist and the work started. > > 1. Grails 9.0.x – Groovy 6 catch-up (priority) > 1. Base it on Groovy 6. > 2. Enable invokedynamic by default. > Turning invokedynamic off is not a viable default. In Groovy > 6.0.0 the classic call-site implementation has moved out of groovy-core > into the separate groovy-callsite module and is on a path to > deprecation. Core dispatch already uses invokedynamic. > 3. Include the two PRs from Scott related to JSON changes on Spring > Boot 4.1, plus any other minor and quick PRs that can be merged in time. > 4. Target 9.0.0 for the end of November 2026. > 5. Ship it as a focused release that brings Grails current with > Groovy 6 without waiting for the next Spring Boot line. Apache Groovy 7 > work has already started: https://github.com/apache/groovy > > 2. Grails 8.1.x – Quick release on Spring Boot 4.1 > 1. Base it on 8.0.x. > 2. Keep it on Spring Boot 4.1. > 3. Release it rather quickly (near-term). > 4. Include only low-risk, ready changes that do not delay the release. > > 3. Grails 9.1.x – Spring Boot 4.2 upgrade > 1. Base it on Groovy 6 and Spring Boot 4.2. > 2. Target 2027 Q1. Aim to release within one month of Spring Boot > 4.2 GA. > 3. Use this minor line for the Spring Boot 4.2 upgrade so the major > version bump is reserved for material breaking changes later. > 4. Set a firm target date to limit feature creep. > > 4. Grails 8.2.x – Optional / not preferred > 1. Would be based on Spring Boot 4.2 (still on Groovy 5). > 2. Small chance of doing this release. Preference is not to ship 8.2.x. > 3. Prefer to do the Spring Boot 4.2 upgrade on the 9.x line (Groovy > 6) so we do not support Spring Boot 4.2 on both Groovy 5 and Groovy 6. > > 5. Grails 10 (Groovy 7) – start branch soon > 1. Start the branch in the next few months. > 2. Base it on Groovy 7. > 3. Work on it in parallel with Groovy 7 development so Grails is > ready when Groovy 7 is released. > 4. Target release once Groovy 7 is released. > 5. This will be the next major, driven by the Groovy major (and > aligned with any Spring Boot major if timing works). > > The vote is open for a minimum of 72 hours and passes if a majority of > at least three +1 PMC votes are cast. > > [ ] +1 Approve the plan as described > [ ] 0 I don't have a strong opinion about this, but I assume it's ok > [ ] -1 Do not approve the plan because... > > Here is my vote: > > +1 (binding) > > James Fredley >
