# The graphs ecosystem

**URL:** <https://discourse.julialang.org/t/the-graphs-ecosystem/99463>\
**Category:** Graphs\
**Tags:** lightgraphs, metagraphs, optimization, graphs, metagraphsnext\
**Created:** [May 26, 2023, 8:54pm UTC](https://discourse.julialang.org/t/the-graphs-ecosystem/99463 "2023-05-26T20:54:11Z")\
**Posts on this page:** 16\
**Page:** 2

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/224680_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [July 18, 2023, 12:54pm UTC](https://discourse.julialang.org/t/the-graphs-ecosystem/99463/23 "2023-07-18T12:54:13Z")

</div>

In the meantime, I can give a brief situation update:

- General design is being discussed in the issues of the nascent [GraphsBase.jl](https://github.com/JuliaGraphs/GraphsBase.jl) package, check out the [list of issues](https://github.com/JuliaGraphs/GraphsBase.jl/issues).
- The idea is that GraphsBase.jl will contain the basic interface as well as a few basic structures for graphs with or without metadata. Ideally we would like it to replace SimpleWeightedGraphs.jl, MetaGraphs.jl and MetaGraphsNext.jl at the same time.
- The associated code will be transferred there from [this PR](https://github.com/JuliaGraphs/Graphs.jl/pull/258) sometime soon (it’s summer break after all 🕶 also @etienne_dg is kind of busy with his thesis)
- In parallel, we’re trying to clean up Graphs.jl and merge longstanding PRs to release a decent 1.9 (and perhaps 1.10) before the breaking 2.0. Some of that work includes a new wave of [tests on generic graphs](https://github.com/JuliaGraphs/Graphs.jl/issues/224), introduced by @simonschoelly.
- I’ll probably update the [JuliaGraphs website](https://juliagraphs.org/) soon to link to this discussion and mention the ongoing work.

---

<div class="post-metadata">

**Author:** ![mtfishman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mtfishman/32/30755_2.png) [@mtfishman](https://discourse.julialang.org/u/mtfishman)\
**Post date:** [July 18, 2023, 1:34pm UTC](https://discourse.julialang.org/t/the-graphs-ecosystem/99463/24 "2023-07-18T13:34:42Z")

</div>

Nice to hear that so much work is going on with that!

~~It might be a bit hectic to organize a Zoom call during JuliaCon, but I would be interested in chatting over Zoom about this another time.~~ ( **EDIT:** If there are others interested in having a discussion about this at JuliaCon, happy to loop you in on Zoom @gdalle.)

My biggest takeaway was that if code in Graphs.jl was a bit more generic (i.e. either not as hard-coded for “simple”, i.e. contiguous integer, vertex labels, or more explicit about that assumption when it is really needed), then a lot of code for defining a labelled/named vertex graph type like the one we have in NamedGraphs.jl could be removed or simplified. Perhaps even a `VertexStyle` trait would be warranted to distinguish different indexing/vertex styles, like the [IndexStyle](https://docs.julialang.org/en/v1/base/arrays/#Base.IndexStyle) trait in Base Julia. That would be useful since right now functions defined for `AbstractGraph` in Graphs.jl can be overloaded for non-integer vertex types, but for integer vertex types we can’t currently distinguish that functions are designed for contiguous integer vertices (“simple vertices”) or non-contiguous integer vertices (i.e. general labelled/named vertices that happen to be integers), which causes ambiguity issues.

Sorry if this is rehashing things that have already been discussed, I haven’t been following all of the design discussions in the Graphs ecosystem.

---

<div class="post-metadata">

**Author:** ![jlapeyre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jlapeyre/32/4514_2.png) [@jlapeyre](https://discourse.julialang.org/u/jlapeyre)\
**Post date:** [July 18, 2023, 2:22pm UTC](https://discourse.julialang.org/t/the-graphs-ecosystem/99463/25 "2023-07-18T14:22:48Z")

</div>

I’d like to talk about graphs and metadata in Julia. I have been rolling my own metadata. I have very little time for Julia these days. But will be at JuliaCon. I am on Zulip (also slack).

---

<div class="post-metadata">

**Author:** ![filchristou](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/filchristou/32/26760_2.png) [@filchristou](https://discourse.julialang.org/u/filchristou)\
**Post date:** [July 18, 2023, 2:54pm UTC](https://discourse.julialang.org/t/the-graphs-ecosystem/99463/26 "2023-07-18T14:54:53Z")

</div>

I noticed most of the graph-related talks take place on 27.07 Thursday morning at room 32-123. _I guess_ that’s where most of the people interested in Graphs.jl will be. If nothing else is organized at least this can serve as an atypical place and time to mingle.

---

<div class="post-metadata">

**Author:** ![mtfishman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mtfishman/32/30755_2.png) [@mtfishman](https://discourse.julialang.org/u/mtfishman)\
**Post date:** [July 25, 2023, 12:29am UTC](https://discourse.julialang.org/t/the-graphs-ecosystem/99463/27 "2023-07-25T00:29:18Z")

</div>

Good idea, maybe we could meet in room 32-123 during the lunch break (starting at 12:30) on Thursday?

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/224680_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [September 15, 2023, 6:58am UTC](https://discourse.julialang.org/t/the-graphs-ecosystem/99463/28 "2023-09-15T06:58:26Z")

</div>

For those who follow this thread, you might be interested in joining the upcoming graphs community calls!

> [@Launching the graphs community calls](https://discourse.julialang.org/t/launching-the-graphs-community-calls/103880):
>
> In an effort to strengthen the [graphs ecosystem](https://discourse.julialang.org/t/the-graphs-ecosystem/99463), and following the lead of other organizations, we are launching the graphs community calls tada Our first goal is that contributors get to know each other and agree on a set of ground rules for collaboration, like a PR review policy. The [SciML ColPrac](https://github.com/SciML/ColPrac) might be a source of inspiration, but other suggestions like the ones in [this thread](https://discourse.julialang.org/t/julia-orgs-how-do-you-manage-logistics/100430) by @TheCedarPrince are welcome too. Then, these calls will be used for issue triage and discussion of ongoing …

---

<div class="post-metadata">

**Author:** ![scelles](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/scelles/32/220408_2.png) [@scelles](https://discourse.julialang.org/u/scelles)\
**Post date:** [May 5, 2024, 7:52pm UTC](https://discourse.julialang.org/t/the-graphs-ecosystem/99463/29 "2024-05-05T19:52:02Z")

</div>

Hello,

I noticed recently Apache GraphAr [https://graphar.apache.org/](https://graphar.apache.org/)  
[GitHub - apache/incubator-graphar: An open source, standard data file format for graph data storage and retrieval.](https://github.com/apache/incubator-graphar)

This kind of format looks promising.

Any opinion?

---

<div class="post-metadata">

**Author:** ![scheinerman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/scheinerman/32/35303_2.png) [@scheinerman](https://discourse.julialang.org/u/scheinerman)\
**Post date:** [August 5, 2024, 12:57am UTC](https://discourse.julialang.org/t/the-graphs-ecosystem/99463/30 "2024-08-05T00:57:47Z")

</div>

Dear @gdalle and others: I’ve developed a `Posets` package for working with partially ordered sets (a.k.a. posets). Posets may be considered a type of graph, though the notation and focus is rather different.

My `Posets` package is strongly based on `Graphs` and re-uses function names where appropriate. A reasonable working version is now available [here](https://github.com/scheinerman/Posets.jl). In the same spirit as `GraphsOptim`, I also have `PosetsOptim` which segregates functions that rely on mathematical (integer) programming. That’s available [here](https://github.com/scheinerman/PosetsOptim.jl). I plan to register them soon, but wonder if `PosetsOptim` really should be a separate package.

I’m wondering if this would be appropriate to add to the graphs ecosystem (i.e. as part of the JuliaGraphs community). I don’t see anything poset specific there.

I’m also open to help with some associated software matters as I’m not at all conversant in git, can’t figure out `Documenter`, not sure if my code is Blue compliant, and so on.

Maybe best to post suggestions/correspondence directly to the `Posets` page: [GitHub - scheinerman/Posets.jl: Partially ordered sets](https://github.com/scheinerman/Posets.jl)

Thanks!

PS I have an older package `SimplePosets` based on `SimpleGraphs`, but that has a rather different design philosophy.

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/224680_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [August 5, 2024, 6:44am UTC](https://discourse.julialang.org/t/the-graphs-ecosystem/99463/31 "2024-08-05T06:44:08Z")

</div>

Hi Ed, thanks for this contribution!  
It’s very cool that you based this implementation on Graphs.jl. One thing that comes to mind is that we don’t have many dedicated utilities (or even a specific type) for DAGs. This has come up in past issues, but if you found some missing tools during your work feel free to open more!  
I don’t think you really need to go through the trouble of separating Posets from PosetsOptim if you don’t want to. The idea on our end was to avoid bringing in JuMP.jl for everyone who downloads Graphs.jl, but since you will have much fewer users it may not be worth the pain.  
As for the package development workflow, you can check out this blog I wrote: [Sharing your code](https://modernjuliaworkflows.org/sharing/)  
Happy to answer questions if you tag me on some specific problems! See you on GitHub maybe?

---

<div class="post-metadata">

**Author:** ![tecosaur](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tecosaur/32/23206_2.png) [@tecosaur](https://discourse.julialang.org/u/tecosaur)\
**Post date:** [August 5, 2024, 6:56am UTC](https://discourse.julialang.org/t/the-graphs-ecosystem/99463/32 "2024-08-05T06:56:51Z")

</div>

> [@gdalle](#):
>
> The idea on our end was to avoid bringing in [JuMP.jl](https://juliahub.com/ui/Packages/General/JuMP) for everyone who downloads [Graphs.jl](https://juliahub.com/ui/Packages/General/Graphs), but since you will have much fewer users it may not be worth the pain.

This sentence makes me think that package extensions should also be considered, as long as you don’t mind requiring Julia 1.9+.

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/224680_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [August 5, 2024, 7:35am UTC](https://discourse.julialang.org/t/the-graphs-ecosystem/99463/33 "2024-08-05T07:35:31Z")

</div>

At the moment Graphs.jl aims to retain compatibility with 1.6. Once 1.10 becomes the new LTS, that could be a solution indeed.  
GraphsOptim.jl still hasn’t been registered (cause I wanted to clean it up first and never took the time). I thought it was a bad thing but maybe it’s actually fine if we want to put these algorithms in an extension of the main package.

---

<div class="post-metadata">

**Author:** ![scheinerman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/scheinerman/32/35303_2.png) [@scheinerman](https://discourse.julialang.org/u/scheinerman)\
**Post date:** [August 5, 2024, 10:49am UTC](https://discourse.julialang.org/t/the-graphs-ecosystem/99463/34 "2024-08-05T10:49:50Z")

</div>

@gdalle Thank you Guillame! What is the best way to contact you without cluttering up this thread? Is there a way to send one-on-one messages in Github?

I’ll look at your blog and merge `PosetsOptim` into `Posets` so it’s all inclusive.

When I have things where I want them, I’ll register. We can discuss separately if it makes sense for this to be part of [Julia Graphs](https://juliagraphs.org/).

-Ed

---

<div class="post-metadata">

**Author:** ![scheinerman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/scheinerman/32/35303_2.png) [@scheinerman](https://discourse.julialang.org/u/scheinerman)\
**Post date:** [August 5, 2024, 5:36pm UTC](https://discourse.julialang.org/t/the-graphs-ecosystem/99463/35 "2024-08-05T17:36:08Z")

</div>

To those who might find this … I’ve merged all of `PosetsOptim` into `Posets` and will be deleting `PosetsOptim`. I plan to register `Posets` soon.

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/224680_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [August 6, 2024, 6:34am UTC](https://discourse.julialang.org/t/the-graphs-ecosystem/99463/36 "2024-08-06T06:34:07Z")

</div>

> [@scheinerman](#):
>
> What is the best way to contact you without cluttering up this thread? Is there a way to send one-on-one messages in Github?

Luckily there are no DMs on GitHub, but feel free to ping me on specific issues, or message me on Slack / Discourse 🙂 I haven’t given the graphs ecosystem much attention this year, cause I’ve been very focused on autodiff, but once I make PI I hope to pursue some grants to revitalize it

---

<div class="post-metadata">

**Author:** ![tecosaur](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tecosaur/32/23206_2.png) [@tecosaur](https://discourse.julialang.org/u/tecosaur)\
**Post date:** [August 6, 2024, 9:26am UTC](https://discourse.julialang.org/t/the-graphs-ecosystem/99463/37 "2024-08-06T09:26:09Z")

</div>

> [@gdalle](#):
>
> but once I make PI I hope to pursue some grants to revitalize it

I could just ❤-react this, but that’s not enough.

Guillaume, I would _love_ to see this happen 🤩.

I’m currently thinking of embarking on a large graph-based project and the Julia graphs ecosystem seems tragically close to greatness.

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/224680_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [August 6, 2024, 10:01am UTC](https://discourse.julialang.org/t/the-graphs-ecosystem/99463/38 "2024-08-06T10:01:22Z")

</div>

Let’s talk next year then, maybe we can make it happen together!

[Previous page](https://discourse.julialang.org/t/the-graphs-ecosystem/99463.md?page=1)
