# Idea: "MapOfJulia.jl" Discover and visualize the Julia ecosystem as a graph

**URL:** <https://discourse.julialang.org/t/idea-mapofjulia-jl-discover-and-visualize-the-julia-ecosystem-as-a-graph/97393>\
**Category:** Community\
**Tags:** packages, community, discoverability\
**Created:** [April 12, 2023, 1:58pm UTC](https://discourse.julialang.org/t/idea-mapofjulia-jl-discover-and-visualize-the-julia-ecosystem-as-a-graph/97393 "2023-04-12T13:58:13Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Salmon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/salmon/32/22968_2.png) [@Salmon](https://discourse.julialang.org/u/Salmon)\
**Post date:** [April 12, 2023, 1:58pm UTC](https://discourse.julialang.org/t/idea-mapofjulia-jl-discover-and-visualize-the-julia-ecosystem-as-a-graph/97393/1 "2023-04-12T13:58:13Z")

</div>

Hi everyone,  
I wanted to discuss an idea which has been in my head for a while now and would be interested in hearing if this has been attempted before.

The idea is nothing too original at this point: Perhaps, you have seen maps like this one before:

 ![grafik](https://global.discourse-cdn.com/julialang/original/3X/b/2/b260d590f16fa12d9d381756c11c74504e941461.jpeg)  
Source: [https://youtubeatlas.com](https://youtubeatlas.com)

**Why:**

Personally, I often like to browse through package announcements and different package ecosystems to check on new projects done in Julia. I do feel that the package discoverability is not great however, which such a website could possibly improve upon. I think the advantages of such a project would be

- An easy reference for newcomers which major packages there are available
- An easy reference for all Julia users that are looking to find a particular package in their respective field (i.e. the Graph will probably naturally separate into clusters for large ecosystems like machine learning, differential equations, big data, visualization, etc.)
  - This way does not disfavor packages with rather abstract names (I’m looking at you `Cthulhu.jl` 🙂 ). Even more: If I search for [“Lattices” on JuliaHub](https://juliahub.com/ui/Search?q=Lattices&type=packages), I see a few projects, but packages such as [Crystallographic.jl](https://github.com/thchr/Crystalline.jl) are not there, because they do not explicitly contain the word “Lattice”
  - In particular, this clustering allows to discover niche packages with not so many users that otherwise get lost

- A good way of identifying different packages with the same goal (some of which might be abandoned)
- It’s simply fun to look at and play around with these maps. _(i.e. [Did you know there is a package which replaces common base functions by “appropriate” emojis?)](https://github.com/JuliaWTF/WatchJuliaBurn.jl)_

# What would need to be done:

Ok, I’ll admit im not an expert, otherwise I’d have presented you with a proof of concept.  
For instance, in “MapOfJulia.jl” the size of the nodes could be represented by the number of users of a package, while the connectivity of the graph might be found by project.toml files that include both packages.  
To construct something like this, one would probably have to automatically scan Github for julia projects (registered and unregistered) and save this metadata. The rest seems to be doable via `Graphs.jl` and `GraphMakie.jl` or similar (and the building a website part, no idea how difficult this is)

I’d be interested in hearing your thoughts 🙂

**Further references:**

> **[GitHub - anvaka/map-of-reddit: Interactive map of reddit](https://github.com/anvaka/map-of-reddit)**
>
> Interactive map of reddit

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [April 12, 2023, 2:15pm UTC](https://discourse.julialang.org/t/idea-mapofjulia-jl-discover-and-visualize-the-julia-ecosystem-as-a-graph/97393/2 "2023-04-12T14:15:00Z")

</div>

I did this a long time ago. The code to construct the graph probably doesn’t work anymore, but it can serve as a starter if you want to produce a more recent version:

> **[The DAG of Julia packages](https://juliohm.github.io/dataviz/DAG-of-Julia-packages/)**

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [April 12, 2023, 2:15pm UTC](https://discourse.julialang.org/t/idea-mapofjulia-jl-discover-and-visualize-the-julia-ecosystem-as-a-graph/97393/3 "2023-04-12T14:15:43Z")

</div>

And here is another one mapping the “people of Julia”:

> **[Where are the Julians?](https://juliohm.github.io/dataviz/where-are-the-julians/)**

---

<div class="post-metadata">

**Author:** ![Salmon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/salmon/32/22968_2.png) [@Salmon](https://discourse.julialang.org/u/Salmon)\
**Post date:** [April 12, 2023, 2:22pm UTC](https://discourse.julialang.org/t/idea-mapofjulia-jl-discover-and-visualize-the-julia-ecosystem-as-a-graph/97393/4 "2023-04-12T14:22:24Z")

</div>

Oh nice!  
I’ve looked for this a few times but never found anything.
