The structure of the registry

Hello everyone,

If I’m getting this right, the only thing that must be unique for every package is the UUID of that package. Meaning that it is possible to have packages with the same name, although it has been encouraged to have some “considerations” before naming a package.

I think there is an ambiguity in the registry hierarchy. The packages metadata are stored in a path starting with the capital starting letter of the package name followed by the package name (e.g., E/Example for the Example.jl package)

I know that in case of similarities in the names, this path can be changed for the following packages, but I was curious to know if that was the idea of the honorable developers.

Thank you very much for your time

To find a package in a registry, you first locate its UUID in Registry.toml, e.g.

7876af07-990d-54b4-ab0e-23690620f79a = { name = "Example", path = "E/Example" }

Then the path field tells you where to find the package’s data directory. The convention that this path is Initial/Name is used by the RegistryTools package, which indeed cannot handle multiple packages of the same name, but from the package manager’s point of view the path could be of any form, e.g. involve the UUID.

I.e. a registry is free to organize the package directories any way it wants, it just needs to record the paths in Registry.toml.

1 Like

Yes, that is true.
I just wanted to know if my intuition about this issue is correct or not.
I made a private registry, and in that, I just used a combination of the package UUID and package name.
It solves the problem of similarity in the names.