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
). 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
- This way does not disfavor packages with rather abstract names (I’m looking at you
- 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
Further references: