Hi  Jinwoo,

>1. VERSION NUMBER
Yes 2.0.0 due to many major changes and especially Java compile time
upgrade.

>2. SUPPORT BRANCH TIMING
>>Option B: Merge to develop first, create branch later when ready to
release

Option B. Allow 4-6 weeks stabilization.  Create support/2.0 branch.

>DEPRECATION PERIOD
Agreed.
 1.x Support Requirements:
  - Critical security fixes: 24 months minimum
  - Critical data corruption bugs: 24 months
  - Regular bug fixes: 12 months
  - New features: None
The Tomcat session modules are completely removed for older versions - not
just deprecated. Users on Tomcat 6/7/8/9 have zero upgrade path to Geode
2.0.

Explicitly communicate this in release notes:  "Users on Tomcat 6/7/8/9
cannot upgrade to Geode 2.0. Extended support for Geode 1.x will be
provided for 24 months."

>MIGRATION PATH FOR USERS
Agreed

> FEATURE FREEZE RULES
 After support/2.0 branch creation:

  ALLOWED:
    ├─ Critical bug fixes
    ├─ Security fixes
    ├─ Documentation improvements
    └─ Test additions (no new functionality)

  NOT ALLOWED:
    ├─ New features
    ├─ Refactoring
    └─ Dependency upgrades (unless security critical)

>COMMUNICATION PLAN

Phase 1: Early Warning (NOW - before merge)  -- Done
  Target: dev@ mailing list

Phase 2: Pre-Release Announcement (After merge to develop)
  Target: user@ and dev@ mailing lists

 Phase 3: Release Announcement
  Target: user@, dev@, website



On Tue, Oct 14, 2025 at 8:40 PM Jinwoo Hwang <[email protected]>
wrote:

> Hello Apache Geode Community,
>
> I have completed the Jakarta EE 10 migration work (GEODE-10466) which is
> now
> ready for review on GitHub. This migration represents a significant
> modernization
> effort with breaking changes that will impact the release strategy. I
> would like
> to discuss the branching approach with the community before proceeding.
>
>
> ================================================================================
> MIGRATION SUMMARY
>
> ================================================================================
>
> Complete modernization of Apache Geode to Jakarta EE 10 ecosystem with
> comprehensive
> framework upgrades, extensive testing, and production-ready implementation.
>
> Core Migrations Completed:
> - Jakarta EE 10: All javax.* → jakarta.* (173+ files)
> - Spring Framework: 5.3.21 → 6.1.14
> - Spring Security: 5.6.5 → 6.3.4
> - Spring Boot: 2.6.7 → 3.3.5
> - Spring Shell: 1.2.0 → 3.3.3
> - Jetty: 9.4.57 → 12.0.27
> - Apache HttpComponents: 4.5.13 → 5.3.1
> - Apache Lucene: 6.6.6 → 9.12.3
> - JLine: 2.x → 3.x
>
> Test Results:
> - All 1,360+ active tests passing (100%)
> - Zero compilation errors
> - Build verification successful
> - All quality checks passed (Spotless, RAT, PMD, Javadoc)
>
> Files Changed:
> - 603 files changed
> - 14,339 insertions, 5,106 deletions
> - Production code: 173+ files
> - Test code: 120+ files
> - Build files: 40+ files
>
>
> ================================================================================
> BREAKING CHANGES
>
> ================================================================================
>
> This migration includes breaking changes that require careful release
> planning:
>
> 1. TOMCAT SESSION USERS
>    - Must upgrade to Tomcat 10.1+ or 11.x
>    - Geode 1.x users on Tomcat 6/7/8/9 cannot upgrade
>    - Rolling upgrade NOT supported (javax/jakarta incompatibility)
>    - Session manager class changed to Tomcat10DeltaSessionManager
>
> 2. API CHANGES
>    - All javax.* imports changed to jakarta.*
>    - Source-level breaking change for all Java EE APIs
>    - Binary incompatibility with Java EE applications
>    - Servlet API: javax.servlet → jakarta.servlet (Servlet 6.0)
>    - JTA: javax.transaction → jakarta.transaction
>    - JAXB: javax.xml.bind → jakarta.xml.bind
>    - JCA, Mail, Annotations, CDI all migrated
>
> 3. FRAMEWORK CHANGES
>    - Spring Security: WebSecurityConfigurerAdapter removed
>    - Spring Shell: Command annotations changed
>    - JLine: 2.x APIs replaced with 3.x
>    - HttpClient: 4.x APIs replaced with 5.x
>    - Jetty: 9.4 APIs replaced with 12 EE10
>
> 4. MINIMUM REQUIREMENTS
>    - Java 17+ required (completed in GEODE-10465)
>    - Servlet container must support Jakarta EE 10
>    - Tomcat 10.1+ for session module users
>
>
> ================================================================================
> QUESTIONS FOR THE COMMUNITY
>
> ================================================================================
>
> 1. VERSION NUMBER
>    What should the target version be for this work?
>
>    Option A: 2.0.0 (major version - reflects breaking changes)
>    - Per release documentation: major releases allow breaking changes
>    - Clearly signals incompatibility to users
>    - Aligns with semantic versioning practices
>
>    Option B: 1.16.0 (minor version)
>    - If community prefers to defer major version
>
>    Option C: Other suggestion?
>
> 2. SUPPORT BRANCH TIMING
>    When should we create the support branch?
>
>    Option A: Create support/2.0 branch now (or soon) for stabilization
>    - Allows focused testing on release candidate
>    - Isolates develop from release work
>
>    Option B: Merge to develop first, create branch later when ready to
> release
>    - More time for community review
>    - Additional features can be added before branching
>
>    Option C: Wait for more features before branching?
>
> 3. DEPRECATION PERIOD
>    Should we maintain parallel support for both versions?
>
>    - The javax → jakarta change is binary incompatible
>    - Can we support both 1.x (javax) and 2.x (jakarta) simultaneously?
>    - How long should 1.x remain supported after 2.0 release?
>    - What is our responsibility to Tomcat 6/7/8/9 users?
>
> 4. MIGRATION PATH FOR USERS
>    What guidance should we provide?
>
>    - Big-bang upgrade only (no rolling upgrade possible)
>    - Should we provide migration tools/scripts?
>    - Documentation requirements?
>    - Timeline for migration window?
>
> 5. FEATURE FREEZE RULES
>    If we create a support branch now:
>
>    - What are the rules for backporting to support/2.0?
>    - Critical fixes only, or allow additional features?
>    - Timeline for RC creation?
>    - Acceptance testing period duration?
>
> 6. COMMUNICATION PLAN
>    How should we announce this to the community?
>
>    - Early warning to users about upcoming breaking changes?
>    - Migration guide timing and location?
>    - Coordination with downstream projects?
>    - Docker Hub, Homebrew, packaging updates?
>
>
> ================================================================================
> MY RECOMMENDATION
>
> ================================================================================
>
> Based on the scope of changes and Apache Geode release documentation, I
> recommend:
>
> 1. TARGET VERSION: 2.0.0
>    - This is a major version for breaking changes per release process
>    - Clearly signals breaking changes to users
>    - Aligns with semantic versioning
>
> 2. BRANCHING TIMELINE: Merge to develop first
>    - Allow 2-4 weeks for community review on develop
>    - Create support/2.0 branch after stabilization period
>    - This follows the pattern in the release documentation
>
> 3. SUPPORT POLICY: Maintain 1.x for 12-24 months
>    - Give users time to plan migration
>    - Continue critical fixes on 1.x support branches
>    - Clear end-of-life communication
>
> 4. USER GUIDANCE: Comprehensive documentation
>    - Detailed migration guide
>    - Breaking changes clearly documented
>    - Step-by-step upgrade instructions
>    - FAQ for common issues
>
> 5. COMMUNICATION: Proactive announcement
>    - Announce to user@ and dev@ lists
>    - Update website with migration timeline
>    - Coordinate with downstream projects early
>
> However, I defer to the community's preferences and the PMC's guidance on
> all
> decisions above.
>
>
> ================================================================================
> DETAILED TECHNICAL INFORMATION
>
> ================================================================================
>
> For those interested in the technical details, here is a comprehensive
> breakdown
> of all changes:
>
> JAKARTA EE 10 MIGRATION
> - Migrated all javax.* → jakarta.* imports across 173+ files
> - Updated Servlet API: javax.servlet → jakarta.servlet (Servlet 6.0)
> - Updated JTA: javax.transaction → jakarta.transaction
> - Updated JAXB: javax.xml.bind → jakarta.xml.bind
> - Updated JCA: javax.resource → jakarta.resource
> - Updated Mail: javax.mail → jakarta.mail
> - Updated Annotations: javax.annotation → jakarta.annotation
> - Updated CDI: javax.inject → jakarta.inject
>
> SPRING FRAMEWORK 6.X UPGRADE
> - Spring Framework: 5.3.21 → 6.1.14
> - Spring Security: 5.6.5 → 6.3.4
> - Spring Boot: 2.6.7 → 3.3.5
> - Spring HATEOAS: 1.5.0 → 2.3.3
> - Spring LDAP: 2.4.0 → 3.2.7
> - SpringDoc OpenAPI: 1.6.8 → 2.6.0
>
> SPRING SECURITY 6.X MIGRATION
> - Migrated from WebSecurityConfigurerAdapter to SecurityFilterChain pattern
> - Changed @EnableGlobalMethodSecurity to @EnableMethodSecurity
> - Updated authorizeRequests() → authorizeHttpRequests()
> - Updated antMatchers()/mvcMatchers() → requestMatchers()
> - Fixed XSS protection API and headers configuration
> - Updated all security configurations with lambda syntax
>
> SPRING SHELL 3.X MIGRATION
> - Migrated from Spring Shell 1.2.0 to 3.3.3
> - Updated annotations: @CliCommand → @ShellMethod, @CliOption →
> @ShellOption
> - Changed @CliAvailabilityIndicator → @ShellMethodAvailability
> - Updated 118+ command classes across all modules
> - Implemented GfshParser for Spring Shell 3.x with multi-word command
> support
> - Fixed boolean flags, enum conversion, region path handling
> - Added completion provider framework for TAB completion
>
> JETTY 12 UPGRADE
> - Upgraded from Jetty 9.4.57 to Jetty 12.0.27
> - Migrated to Jetty EE10 namespace (org.eclipse.jetty.ee10.*)
> - Implemented Server Classes Pattern for webapp classloading
> - Fixed ServletContext attribute handling with ServletContextListener
> - Configured proper Jakarta servlet API from container classloader
>
> APACHE HTTPCOMPONENTS 5.X MIGRATION
> - HttpClient: 4.5.13 → 5.3.1
> - HttpCore: 4.4.15 → 5.2.4
> - Added httpcore5-h2 5.2.4 for HTTP/2 support
> - Updated all HTTP client code to HttpComponents 5.x APIs
> - Updated 21 files across geode-management, geode-connectors, geode-pulse
>
> TOMCAT 10+ MIGRATION
> - Removed Tomcat 6/7/8/9 modules (javax.servlet)
> - Created geode-modules-tomcat10 for Jakarta Servlet 5.0/6.1
> - Supports Tomcat 10.1.x (Jakarta Servlet 5.0, Java 11+)
> - Supports Tomcat 11.x (Jakarta Servlet 6.1, Java 17+)
> - Implemented SerializablePrincipal (Tomcat removed this class)
> - Removed 27-year-old deprecated Servlet 2.1 APIs from GemfireHttpSession
>
> LUCENE INTEGRATION
> - Updated Apache Lucene 6.6.6 → 9.12.3
> - Fixed artifact names: analyzers-* → analysis-*
> - Updated all Lucene command classes for Spring Shell 3.x
>
> TESTING & VALIDATION
> - Migrated MockRunner to Spring Test MockMvc for session tests
> - Fixed 118+ Spring Shell command tests
> - Fixed 21+ HTTP client tests
> - Fixed all Jakarta Servlet tests
> - Fixed all Spring Security 6.x tests
> - Maintained ~95% test coverage
> - All 1,360+ active tests passing
>
> MODULE STATUS (All Fully Migrated)
> - geode-core
> - geode-gfsh
> - geode-connectors
> - geode-wan
> - geode-lucene
> - geode-management
> - geode-web-api
> - geode-web-management
> - geode-web
> - geode-pulse
> - geode-http-service
> - geode-modules-tomcat10
> - geode-modules-session
> - geode-assembly
> - geode-dunit
> - geode-junit
>
> PRODUCTION READINESS CHECKLIST
> ✓ All modules compile successfully
> ✓ All tests passing (100% active tests)
> ✓ Build verification successful
> ✓ API compatibility verified (japicmp)
> ✓ Spotless formatting applied
> ✓ RAT license check passed
> ✓ PMD static analysis passed
> ✓ Javadoc generation successful
> ✓ Distribution packaging verified
> ✓ Assembly contents validated
>
>
> ================================================================================
> UPGRADE INSTRUCTIONS FOR USERS
>
> ================================================================================
>
> FOR TOMCAT SESSION USERS:
> 1. Upgrade Tomcat to 10.1+ or 11.x
> 2. Update dependency: geode-modules-tomcat10
> 3. Update imports: javax.servlet → jakarta.servlet
> 4. Update Manager class: Tomcat10DeltaSessionManager
> 5. Perform big bang upgrade (rolling upgrade not supported)
>
> FOR GFSH USERS:
> - GFSH commands now use Spring Shell 3.x (internal change)
> - TAB completion enhanced
> - Command parsing improved
> - All existing commands work identically
>
> FOR APPLICATION DEVELOPERS:
> - Update all javax.* imports to jakarta.*
> - Update Spring Security configurations (if using custom security)
> - Update HTTP client code to 5.x APIs (if using directly)
> - Review JMX access patterns (Java 9+ module compatibility)
>
>
> ================================================================================
> NEXT STEPS
>
> ================================================================================
>
> Once we agree on the branching strategy, I will:
>
> 1. Update PR description with agreed version target
> 2. Prepare comprehensive release notes
> 3. Create detailed migration guide
> 4. Work with Release Manager on timeline ( I happily volunteer )
> 5. Address any review feedback
> 6. Update JIRA with appropriate fix version
> 7. Coordinate communication plan
>
> I am happy to discuss any concerns, answer questions about the migration
> work,
> or provide additional technical details as needed.
>
> Please share your thoughts on the questions above, especially:
> - Target version number (2.0.0 vs 1.16.0)
> - Branching timeline (now vs after develop merge)
> - Support policy for 1.x versions
> - User communication plan
>
> Looking forward to the community's feedback and guidance.
>
>
>
> ================================================================================
> REFERENCES
>
> ================================================================================
>
> PR: https://github.com/JinwooHwang/geode/pull/new/GEODE-10466
> JIRA: https://issues.apache.org/jira/browse/GEODE-10466
> Branch: GEODE-10466
> Files changed: 603 files (14,339 insertions, 5,106 deletions)
> Test coverage: 100% of active tests passing (1,360+ tests)
>
>
> Best regards,
>
> Jinwoo Hwang (he/him/his)
>
>
>
> SAS® Research and Development
>
> http://JinwooHwang.com<http://jinwoohwang.com/>
>
>
>

Reply via email to