Skip to content

GSIP 226

Jody Garnett edited this page Jan 20, 2026 · 15 revisions

GSIP 226 - GeoServer 3

Overview

The number of changes associated with the spring-framework-6 update are significant enough to warrant a new major release.

Proposed By

Jody Garnett

Assigned to Release

This proposal is for GeoServer 3.0.0-M0

State

  • Under Discussion
  • In Progress
  • Completed
  • Rejected
  • Deferred

Motivation

The number of changes associated with the roadmap spring-framework-6 update are significant enough to warrant a new major release:

  • Migrate to spring-framework-6, which requires changing to Jakarta Enterprise Edition (Tomcat 10 and Jetty 12)
  • Migrate to spring-security 6 necessitating the replacement of spring-security-oauth and spring-security-keycloak plugins
  • Changing to Java 17 minimum
  • Replacing our Java Advanced Imaging raster processing engine with for ImageN (mixing in JAI-Ext operators for a complete solution)
  • Updating tp Wicket 10, which will require implementing our own dialogs.

We have held off making a new major release for two reasons addressed below:

  • Making a new major release results in a non trivial expense for those who need to do a formal configuration management procedure before updating a major version.

    It has been fifteen years since GeoServer 2.0 was released. You should probably do a formal review more often than that. With the amount of change proposed an any feedback from your formal review process would be of benefit to the GeoServer project team.

  • Aspirational goal to only update the version number when we changed the data directory compatibility.

    While change of data directory marked the boundary between GeoServer 1 and GeoServer 2. The user experience change from STRUTS to Wicket was more significantly noticed by Users.

Proposal

Assuming crowdfunding appeal is successful the proposal is:

  • Change from <major>.<minor>.<incremental>: 2.22-M0, 2.22-RC, 2.22.0 2.22.1

    Treating SNAPSHOT like an incremental dot release: 2.22-SNAPSHOT

    Tagging off the branch:

    2.22.x: 2.22-SNAPSHOT -- 2.22-SNAPSHOT -- 2.22-SNAPSHOT
                 \              \                \
                 2.22-RC        2.22.0          2.22.1
                 (tag)          (tag)           (tag)
    

    While the tag is not included in the 2.22.x commit history, the tag is available to start a new patch branch for emergency 2.22.0 fix. There is a small conflict with 2.22-SNAPSHOT being used on two active branches.

                                (tag) 
                                2.22.0
                                   \
    2.22.0.x:                     2.22-SNAPSHOT -- fixes -- 2.22-SNAPSHOT
                                                              \
                                                             2.22.0-1
                                                             (tag)
    

    Note: The patch release takes the place of the existing 2.22.0 release on the download page.

  • Change to <major>.<minor>.<incremental>-<qualifier>: 3.0-M0, 3.0-RC, 3.0.0 3.0.1

    Handling SNAPSHOT as a qualifier: 3.0.0-SNAPSHOT

    Tagging a release on the branch:

    3.0.x: 3.0.0-SNAPSHOT -- 3.0.0-RC -- 3.0.0-SNAPSHOT -- 3.0.0 -- 3.0.1-SNAPSHOT -- 3.0.1 -- 3.0.2-SNAPSHOT
                             (tag)                         (tag)                      (tag)
    

    If a patch branch is required 3.0.0 tag branches to continue with the 3.0.0-SNAPSHOT:

                             (tag)
    3.0.x: 3.0.0-SNAPSHOT -- 3.0.0 -- 3.0.1-SNAPSHOT
                               \
    3.0.0.x:                  3.0.0-SNAPSHOT -- 3.0.0-1 -- 3.0.0-SNAPSHOT
                                                 (tag)
    

    Note: The patch release 3.0.0-1 takes the place of the existing 3.0.0 release on the download page.

This approach is compatible with maven release plugin:

mvn --batch-mode -Prelease,communityRelease release:update-versions -DdevelopmentVersion=3.0.0-RC

Reference:

Backwards Compatibility

Data directory and configuration:

  • data directory structure remains unchanged
  • data object definition remains unchanged, for jdbc-config

REST API changes:

Feedback

Q: I have not seen this before? Any projects that use it...

Q: Huh? really

Yes here are the examples from the maven docs:

// Examples
1.0.0
2.3.2
3.5.42

// Pre-releases
1.0.0-beta
1.0.0-M1
1.0.0-rc2

// Snapshots
1.0.1-SNAPSHOT

Voting

Project Steering Committee:

  • Alessio Fabiani:
  • Andrea Aime:
  • Ian Turton:
  • Jody Garnett: +1 initial motion
  • Jukka Rahkonen: +1
  • Kevin Smith:
  • Simone Giannecchini:
  • Torben Barsballe:
  • Nuno Oliveira:
  • Peter Smythe: +1

Links

Clone this wiki locally