Skip to content

Roadmap #891

@indietyp

Description

@indietyp

This issue outlines the public roadmap of the next few versions. The idea here is to have a concrete set of tasks to allow for consolidation of the next branch with the current petgraph codebase with minimal disruptions. Which is a departure of the previous approach.

At the same time, this issue serves as a central tracking issue for the entire transition. Listing tasks and linking to their respective tracking issues.

For ways of contributing to this transition, please refer to the section on "Ways to Help".

0.8.x

The 0.8 series is going to continue under a dedicated 0.8 branch, we're only going to push fixes to it. The 0.8.3. release will be the last planned release for 0.8. The versions >= 0.9 will then be based on 0.8.3..

0.9.0 ("Port")

This will mark the first version in the transition, during it we will do the following tasks:

Intended crate structure:

  • petgraph

    • Contains Graph Implementations, i.e. Graph, Acyclic, CsrGraph, IO (DOT handling)
    • Re-Exports old Traits (semver trick)
    • Implements New Traits on (new and old) Graph Implementations
  • petgraph-core

    • Contains "new" Traits
    • Contains "new" Node and Edge types as well as Id traits corresponding to the new traits
  • petgraph-algorithms

    • Contains all current existing Algorithms implemented on the new traits.
    • Algorithms are subdivided into modules by problem category instead of specific algorithm name

0.10.0 ("Split")

  • Continue improving the algorithm implementations
  • Refactor algorithms to be trait based and more generic
    • Visit traits and walkers would also become simple algorithms, instead of being special-cased
    • Where possible keep the old signature and deprecate it
  • Factor out (where it makes sense) implementations into subcrates
    • This might mean (after some evaluation) that the graph implementations get their own crate, with the petgraph crate essentially becoming a simple re-export
    • petgraph-algorithms becoming an external crate, only depending on petgraph-core
    • additional functionality like graph read/write (petgraph-io), generators (petgraph-generators) and quickcheck/proptest as separate crates that work over the defined traits
  • Remove old deprecated interfaces (Possibly move this to 0.11.)

Intended crate structure:

  • petgraph

    • See 0.9.
    • IO, e.g. DOT serialization / deserialization is moved into separate crate
    • Concrete Graph implementations might be moved into individual crates
  • petgraph-core

    • See 0.9.
  • petgraph-algorithms

    • See 0.9.
  • petgraph-io

    • Contains functionality for serializing / deserializing Graphs, ideally for most popular formats
  • petgraph-graph-...

    • (Indvidual) Crate for each graph implementation (not certain yet)

0.11.0 ("Finish")

  • Evaluate state of petgraph, possibly re-adjust based on the experience gathered
  • Extend the set of traits available
  • Tackle other new features 🦕

"Final" Intended crate structure

  • petgraph

    • Mainly re-exports traits / types / functionality from the other crates
  • petgraph-core

    • Contains Graph Traits and Types/Traits for Nodes, Edges and Ids
  • petgraph-algorithms

    • Contains all algorithms in a discoverable way
  • petgraph-io

    • Contains functionality for serializing / deserializing Graphs, ideally for most popular formats
  • petgraph-generators

    • Contains generators for different types of graphs similar to networkxs generators
  • petgraph-graph-

    • (Individual) Crate for each graph implementation (might also be part of petgraph main crate)

With community feedback we're likely going to be changing the timeline, but these changes should enable us to make developing new graph algorithm interfaces a lot more straightforward and increase maintainability.

Ways to Help

We're super glad about anyone who wants to help us in these tasks !
To be able to better coordinate work and make sure that people are not working on the same things, please reach out to us, here or on our Discord. We want to set up tracking issues for tasks where applicable to better subdivide the tasks and make them more digestible.
Feel free to let us know if you want to help with future tasks or tasks missing specific instructions / tracking issues 🦕

Last update: 18.02.2026
For the most recent updates, please check the petgraph Discord.

Metadata

Metadata

Labels

C-tracking-issueAn issue/PR that collects information about a broad development initiativeF-trait-reworkFeature: Trait Rework

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions