Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Roadmap for Graphs.jl 2.0 #128

Open
gdalle opened this issue May 18, 2022 · 10 comments
Open

Roadmap for Graphs.jl 2.0 #128

gdalle opened this issue May 18, 2022 · 10 comments
Assignees
Labels
help wanted Extra attention is needed question Further information is requested
Milestone

Comments

@gdalle
Copy link
Member

gdalle commented May 18, 2022

Recently, a lot of interesting but compatibility-breaking suggestions have emerged when dealing with specific issues. In order for these ideas not to be forgotten, here is a thread where we can start to organize major changes with a possible 2.0 release in mind.

@gdalle gdalle added the help wanted Extra attention is needed label May 18, 2022
@gdalle
Copy link
Member Author

gdalle commented May 18, 2022

Here are a few topics that seem important to discuss, in no particular order. Feel free to add your own!

Support vertex and edge metadata

Add easier access to edges

Relax restrictions on vertex indices & iterators

Clarify support (or lack thereof) for multigraphs

Settle the question of flows and matchings

Improve usability of shortest paths

Improve code style

Fix heisenbugs in Parallel tests

@Tokazama
Copy link

It would be nice for us to use a generic interface to metadata that's not exclusive to graphs.

@jpfairbanks
Copy link
Member

I would add higher order networks to this list. Simplicial Sets (Vertices, Edges, Triangles, Tetrahedra ...), Hypergraphs (V, S\subset Powerset(V)), Directed Hypergraphs, Bipartite graphs, etc would be good to think about.

@etiennedeg
Copy link
Member

etiennedeg commented May 18, 2022

Clarify the API of all hidden assumptions, make the API complete

Consider returning only vertices for algorithms that return an induced subgraph

consistent approach for graph direction

New Features (Not specifically 2.0, but could be nice goals)

Provide basic and generic features for graph traversal

Basic support for planarity, bipartite graphs, DAG, trees...

Support for graph views (for filtering operations on edges or vertices, or light contraction operations)

@etiennedeg
Copy link
Member

@Tokazama Have you a more precise idea of your suggestion ? I'm not sure to understand what it would looks like.

@Tokazama
Copy link

In terms of trait support I'd like to suggest two things:

  1. We are working very hard to create a lightweight core package for ArrayInterface.jl that contains traits for mutability, resizing, etc.
  2. Something comparable to IndexStyle for graphs. I did a quick gist using GraphStyle a while ago. We could account for direct access to edges across different graph structures using this without creating a complex type hierarchy.

@Tokazama
Copy link

@Tokazama Have you a more precise idea of your suggestion ? I'm not sure to understand what it would looks like.

This is a very rough draft of a generic interface for metadata I've been working on. My OSS time has been severely limited the past month due to a short term shift in my work schedule, so not much progress has been made. I think I need to write up a more exhaustive proposal describing the issue that needs to be solved with some input from other interested developers (it's a bit high level for most users). I've thought about putting something on discourse but I fear getting input from everybody that happens upon it will be a bit distracting.

@Tokazama
Copy link

There's discussion related to metadata here JuliaData/DataAPI.jl#22

@filchristou
Copy link
Contributor

Regarding the multigraphs, I have the impression it would be fairly easy to have support in the Graphs.jl
Have a look at WrappedMultiGraphs.jl.
Basically, this package kills this if statement and deals with the repercussions.
I think something like that could be incorporated in Graphs.jl and possibly provide a trait IsMulti similar to IsDirected.

@gdalle
Copy link
Member Author

gdalle commented May 16, 2023

I'll take a look!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed question Further information is requested
Projects
No open projects
Status: In Progress
Development

No branches or pull requests

5 participants