# The structure of the registry

**URL:** <https://discourse.julialang.org/t/the-structure-of-the-registry/38188>\
**Category:** Internals & Design\
**Tags:** question\
**Created:** [April 25, 2020, 12:00pm UTC](https://discourse.julialang.org/t/the-structure-of-the-registry/38188 "2020-04-25T12:00:09Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![alirezamecheng](https://avatars.discourse-cdn.com/v4/letter/a/e95f7d/32.png) [@alirezamecheng](https://discourse.julialang.org/u/alirezamecheng)\
**Post date:** [April 25, 2020, 12:00pm UTC](https://discourse.julialang.org/t/the-structure-of-the-registry/38188/1 "2020-04-25T12:00:09Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![GunnarFarneback](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gunnarfarneback/32/1827_2.png) [@GunnarFarneback](https://discourse.julialang.org/u/GunnarFarneback)\
**Post date:** [April 25, 2020, 12:32pm UTC](https://discourse.julialang.org/t/the-structure-of-the-registry/38188/2 "2020-04-25T12:32:50Z")

</div>

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

```julia
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`.

---

<div class="post-metadata">

**Author:** ![alirezamecheng](https://avatars.discourse-cdn.com/v4/letter/a/e95f7d/32.png) [@alirezamecheng](https://discourse.julialang.org/u/alirezamecheng)\
**Post date:** [April 25, 2020, 12:45pm UTC](https://discourse.julialang.org/t/the-structure-of-the-registry/38188/3 "2020-04-25T12:45:32Z")

</div>

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.
