+1 (binding) Den ons. 22. jul. 2026 kl. 20.09 skrev James Fredley < [email protected]>:
> I change my vote on 8.0.0-M4 to a 0. > > James Fredley > > On 2026/07/22 13:55:23 James Fredley wrote: > > https://github.com/apache/grails-core/pull/16011 has been updated > > > > On 2026/07/22 10:54:49 James Fredley wrote: > > > I have had very little time to work on this, but clearly think it is > important. > > > > > > Circling back to flags, since I was very confused. > > > > > > cliAutoProvision came from > https://github.com/apache/grails-core/pull/15948 and defaults to true > which means auto-adding grails-core-cli, grails-console, and discovered > *-cli companions > > > > > > legacyCommandSupport was also requested at some point and gpt-5.6 > didn't like it. But it will be added nested under cliAutoProvision so, > cliAutoProvision wins and legacyCommandSupport is only checked if > cliAutoProvision=true. I think legacyCommandSupport should default to > true. I am sure there will be disagreement, but if we always agreed, we > would be redundant. > > > > > > The flag for cliAutoProvision was already there, I was not aware of > it, but my PR had no intention of touching the split CLI side of this. My > initial intention was they would both work by default, no flags, since I > did not know about the flag, but having flags is fine. The Legacy PR, > until early AM today, ended up tied to cliAutoProvision, but now will be > based on cliAutoProvision and legacyCommandSupport. The Split CLI Plugin > commands will work exactly as they did in > https://github.com/apache/grails-core/pull/15948. legacyCommandSupport > is just a new flag for Grails 7 Plugin Commands working in Grails 8. > > > > > > https://github.com/apache/grails-core/issues/16035 - there appears to > be some additional work, if we want plugin CLI-only script-commands > excluded from plugin's normal runtime JARs, like was done for Grails > commands (ApplicationCommand implementations). > > > > > > James > > > > > > On 2026/07/21 22:33:36 James Fredley wrote: > > > > I don't think we are that far apart and I am willing to remove my -1 > vote on M4. > > > > > > > > Once https://github.com/apache/grails-core/pull/16011 is refreshed > in a few hours, we will likely be down to opt-in vs opt-out. > > > > > > > > https://github.com/apache/grails-core/pull/16011 feels closest to > https://github.com/apache/grails-core/pull/15409#issuecomment-4051635625, > although it appears we did remove those for 8.0.x > > > > > > > > GRAILS 8 - BREAKING CHANGES THAT HAVE A FLAG > > > > ============================================ > > > > > > > > Two kinds: > > > > > > > > OPT-OUT OF THE BREAK > > > > Grails 8 does the NEW thing by default. > > > > You set a flag if you still want the OLD (Grails 7) behavior. > > > > > > > > OPT-IN TO THE BREAK / NEW THING > > > > Grails 8 keeps the conservative or off path by default. > > > > You set a flag if you want the NEW thing (or a temporary old > stack). > > > > > > > > 1) OPT-OUT OF THE BREAK > > > > (new default ON - set flag to restore Grails 7) > > > > -------------------------------------------------- > > > > > > > > GORM unconstrained domain properties are nullable > > > > Flag: grails.gorm.default.nullable > > > > 8.0: true (nullable - NEW) > > > > Old: grails.gorm.default.nullable = false > > > > Also: grails.gorm.default.constraints = { '*'(nullable: false) } > > > > > > > > Accept header honored for all clients (including browsers) > > > > Flag: grails.mime.disable.accept.header.userAgents > > > > 8.0: unset (honor Accept - NEW) > > > > Old: set back to Gecko, WebKit, Presto, Trident > > > > > > > > MIME types supplied by the framework > > > > Flag: grails.mime.types (full block still REPLACES defaults) > > > > Flag: grails.mime.mergeDefaults > > > > 8.0: framework defaults when you declare nothing > > > > Note: mergeDefaults=true is optional if you want to ADD types > > > > without re-listing everything > > > > > > > > Jackson 3 is the default mapper stack > > > > Flag: spring.jackson.use-jackson2-defaults > > > > 8.0: Jackson 3 / JsonMapper (NEW) > > > > Old: spring.jackson.use-jackson2-defaults = true > > > > (temporary migration aid for Jackson 2-style defaults) > > > > > > > > Hibernate native query date/time types (java.time) > > > > Flag: hibernate.query.native.prefer_jdbc_datetime_types > > > > 8.0: java.time types (NEW) > > > > Old: prefer_jdbc_datetime_types = true > > > > > > > > Hibernate 7 Oracle float mapping > > > > Flag: hibernate.dialect.oracle.use_binary_floats > > > > Old: use_binary_floats = false > > > > > > > > Hibernate 7 array JDBC type > > > > Flag: hibernate.type.preferred_array_jdbc_type > > > > Old: preferred_array_jdbc_type = VARBINARY > > > > > > > > DevTools live reload off by default (Boot 4) > > > > Flag: spring.devtools.livereload.enabled > > > > 8.0: false (NEW Boot default) > > > > Old: true under development if you still want it > > > > > > > > Groovy/Java parameter names preserved for compilation > > > > Flag: grails { preserveParameterNames = ... } > > > > 8.0: true (NEW) > > > > Old: preserveParameterNames = false > > > > > > > > Boot defaultViewResolver removed for Grails web apps > > > > Flag: grails.web.removeDefaultViewResolverBean > > > > 8.0: removed (effective true) > > > > Old: removeDefaultViewResolverBean = false > > > > Note: spring.gsp.removeDefaultViewResolverBean still honored, > > > > deprecated > > > > > > > > Boot welcome-page mapping removed > > > > Flag: grails.web.removeWelcomePageMapping > > > > 8.0: removed > > > > Old: removeWelcomePageMapping = false > > > > > > > > Boot catch-all static resource mappings off > > > > Flag: spring.web.resources.add-mappings > > > > 8.0: false (NEW for Grails) > > > > Old: add-mappings = true > > > > > > > > Form content filter on PUT/PATCH/DELETE > > > > Flag: spring.mvc.formcontent.filter.enabled > > > > 8.0: true (NEW; DELETE included) > > > > Old: enabled = false > > > > > > > > Auto-applied Grails BOM (replaces Spring DM plugin) > > > > Flag: grails.bom / deprecated grails.springDependencyManagement > > > > 8.0: grails-bom applied automatically > > > > Old: bom = null > > > > or springDependencyManagement = false > > > > > > > > TagLib closure deprecation warning > > > > Flag: grails.taglib.warnDeprecatedClosures > > > > 8.0: warn (default) > > > > Old: warnDeprecatedClosures = false > > > > > > > > Undertow max HTTP post size hardened > > > > Flag: server.undertow.max-http-post-size > > > > 8.0: 2MB > > > > Old: -1 for unlimited > > > > > > > > > > > > 2) OPT-IN TO THE NEW THING > > > > (default OFF or conservative - set flag to get new behavior) > > > > -------------------------------------------------------------- > > > > > > > > Groovy invokedynamic > > > > Flag: grails { indy = true } > > > > Default: false > > > > > > > > Compile controllers/services/taglibs with @GrailsCompileStatic > > > > Flag: grails { compileStatic { controllers/services/tagLibs = > true } } > > > > or compileStatic { all = true } > > > > Default: all false > > > > Note: per-class @CompileDynamic still wins > > > > > > > > Hibernate 7 (instead of default Hibernate 5) > > > > Flag: dependency / BOM choice (grails-hibernate7, hibernate7 BOMs) > > > > Default: Hibernate 5 > > > > > > > > Micronaut integration > > > > Flag: add grails-micronaut + Micronaut-compatible BOM as > > > > enforcedPlatform; JDK 25 required if used > > > > Default: off > > > > > > > > MIME merge onto framework defaults (instead of replace) > > > > Flag: grails.mime.mergeDefaults = true > > > > Default: false > > > > > > > > James > > > > > > > > On 2026/07/21 20:19:39 James Daugherty wrote: > > > > > I've made my case in the discussion thread I opened, and the shift > being asked here is the opposite of every other major change we've done. > Its also arbitrary compared to past breaking changes. The inconsistency is > frustrating & tantamount to: we effectively can't ever deprecate an API in > the future because it breaks plugins. This needs resolved before we proceed > as it goes against our major release policy on breaking changes. > > > > > > > > > > There's not sufficient communication happening to resolve this so > I think we should cancel the vote until there's time to discuss or these > issues can be worked through. > > > > > > > > > > On 2026/07/21 19:58:23 James Fredley wrote: > > > > > > M4 target was 7/22, it being early without > https://lists.apache.org/thread/nq8f7yqtfp13wjbckkjxt1y82lrwkjq2 address, > really caught me off guard. > > > > > > > > > > > > 2. Release 8.0.0-M4 by Wednesday (July 22) next week > > > > > > - would include the undertow support + reproducible fixes + cli > split > > > > > > - last release of new features or breaking changes > > > > > > > > > > > > If we are committed to getting some form of Grails 7 plugin in > Grails 8 backwards compatibility in RC1 or M5, I will be willing to change > my vote to 0. > > > > > > > > > > > > https://github.com/apache/grails-core/pull/16011 - is being > updated right now to hopefully somewhere closer to a comprise. > > > > > > > > > > > > I think the number of hours and days of week we have worked on > this as volunteers was historically unsustainable and is not something I > have been able to maintain this year and will not be doing going forward. > 72 hour turn around is the ASF expectation and that's what I will try to > do. Many time sooner, but I can't look at Apache Grails every day of the > month. > > > > > > > > > > > > James > > > > > > > > > > > > On 2026/07/21 13:29:06 James Fredley wrote: > > > > > > > I am a -1 until we figure out a path for end users that does > not require them waiting on plugins to be re-released to use plugin > commands in Grails 8. Grails 7 is EOL and users have to move to Grails 8 > basically upon release, let's not break their ability to use Plugin > Commands from the existing already published Grails 7 plugins, if we do not > have to. > > > > > > > > > > > > > > https://github.com/apache/grails-core/pull/15948 was merged > before a path was identified and we only addressed 1 of 4 paths that > provide commands. > > > > > > > > > > > > > > https://github.com/apache/grails-core/pull/16011 - provides a > path, we can debate that path, but I am firm that it should be the default > for the reason in the first paragraph. Let's not hurt the framework. > > > > > > > > > > > > > > James > > > > > > > > > > > > > > On 2026/07/21 09:35:43 Mattias Reichel wrote: > > > > > > > > Hi Everyone, > > > > > > > > I am happy to start the VOTE thread to release Apache Grails > 8.0.0-M4! > > > > > > > > > > > > > > > > Release notes for the release are here: > > > > > > > > https://github.com/apache/grails-core/releases/tag/v8.0.0-M4 > > > > > > > > > > > > > > > > The tag for this release is: > > > > > > > > https://github.com/apache/grails-core/releases/tag/v8.0.0-M4 > > > > > > > > > > > > > > > > Tag commit id: cb35496301c5423a557034394ce814dc1e1a36fa > > > > > > > > > > > > > > > > The artifacts to be voted on are located as follows (r86111): > > > > > > > > Source release: > > > > > > > > > https://dist.apache.org/repos/dist/dev/grails/core/8.0.0-M4/sources > > > > > > > > Binary distributions: > > > > > > > > > https://dist.apache.org/repos/dist/dev/grails/core/8.0.0-M4/distribution > > > > > > > > > > > > > > > > Release artifacts are signed with a key from the following > file: > > > > > > > > https://dist.apache.org/repos/dist/release/grails/KEYS > > > > > > > > > > > > > > > > Please vote on releasing this package as: Apache Grails > 8.0.0-M4. > > > > > > > > > > > > > > > > Reminder on ASF release approval requirements for PMC > members: > > > > > > > > > https://www.apache.org/legal/release-policy.html#release-approval > > > > > > > > > > > > > > > > Hints on validating checksums/signatures (but replace md5sum > with sha512sum): > > > > > > > > https://www.apache.org/info/verification.html > > > > > > > > > > > > > > > > Details of our release process are documented at: > > > > > > > > https://github.com/apache/grails-core/blob/HEAD/RELEASE.md > > > > > > > > > > > > > > > > As a reminder, most of our tools support an env > `GRAILS_REPO_URL` so > > > > > > > > that the tools can work with staged artefacts. Set it to the > staging > > > > > > > > repo like this: `export > > > > > > > > GRAILS_REPO_URL= > https://repository.apache.org/content/groups/staging` > <https://repository.apache.org/content/groups/staging> > > > > > > > > > > > > > > > > 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 Release Apache Grails 8.0.0-M4 > > > > > > > > [ ] 0 I don't have a strong opinion about this, but I assume > it's ok > > > > > > > > [ ] -1 Do not release Apache Grails 8.0.0-M4 because... > > > > > > > > > > > > > > > > Here is my vote: > > > > > > > > +1 (binding) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
