Hi Everyone,

In the weekly meeting we briefly discussed the outstanding items to release
the first Apache milestone:
https://lists.apache.org/thread/hm3v6ooqqchms81tljk8h2vpvtj1qfcf

I think this discussion merits its own mailing list thread and I'm
interested to hear everyone's thoughts on the current plans.  From our
meeting: we think the current code line now is functional end-to-end.  We
now need to determine what should be finished so we can release 7.0.0-M4.
>From my notes, the following needs completed to proceed with an Apache
Grails milestone release:

# We will likely wait for Groovy 4.0.27 with Paul's reproducibility fixes.
# (assigned to James D) We need to create a script used to verify our
build (so we can satisfy Security's requirements)
# (assigned to James D) We need to create a gradle script to publish
the source/jars to the Apache distribution locations. We plan to model
it after the groovy-release repo.
# (assigned to James D) We need to have GitHub only stage, not
"release".  This requires minor build updates on our side.  We intend
to manually release the jars to maven central as part of our voting
workflow.
# (assigned to Mattias) spring-security has to be released & headers added.

I think we have some other outstanding items too, but it's not clear to me
if they need to be done to perform a release:
# We need to rebrand "Grails" to "Apache Grails" in our documentation.
# We need to remove references to the Grails Foundation on the website
# We need to deploy the grails.apache.org website.


Here's my first attempt at a summary of 7.0.0-M4:

Apache Grails 7.0.0-M4 is the first release for Grails under the Apache
Software Foundation (ASF).  This release focuses first on meeting the
requirements of the ASF & improving the developer experience of Grails
itself & Grails Applications.  As part of this transition, the developers
moved to a mono repository, reworked the way the various Grails CLIs work,
modernized its build system, modernized the various Grails Gradle Tasks,
modernized the various Grails Gradle Plugins, worked towards reproducible
builds, added license headers to our source code, and changed the maven
coordinates of all Grails Artifacts.

Here is the detailed list since 7.0.0-M3:
* PR #14750 - support non-persistent super classes for @Autotimestamp
* Issue #14745 - remove deprecated doc method on Grails Plugins
* Issue #14745 - remove duplicate grails.factories & grails-plugin.xml
files now that AST generation is working correctly
* Issue #14745 - switch to Spring Boot 3.5.0-RC1 with Spring Framework
6.2.7 due to bug (
https://github.com/spring-projects/spring-framework/issues/34796)
* Issue #14745 - change the grails-gradle-model to export Groovy 3 due to
Gradle Task isolation in later versions of Gradle
* Issue #14745 - rework the FindMainTask to correctly set the main
Application class on BootWar, BootJar, & BootRun
* Issue # 14745 - remove org.grails.plugins.CodecGrailsPlugin;
use org.grails.plugins.codecs.CodecsGrailsPlugin instead
* Issue # 14745 - remove the remaining pathingJar task functions
* Issue # 14745 - fix a databinding scenario in DataBindingUtils to lookup
a domain object
* PR #14749 - retire Mongo 5.0 & 6.0 test pipelines since those versions
are end of support
* PR #14746 - switch to asset-pipeline-gradle to 5.0.9
* PR #14743 - remove redundant buildScript from test projects
* Issue #14706 - rework grailsw to be usable indepedendently of SDKMAN
installs
* Issue #14706 - rework grails-shell-cli to be usable independently of
SDKMAN installs
* Issue #14706 - rework the command cli to support a grailsw that can
self-update either forge or legacy shell cli
* Issue #14706 - distribute a delegating CLI that can call either forge or
the legacy shell cli
* Issue #14706 - rework the legacy shell cli to correctly find profiles
* Issue #14706 - rework both grailsw & grails-shell-cli to be testable
outside of releases
* Issue #14679 - generate reproducible groovydoc jars
* Issue #14679 - fix profile compilation to generate reproducible jars
* Issue #14679 - ensure groovydoc is used instead of javadoc for
documentation jars
* PR #14709 - switch to Gradle 8.14
* PR #14678 - add support for external config locations
* Refactor grails into a mono repo (grails-views, gsp, data mapping, geb,
etc are all merged into core now)
* As part of the mono repo transition, several Deprecated classes were
removed from the views project; see the upgrade guide for the details.
* Issue #14679 - refactor grails build to be parallel & lazy
* Issue #14679 - change all Grails gradle tasks to support Caching where
appropriate and support lazy style configuration
* Issue #14679 - Redesign the Grails Data TCK to support modern versions of
Java
* Issue #14679 - Support consistent property dates in generated property
files when SOURCE_DATE_EPOCH is set
* Issue #14679 - Make grails.factories generation reproducible
* Issue #14679 - Refactor Grails AST Transformations to take advantage of
Groovy's TransformWithPriority and enforce transforms always run in the
order defined by the class `GroovyTransformOrder`
* Issue #14679 - Remove manifest attributes that could vary on the Grails
jars (Built-By, Created-By etc)
* Issue #14679 - Fix sourcejar creation to not contain duplicates
* Issue #14679 - Fix javadoc jars to be generated based on groovydoc & to
not contain duplicates
* Issue #14679 - Change AST transforms to be reproducible by adopting
determined ordering collections
* Issue #14679 - Configure Grails jars per Gradle's reproducibility
requirements (fixed permissions, reproducible file order, etc)
* Issue #13850 - introduce `grails-common` to share common code between
Grails Data Mapping & Grails-Core
* Issue #14679 - add scripts to confirm reproducibility of Grails;
currently 14 of 290 jars are reproducible
* Issue #14679 - make TagLib lookups reproducible
* PR# 14671 - switch to webjars for test css/js assets instead of checked
in files
* The Grails Gradle plugin had a bug that caused plugin resolution issues
that was fixed after the last milestone.
* Rework the grails bom to generate valid Gradle modules, be easier to
maintain, and valid pom files.  Enhance the documentation process to parse
the bom & generate the published versions in the grails doc.


And in addition to all of this:
* We changed all coordinates of Grails to be org.apache.grails based. See
https://github.com/apache/grails-core/blob/7.0.x/RENAME.md for how we
mapped these libraries.  There is also a script documented in the upgrade
guide to assist in upgrading.
* Significant test fixes
* Significant documentation updates & changes
* Addition of license headers to Grails Source
* Addition of NOTICE to Grails Source
* Created https://repo.grails.org/grails/restricted/ to replace
https://repo.grails.org/grails/core longer term.  This virtual repo's scope
is significantly reduced to help reduce the chance of using outdated
libraries.


I'm hoping this recap is a starting point for the release notes of
7.0.0-M4.  I'm sure I've missed something too.  What are people's thoughts
on the nexts steps and these notes?

-James

Reply via email to