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

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:


Source: 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 :slight_smile: ). Even more: If I search for “Lattices” on JuliaHub, I see a few projects, but packages such as Crystallographic.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?)

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 :slight_smile:

Further references:

5 Likes

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:

3 Likes

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

3 Likes

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

1 Like