| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <title>Maturity Model | Grails® Framework</title> |
| <meta name="keywords" content="grails,jvm,framework,groovy,gradle,spring-boot,gorm"/> |
| <meta name="description" content="A powerful Groovy-based web application framework for the JVM built on top of Spring Boot"/> |
| <meta name="date" content="July 5, 2026"/> |
| <meta name="robots" content="all"/> |
| <meta name='twitter:card' content='summary_large_image'/> |
| <meta name='twitter:site' content='@grailsframework'/> |
| <meta name='twitter:description' content='A powerful Groovy-based web application framework for the JVM built on top of Spring Boot'/> |
| <meta name='twitter:creator' content='@grailsframework'/> |
| <meta property='og:image' content='https://grails.apache.org/images/grails.png'/> |
| <meta property='og:url' content='https://grails.apache.org/maturity.html'/> |
| <meta property='og:title' content='Maturity Model | Grails® Framework'/> |
| <meta property='og:description' content='A powerful Groovy-based web application framework for the JVM built on top of Spring Boot'/> |
| <meta property='og:type' content='website'/> |
| |
| <meta charset='UTF-8'/> |
| <meta name='viewport' content='width=device-width, initial-scale=1'/> |
| <link rel='icon' href='https://grails.apache.org/images/favicon.ico'/> |
| <link rel='mask-icon' href='https://grails.apache.org/images/grails-pinned-icon.svg' color='feb672'/> |
| <link rel='alternate' type='application/rss+xml' title='RSS' href='https://grails.apache.org/rss.xml'/> |
| <link rel='stylesheet' href='https://grails.apache.org/stylesheets/screen.css'/> |
| <link rel='stylesheet' href='https://grails.apache.org/stylesheets/plugin.css'/> |
| <script src='https://grails.apache.org/javascripts/navigation.js'></script> |
| |
| <!-- Matomo --> |
| <script> |
| var _paq = window._paq = window._paq || []; |
| _paq.push(['setDoNotTrack', true]); |
| _paq.push(['disableCookies']); |
| _paq.push(['trackPageView']); |
| _paq.push(['enableLinkTracking']); |
| (function() { |
| var u = 'https://analytics.apache.org/'; |
| _paq.push(['setTrackerUrl', u + 'matomo.php']); |
| _paq.push(['setSiteId', '79']); |
| var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0]; |
| g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s); |
| })(); |
| </script> |
| <!-- End Matomo Code --> |
| |
| <script |
| async |
| src="https://widget.kapa.ai/kapa-widget.bundle.js" |
| data-website-id="d804a9f2-51a2-414c-97f7-12f2a1ba4609" |
| data-project-name="Apache Grails" |
| data-project-color="#3F4346" |
| data-font-family="system-ui,-apple-system,BlinkMacSystemFont,Roboto,Helvetica,Arial,Segoe UI,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;" |
| data-project-logo="https://grails.apache.org/images/grails.png" |
| data-modal-override-open-id="ask-ai-input" |
| data-modal-override-open-class="search-input" |
| data-user-analytics-fingerprint-enabled="true" |
| data-modal-title="Apache Grails AI Assistant" |
| data-modal-example-questions-title="Try asking me..." |
| data-modal-example-questions="How does database migration work?,How does Spring Security work?" |
| data-button-text-color="#FBB576" |
| data-modal-header-bg-color="#FFFFFF" |
| data-modal-title-color="#FBB576" |
| data-consent-required="true"></script> |
| |
| |
| <link rel='stylesheet' href='https://grails.apache.org/stylesheets/paginate.css'/> |
| <script src='https://grails.apache.org/javascripts/paginate.js'></script> |
| |
| <link rel='stylesheet' href='https://grails.apache.org/stylesheets/support.css'/> |
| |
| <script src='https://grails.apache.org/javascripts/plugins.js'></script> |
| </head> |
| <body> |
| <header class='main-header'> |
| <div class='content'> |
| <a href='https://grails.apache.org/index.html'><img class='grails-logo' src='https://grails.apache.org/images/grails_logo.svg' alt='Grails Logo'/></a> |
| <a href='javascript:show("top-menus", "show-navigation-link")' id='show-navigation-link' |
| class='mobile align-center'>Show Navigation</a> |
| <div id='top-menus'> |
| <nav class='secondary-menu' id='secondary-menu'> |
| <ul> |
| <li><a href='https://grails.apache.org/casestudies/index.html'>Case Studies</a></li> |
| <li><a href='https://grails.apache.org/blog/index.html'>Blog</a></li> |
| <li><a href='https://grails.apache.org/learning.html'>Learning</a></li> |
| <li><a href='https://grails.apache.org/community.html'>Community</a></li> |
| <li><a href='https://grails.apache.org/search.html'>Search</a></li> |
| </ul> |
| </nav> |
| <nav class='main-menu' id='main-menu'> |
| <ul> |
| <li><a href='https://grails.apache.org/documentation.html'>Documentation</a></li> |
| <li><a href='https://grails.apache.org/download.html'>Download</a></li> |
| <li><a href='https://grails.apache.org/plugins.html'>Plugins</a></li> |
| <li><a href='https://grails.apache.org/guides'>Guides</a></li> |
| <li><a href='https://grails.apache.org/faq.html'>FAQ</a></li> |
| <li><a href='https://grails.apache.org/support.html'>Support</a></li> |
| <li><a href='https://start.grails.org'>Forge App</a></li> |
| </ul> |
| </nav> |
| </div> |
| </div> |
| </header> |
| |
| <article><div class='header-bar chalices-bg'> |
| <div class='content'> |
| <h1>Maturity Model</h1> |
| </div> |
| </div> |
| <div class='content'> |
| <article> |
| <p> |
| <em>This page reflects the Apache Grails project's self-assessment of their maturity according to the |
| <a href="https://community.apache.org/apache-way/apache-project-maturity-model.html">ASF Project |
| Maturity Model</a>.</em> |
| </p> |
| |
| <h2>Code</h2> |
| |
| <h3>CD10</h3> |
| |
| <p>The project produces Open Source software for distribution to the public at no charge.</p> |
| |
| <p>All code is under the Apache license (or compatible 3rd party licenses) and available from ASF distribution |
| channels and GitHub.</p> |
| |
| <h3>CD20</h3> |
| |
| <p>Anyone can quickly discover and access the project's code.</p> |
| |
| <p>The code is available under ASF/GitHub, and the project’s website contains instructions on how to obtain it. |
| </p> |
| |
| <h3>CD30</h3> |
| |
| <p>Anyone using standard, widely available tools can build the code reproducibly.</p> |
| |
| <p>The project includes instructions on required prerequisites and instructions on how to build the software. |
| </p> |
| |
| <h3>CD40</h3> |
| |
| <p>The complete history of the project's code is available via a source code control system, which allows anyone |
| to recreate any released version.</p> |
| |
| <p>The latest code is available from ASF/GitHub, and previous versions have been tagged. Previous releases since |
| joining are archived at the ASF and available for download.</p> |
| |
| <h3>CD50</h3> |
| |
| <p>The source code control system establishes the provenance of each line of code in a reliable way, based on |
| strong authentication of the committer.</p> |
| |
| <p>When third parties contribute code, commit messages provide reliable information about the code provenance. |
| All code is committed via version control. The LICENSE file also lists 3rd party code and its license.</p> |
| |
| <h2>Licenses and Copyright</h2> |
| |
| <h3>LC10</h3> |
| |
| <p>The Apache License, version 2.0, covers the released code.</p> |
| |
| <p>The code is licensed under the Apache License 2.0.</p> |
| |
| <h3>LC20</h3> |
| |
| <p>Libraries that are mandatory dependencies of the project's code do not create more restrictions than the |
| Apache License does.</p> |
| |
| <p>Extensive work has been done on third-party licenses for both the source release and convenience binaries. |
| One issue with a Hibernate dependency has been discussed and is subject to further resolution but isn't the |
| sole mandatory option for this functionality. |
| Further work is expected to remove the licensing issue with this dependency.</p> |
| |
| <h3>LC30</h3> |
| |
| <p>The libraries mentioned in LC20 are available as Open Source software.</p> |
| |
| <p>All mandatory dependencies are open source software.</p> |
| |
| <h3>LC40</h3> |
| |
| <p>Committers are bound by an Individual Contributor Agreement (the "Apache iCLA") that defines which code they |
| may commit and how they need to identify code that is not their own.</p> |
| |
| <p>All committers have signed ICLAs.</p> |
| |
| <h3>LC50</h3> |
| |
| <p>The project clearly defines and documents the copyright ownership of everything that the project produces. |
| </p> |
| |
| <p>The LICENSE and NOTICE files list additional information needed here.</p> |
| |
| <h2>Releases</h2> |
| |
| <h3>RE10</h3> |
| |
| <p>Releases consist of source code, distributed using standard and open archive formats that are expected to |
| stay readable in the long term.</p> |
| |
| <p>Releases are source code and are performed and distributed in the standard ASF way.</p> |
| |
| <h3>RE20</h3> |
| |
| <p>The project's PMC (Project Management Committee, see CS10) approves each software release to make the release |
| an act of the Foundation.</p> |
| |
| <p>Each release has been voted on, following ASF policy, by the PPMC.</p> |
| |
| <h3>RE30</h3> |
| |
| <p>Releases are signed and/or distributed along with digests that anyone can reliably use to validate the |
| downloaded archives.</p> |
| |
| <p>Releases are signed and the release area on the website includes hashes and links to KEYs files.</p> |
| |
| <h3>RE40</h3> |
| |
| <p>The project can distribute convenience binaries alongside source code, but they are not Apache Releases, they |
| are provided with no guarantee.</p> |
| |
| <p>Convenience binaries are distributed alongside source releases. Their LICENSE and NOTICE files are correct. |
| </p> |
| |
| <h3>RE50</h3> |
| |
| <p>The project documents a repeatable release process so that someone new to the project can independently |
| generate the complete set of artifacts required for a release.</p> |
| |
| <p>Releases have been made by several release managers and the project includes documentation on how to make a |
| release. The last release included a standard incubating DISCLAIMER. There is some minor work to be done on |
| documenting the release process and improving the release scripts.</p> |
| |
| <h2>Quality</h2> |
| |
| <h3>QU10</h3> |
| |
| <p>The project is open and honest about the quality of its code. Various levels of quality and maturity for |
| various modules are natural and acceptable as long as they are clearly communicated.</p> |
| |
| <p>All code is reviewed by at least one committer before being merged and must pass CI checks.</p> |
| |
| <h3>QU20</h3> |
| |
| <p>The project puts a very high priority on producing secure software.</p> |
| |
| <p>The project uses various automation processes to ensure dependencies are kept up to date.</p> |
| |
| <h3>QU30</h3> |
| |
| <p>The project provides a well-documented, secure and private channel to report security issues, along with a |
| documented way of responding to them.</p> |
| |
| <p>The project uses the standard way of reporting ASF security issues.</p> |
| |
| <h3>QU40</h3> |
| |
| <p>The project puts a high priority on backwards compatibility and aims to document any incompatible changes and |
| provide tools and documentation to help users transition to new features.</p> |
| |
| <p>All PRs, including information on if there are breaking changes, and release notes on each release, also |
| include this.</p> |
| |
| <h3>QU50</h3> |
| |
| <p>The project strives to respond to documented bug reports in a timely manner.</p> |
| |
| <p>The large majority of issues and PRs are dealt with quickly, although a number of outstanding older issues |
| from pre-ASF days remain.</p> |
| |
| <h2>Community</h2> |
| |
| <h3>CO10</h3> |
| |
| <p>The project has a well-known homepage that points to all the information required by ASF policy.</p> |
| |
| <p>The Grails website (https://grails.apache.org) is well known and contains all the information needed by ASF |
| policy. (A couple of points need fixing before this is actually true, but they are well-known and simple.) |
| </p> |
| |
| <h3>CO20</h3> |
| |
| <p>The community welcomes contributions from anyone who acts in good faith, respectfully, and adds value to the |
| project.</p> |
| |
| <p>Several hundred folks have contributed to the core Grails project during its lifespan and more on plugins. |
| More than 20 folks have contributed to the core project since incubation started. Several contributors have |
| been made committers and PMC members since the start of incubation.</p> |
| |
| <h3>CO30</h3> |
| |
| <p>Contributions include source code, documentation, constructive bug reports, constructive discussions, |
| marketing and generally anything that adds value to the project.</p> |
| |
| <p>The project values all forms of contribution and has accepted code, documentation fixes/improvements, bug |
| reports etc.</p> |
| |
| <h3>CO40</h3> |
| |
| <p>The community strives to be meritocratic and gives more rights and responsibilities to contributors who, over |
| time, add value to the project.</p> |
| |
| <p>Several contributors have been made committers and PPMC members since the start of incubation.</p> |
| |
| <h3>CO50</h3> |
| |
| <p>The project documents how contributors can earn more rights, such as commit access or decision power, and |
| applies these principles consistently.</p> |
| |
| <p>Several contributors have been made committers and PMC members since the start of incubation. These |
| committers have been based on merit and come from several different employers.</p> |
| |
| <h3>CO60</h3> |
| |
| <p>The community operates based on the consensus of its members (see CS10), who have decision power. Dictators, |
| benevolent or not, are not welcome in Apache projects.</p> |
| |
| <p>The project’s direction is set by the PMC, there is no BDFY.</p> |
| |
| <h3>CO70</h3> |
| |
| <p>The project strives to answer user questions in a timely manner.</p> |
| |
| <p>User questions on GitHub and the mailing list are usually answered promptly. There is room for improvement in |
| a few isolated cases.</p> |
| |
| <h2>Consensus Building</h2> |
| |
| <h3>CS10</h3> |
| |
| <p>The project maintains a public list of its contributors who have decision power. The project's PMC (Project |
| Management Committee) consists of those contributors.</p> |
| |
| <p>The PPMC and committer list are kept up to date when new people are added. There is no public list of the PMC |
| on the site, but it is available via several ASF services.</p> |
| |
| <h3>CS20</h3> |
| |
| <p>Decisions require a consensus among PMC members and are documented on the project's main communications |
| channel. The PMC takes community opinions into account, but the PMC has the final word.</p> |
| |
| <p>Votes on releases and other major decisions are conducted on the mailing list.</p> |
| |
| <h3>CS30</h3> |
| |
| <p>The project uses documented voting rules to build consensus when discussion is not sufficient.</p> |
| |
| <p>There has been no need to use voting in this way so far.</p> |
| |
| <h3>CS40</h3> |
| |
| <p>In Apache projects, vetoes are only valid for code commits. The person exercising the veto must justify it |
| with a technical explanation, as per the Apache voting rules defined in CS30.</p> |
| |
| <p>There have been no code vetos. Most significant code contributions use RTC, so this reduces the number of |
| possible vetos. The code is reviewed, and feedback is acted on before it is merged.</p> |
| |
| <h3>CS50</h3> |
| |
| <p>All "important" discussions happen asynchronously in written form on the project's main communications |
| channel. Offline, face-to-face or private discussions that affect the project are also documented on that |
| channel.</p> |
| |
| <p>There is discussion on the mailing list, and in GitHub issues and discussions. This is asynchronous. There |
| are regular online meetings where anyone is welcome and a summary of discussions is brought back to the |
| mailing list. |
| There are no offline meetings or discussions where private decisions are made.</p> |
| |
| <h2>Independence</h2> |
| |
| <h3>IN10</h3> |
| |
| <p>The project is independent of any corporate or organizational influence.</p> |
| |
| <p>The active contributors are from a diverse range of organisations.</p> |
| |
| <h3>IN20</h3> |
| |
| <p>Contributors act as themselves, not as representatives of a corporation or organization.</p> |
| |
| <p>Individuals do act independently and for the community and project as a whole.</p> |
| |
| <h2>Trademark and Branding</h2> |
| |
| <h3>TB10</h3> |
| |
| <p>The project uses "Apache Foo™" as the project and software product name consistently, with appropriate |
| trademark attributions.</p> |
| |
| <p>The project uses Apache Grails and complies with ASF trademark policy.</p> |
| |
| <h3>TB20</h3> |
| |
| <p>The project's primary homepage is at projectname.apache.org. When exceptions exist to use alternate domains |
| for any purpose, any non-apache.org domain names are owned by the ASF.</p> |
| |
| <p>The project's website is at https://grails.apache.org.</p> |
| |
| <h3>TB30</h3> |
| |
| <p>The ASF has trademark rights, including any registrations, to the project name, logo, and any other major |
| branding elements.</p> |
| |
| <p>The name Grails and its logo is a registered trademark and agreement has been reached to transfer the |
| trademarks to the ASF upon successful graduation.</p> |
| |
| <h3>TB40</h3> |
| |
| <p>The project monitors for any major misuses of their project's brand by others, and reports any potential |
| misuses to Brand Management.</p> |
| |
| <p>There have been no significant misuses of the project’s brand.</p> |
| |
| |
| </article> |
| </div> </article> |
| <footer> |
| <div class='content'> |
| <div class='apache-grails'> |
| <p>Apache Grails is supported by the Apache Software Foundation and the Grails community.</p> |
| <a href='https://apache.org'><img src='https://www.apache.org/img/asf_logo.png' width='200px' alt='Apache Software Foundation'/></a> |
| <p>Apache, Apache Grails, Grails, Groovy, and the ASF logo are either registered trademarks or trademarks of The Apache Software Foundation.</p> |
| </div> |
| <nav class='social-media-nav'> |
| <ul> |
| <li><a href='mailto:dev@grails.apache.org'><img src='https://grails.apache.org/images/email.svg' alt='Email Icon'/></a></li> |
| <li><a href='https://slack.grails.org'><img src='https://grails.apache.org/images/slack.svg' alt='Slack Icon'/></a></li> |
| <li><a href='https://www.youtube.com/@GrailsFramework'><img src='https://grails.apache.org/images/youtube.svg' alt='Youtube Icon'/></a></li> |
| <li><a href='https://bsky.app/profile/grails.apache.org'><img src='https://grails.apache.org/images/bsky.svg' alt='Bluesky Icon'/></a></li> |
| <li><a rel="me" href="https://fosstodon.org/@grails"><img src='https://grails.apache.org/images/mastodont.svg' alt='Mastodon Icon'/></a></li> |
| <li><a href='https://www.linkedin.com/showcase/official-grails/'><img src='https://grails.apache.org/images/linkedin.svg' alt='LinkedIn Icon'/></a></li> |
| <li><a href='https://github.com/apache/grails-core'><img src='https://grails.apache.org/images/github.svg' alt='GitHub Icon'/></a></li> |
| <li><a href='https://twitter.com/grailsframework'><img src='https://grails.apache.org/images/x-twitter.svg' alt='Twitter Icon'/></a></li> |
| </ul> |
| </nav> |
| </div> |
| <div class='footer-bottom'> |
| <p>© 2005-2026 the Apache Grails project</p> |
| <p>Grails is Open Source: |
| <a href='https://www.apache.org/licenses/'>License</a>, |
| <a href='https://privacy.apache.org/policies/privacy-policy-public.html'>Privacy Policy</a>, |
| <a href='https://www.apache.org/foundation/sponsorship'>Sponsor Apache</a>, |
| <a href='https://www.apache.org/events/current-event'>Events</a>, |
| <a href='https://www.apache.org/security'>Security</a>, |
| <a href='https://www.apache.org/foundation/thanks.html'>Thanks</a>, |
| <a href='https://grails.apache.org/support-schedule.html'>Support Schedule</a> |
| </p> |
| </div> |
| </footer> |
| |
| </body> |
| </html> |