# Silly question that's been bugging me about package naming

**URL:** <https://discourse.julialang.org/t/silly-question-thats-been-bugging-me-about-package-naming/134688>\
**Category:** Package Management\
**Tags:** question, package, pkg\
**Created:** [December 22, 2025, 12:47pm UTC](https://discourse.julialang.org/t/silly-question-thats-been-bugging-me-about-package-naming/134688 "2025-12-22T12:47:35Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![DoktorMike](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/doktormike/32/2736_2.png) [@DoktorMike](https://discourse.julialang.org/u/DoktorMike)\
**Post date:** [December 22, 2025, 12:47pm UTC](https://discourse.julialang.org/t/silly-question-thats-been-bugging-me-about-package-naming/134688/1 "2025-12-22T12:47:36Z")

</div>

So in [Package Naming Rules](https://pkgdocs.julialang.org/v1.12/creating-packages/#Package-naming-rules) it’s clear that package names should contain `.jl` suffix.

> Package names already have a `.jl` extension, which communicates to users that `Package.jl` is a Julia package.

Yet, the example of using `generate` from that documentation does the following:

```julia
> generate HelloWorld

```

which creates a folder called “HelloWorld” and not “HelloWorld.jl”. Futher, the `Project.toml` created contains

```toml
name = "HelloWorld"
uuid = "b4cd1eb8-1e24-11e8-3319-93036a3eb9f3"
version = "0.1.0"
authors = ["Some One <someone@email.com>"]

[deps]

```

where the `name` tag also doesn’t contain the `.jl` suffix. To me this is rather confusing and I don’t really see the rationale behind it. Probably I’m missing something obvious here.

---

<div class="post-metadata">

**Author:** ![kellertuer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kellertuer/32/220707_2.png) [@kellertuer](https://discourse.julialang.org/u/kellertuer)\
**Post date:** [December 22, 2025, 1:20pm UTC](https://discourse.julialang.org/t/silly-question-thats-been-bugging-me-about-package-naming/134688/2 "2025-12-22T13:20:07Z")

</div>

My personal view on this is: That is the difference between intrinsic and extrinsic views.

For example:

- I also always rename the folder to `MyPackage.jl`, since I consider this something that also outside of Julia someone might see in their folder tree
- Within the `Project.toml`s name, _all_ package names would have that suffix, so one can skip that, since it is clear from context
- similarly you would only write `] add MyPackage` without .jl since in Pkg mode it is clear we talk about packages

On on a concrete example: I develop Manopt.jl , but the name originates from Manopt (Matlab), so there the suffix is important to indicate that the Julia package is different from the Matlab version (which has no suffix) - similar to the python package of the same style is called pymanopt.

So as soon as it is clear from context (and for the Folder I disagree with the default generation even 😉 ) – one can drop the `.jl` in the name, but in more generic contexts it is nice to have the suffix. Also for example here in the forum where package names are linked automatically (recognised by the suffix).

---

<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:** [December 22, 2025, 1:46pm UTC](https://discourse.julialang.org/t/silly-question-thats-been-bugging-me-about-package-naming/134688/3 "2025-12-22T13:46:10Z")

</div>

In my opinion it’s opinionated nonsense to claim that `.jl` is part of the package name. The name is what’s in `Project.toml`. Having the `.jl` suffix in _repository_ names has been a very useful convention for getting better web search results, though.

---

<div class="post-metadata">

**Author:** ![DoktorMike](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/doktormike/32/2736_2.png) [@DoktorMike](https://discourse.julialang.org/u/DoktorMike)\
**Post date:** [December 22, 2025, 4:36pm UTC](https://discourse.julialang.org/t/silly-question-thats-been-bugging-me-about-package-naming/134688/4 "2025-12-22T16:36:27Z")

</div>

Thanks for the answers! Very helpful @kellertuer @GunnarFarneback 🙏🏼

If I understand your point of view correctly, which I agree with, it would be better to say in the documentation that you should NOT put `.jl` in your package name but the repository name should have it?

Interestingly if I call `generate Hello.jl` the name tag in the `Project.toml` file still becomes just `Hello` which to me says that the “Package Name” should never contain `.jl` but repo **should** and folder **can**?

---

<div class="post-metadata">

**Author:** ![cjdoris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cjdoris/32/213133_2.png) [@cjdoris](https://discourse.julialang.org/u/cjdoris)\
**Post date:** [December 22, 2025, 5:31pm UTC](https://discourse.julialang.org/t/silly-question-thats-been-bugging-me-about-package-naming/134688/5 "2025-12-22T17:31:00Z")

</div>

That bullet point is just wrong I think - `.jl` is not part of the package name.

However it is a common and useful convention to refer to a package with this suffix. In particular it means Example.jl is clearly a Julia package even taken out of context, whereas just Example is not. And it enables the auto-linking of package names in Discourse.
