apache / apache/grails-core

kebab-case support in app generation

Open
#15,660 8 comments 0 reactions 0 assignees View on GitHub
Dominant language
Groovy
Stars
2.9k
Forks
975
Avg merge
1d 22h
Merged PRs (30d)
92

Description

### Description

Currently, several Grails configuration properties use camelCase naming conventions such as:

```yaml
maxFileSize
driverClassName
useFilter
storeDir
```

while the broader Spring ecosystem consistently adopts kebab-case naming, for example:

```yaml
max-file-size
driver-class-name
use-filter
store-dir
```

Since Grails is built on top of Spring Boot, it would improve consistency and developer experience if Grails configuration properties fully embraced the Spring-style kebab-case convention across the framework and official documentation.

### Why this matters

Using a uniform naming convention would provide several benefits:

* Better alignment with Spring Boot standards
* Improved readability of configuration files
* Easier onboarding for Spring developers using Grails
* Reduced cognitive friction when mixing Grails and Spring configuration
* Cleaner IDE metadata and autocomplete consistency

### Suggested behavior

Ideally, Grails should:

1. Officially support kebab-case aliases for all framework configuration properties
2. Prefer kebab-case in documentation and generated examples
3. Keep backward compatibility with existing camelCase properties

For example:

```yaml
server:
servlet:
session:
store-dir: appname

grails:
controllers:
upload:
max-file-size: 20MB
```

instead of:

```yaml
server:
servlet:
session:
storeDir: appname

grails:
controllers:
upload:
maxFileSize: 20MB
```

### Additional note

Spring Boot already supports relaxed binding internally, so in many cases both formats may already work. However, Grails examples, plugins, generated configs, and official conventions still largely use camelCase. Standardizing on kebab-case would modernize the configuration style and align Grails more closely with the Spring ecosystem.

Contributor guide

Open the contributing guide

Research direction

Start by locating Grails configuration properties, generated configuration examples, and the official documentation that currently uses camelCase, then check where Spring Boot relaxed binding already provides compatibility. Done means defining a feasible scope for kebab-case aliases, preserving existing camelCase behavior, and updating the affected examples and documentation.

Written by the indexing model from the issue text.

Assessment

Tech stack
groovy, spring-boot
Domain
backend, developer-experience, documentation
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.