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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions