Skip to content

Release v0.10.0 Stable #1637

@drmingdrmer

Description

@drmingdrmer

Overview

This issue tracks all tasks required to release OpenRaft v0.10.0 stable.

Current State:

  • 11 alpha releases published (v0.10.0-alpha.1 through v0.10.0-alpha.11)
  • 854+ commits since v0.9.21
  • Major API redesign and feature flag cleanup completed

Pre-release Checklist

Documentation

  • Create upgrade guide upgrade-v09-v10.md
    • API migration examples
    • Feature flag migration table
    • Data compatibility notes
  • Update upgrade.md index with v0.9→v0.10 section
  • Review and finalize change-log.md for v0.10.0
  • Update README.md version references
  • Verify all doc links are valid (make doc)

Code Quality

  • All CI checks passing on main branch
  • Run full test suite (make test)
  • Run lint checks (make lint)
  • Review and address critical TODOs
  • Verify examples compile and run correctly

Breaking Changes Review

Confirm all breaking changes are documented:

API Changes:

  • Raft::as_leader() returns Result<Leader, ForwardToLeader> (was local_leader_id() returning Option)
  • RaftLeaderId::node_id() returns &NodeId (was Option<NodeId>)
  • RaftNetworkV2 with granular Net* sub-traits
  • Extensions API simplified to single get() method
  • Leader change callbacks now async
  • IOFlushed callback now synchronous with Watch channel
  • Removed ResponderBuilder, use generic Responder<T>
  • Removed Default from RaftVote trait bounds
  • ErrorSource uses Formatter-based API (replaced backtrace_str())

Feature Flags (Removed/Renamed):

  • loosen-follower-log-revertConfig::allow_log_reversion
  • adapt-network-v1 → Use openraft-legacy crate
  • single-term-leader → Use LeaderId type config
  • singlethreadedsingle-threaded

Crate Changes:

  • New openraft-legacy crate for v1 network compatibility
  • openraft-rt / openraft-rt-tokio extracted
  • Deprecated: TokioRuntime, TokioInstant (use from openraft_rt_tokio)

Release Tasks

Version Bump

  • Update version in workspace Cargo.toml (remove -alpha.N suffix)
  • Update version in all crate Cargo.toml files
  • Commit: BumpVer: 0.10.0

Changelog

  • Generate final changelog using scripts/build_change_log.py
  • Create change-log/v0.10.0.md
  • Update main change-log.md
  • Commit: Doc: add change-log 0.10.0

Publishing

  • Publish to crates.io in dependency order:
    1. openraft-macros
    2. openraft-rt
    3. openraft-rt-tokio
    4. openraft
    5. openraft-legacy
    6. openraft-memstore
  • Create GitHub release with changelog
  • Tag: v0.10.0

Post-release

  • Create release-0.10 branch for maintenance
  • Update main branch version to 0.11.0-alpha.1

Milestones

Phase Target Status
Documentation Complete TBD Not Started
Code Freeze TBD Not Started
Release Candidate TBD Not Started
Stable Release TBD Not Started

Known Blockers

  • TBD - Add blockers here

Announcement Plan

  • Prepare GitHub release notes
  • Discord announcement
  • Twitter/X post
  • Update project website/docs (if applicable)

Open Questions

  1. Data Migration: Are there any data format changes requiring migration tools?
  2. Deprecation Timeline: When will v0.9 branch stop receiving bugfixes?

Related Files

  • Changelog: change-log.md
  • Upgrade guides: openraft/src/docs/upgrade_guide/
  • Feature flags doc: openraft/src/docs/feature_flags/feature-flags.md
  • CI config: .github/workflows/ci.yaml

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions