Thanks Scott for responding. We're not against Sitemesh 3, but we need your
help to fix these issues and we don't think we can get that done in a
timely manner.  Some of those tickets have been open for 8 months.

As for Sitemesh 2.6.0, if the intention is to never release it going
forward, we had discussed forking it into the grails project.  This will be
especially important if you think there won't be maintenance on it.

As for adopting Sitemesh 2.7.0, I noticed the buffer changes in 2.7.0 and
we would have to make it further compatible with 7 to adopt the latest
release.  If you can help us with these compatibility issues, we're happy
to adopt in the shorter term.

Our main issue is getting Grails 7 released though and the community
feedback we've received is there are too many issues to keep delaying
Grails 7.

-James

On Wed, Jul 2, 2025 at 1:26 PM Scott Murphy Heiberg <scottheib...@apache.org>
wrote:

> Sitemesh 3 was a complete rewrite that dramatically reduced the complexity
> of the rendering process.  It was also the introduction of the Apache 2
> license.  I would recommend just submitting a PR to Sitemesh 3 with
> whatever fixes are needed.
>
> Sitemesh 2.6.0 was never meant to be a replacement for anything and was
> just a quick patch for a codebase abandoned in 2009. It is a forked release
> with no future.
>
> If you were to revert to Sitemesh 2, the proper course would be to use
> Sitemesh 2.7.x
>
> On 2025/07/02 11:38:52 James Daugherty wrote:
> > Hi Everyone,
> >
> > I started investigating a ticket related to forwarding not working in a
> > Grails controller on 7.0.0-M4.  As part of that I made this discovery:
> >
> https://github.com/apache/grails-core/issues/14193#issuecomment-3017157073
> >  It seems the DispatcherServlet from Spring is designed to handle
> multiple
> > calls methods that cause the response to render and close.  The
> dispatcher
> > chooses  the right one by the committed state of the response.
> >
> > From my investigation, the Sitemesh 3 implementation appears to use a
> > filter to render its output after the DispatcherServlet is processed - so
> > the response state is never committed.  I think we could update the
> > GrailsDispatcherServlet to handle the various scenarios that the
> > DispatcherServlet handles, but I'm not sure this is practical for Grails
> 7
> > given the delays we have already had.  We would also be deviating from
> how
> > Spring MVC controllers are rendered and this logic doesn't appear that
> > simple.  Moreover, we still have several outstanding tickets related to
> the
> > sitemesh 3 upgrade:
> >
> > * Apr 2025 - https://github.com/apache/grails-core/issues/14193 -
> > forwarding from a controller
> > * Jan 2025 - https://github.com/apache/grails-core/issues/13988 - nested
> > layouts
> > * Feb 2005 - https://github.com/apache/grails-core/issues/14197 - $raw
> in
> > titles
> > * Nov 2024 - https://github.com/apache/grails-core/issues/13849 -
> layout by
> > convention
> >
> > We have reached out to the developer of Sitemesh 3 on most of these
> tickets
> > (via ticket comments and direct slack messages over the past few months);
> > we have yet to receive any work or progress on them. The oldest of which
> is
> > 8+ months old. I'm skeptical these can be finished in a reasonable time
> > frame.
> >
> >
> > Given the lack of support, the multiple issues found by users, and the
> > current state of Grails 7 being delayed by these tickets, I would like to
> > propose we revert back to Sitemesh 2.6.0.  Assuming we confirm all of
> these
> > issues are fixed, we would only have the remaining license, asset plugin
> > release, & ASF release related issues to fix before we could release
> Grails
> > 7.
> >
> >
> > I have gone ahead and reverted back to Sitemesh 2.6.0 in the issue14193
> > branch (https://github.com/apache/grails-core/tree/issue14193).  As
> part of
> > switching back to v2, I discovered the following is now fixed:
> > * async rendering
> > * async error handling
> > * layout specified by a controller property
> > * layout specified in controller property applied to a GSP that does not
> > contain a root html tag
> >
> > It seems the sitemesh3 upgrade was performed during a time when the
> project
> > wasn't running all of its tests, so we are only now learning the scope of
> > its impact.  I think we can still be open to switching to Sitemesh 3 in
> > Grails 8.  Especially if we get the necessary support, but otherwise, we
> > can continue with 2.x.
> >
> > Please note as part of this branch revert, I've also taken a closer look
> at
> > the Sitemesh licensing requirements and made a first pass being
> compatible
> > with the Sitemesh license.  We'll still have to follow-up with ASF legal
> to
> > ensure we're compliant since the license is a derivative of the ASF
> > license.
> >
> > -James
> >
>

Reply via email to