+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)
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to