# To pluralize or not to pluralize the name of a package?

**URL:** <https://discourse.julialang.org/t/to-pluralize-or-not-to-pluralize-the-name-of-a-package/123311>\
**Category:** General Usage\
**Created:** [December 1, 2024, 2:25am UTC](https://discourse.julialang.org/t/to-pluralize-or-not-to-pluralize-the-name-of-a-package/123311 "2024-12-01T02:25:48Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![David\_Sagan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/david_sagan/32/33792_2.png) [@David\_Sagan](https://discourse.julialang.org/u/David_Sagan)\
**Post date:** [December 1, 2024, 2:25am UTC](https://discourse.julialang.org/t/to-pluralize-or-not-to-pluralize-the-name-of-a-package/123311/1 "2024-12-01T02:25:48Z")

</div>

According to the Julia package naming guidelines ([5. Creating Packages · Pkg.jl](https://pkgdocs.julialang.org/v1/creating-packages/#Package-naming-rules)):

1. Packages that provide most of their functionality in association with a new type should have pluralized names.

- `DataFrames` provides the `DataFrame` type.
- `BloomFilters` provides the `BloomFilter` type.
- In contrast, `JuliaParser` provides no new type, but instead new functionality in the `JuliaParser.parse()` function.

In my case, my package which I will eventually submit is called `AcceleratorLattice.jl`. There is no `AcceleratorLattice` type but there is a `Lattice` type. So should I be calling my package `AcceleratorLattices.jl` or does it matter?

Thanks for any advice.

---

<div class="post-metadata">

**Author:** ![Dan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dan/32/42581_2.png) [@Dan](https://discourse.julialang.org/u/Dan)\
**Post date:** [December 1, 2024, 2:35am UTC](https://discourse.julialang.org/t/to-pluralize-or-not-to-pluralize-the-name-of-a-package/123311/2 "2024-12-01T02:35:34Z")

</div>

Maybe plural should be used if the main Type/structure is expected to have many instances in an application, and singular if the main Type/structure is expected to be a singleton.

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [December 1, 2024, 8:48am UTC](https://discourse.julialang.org/t/to-pluralize-or-not-to-pluralize-the-name-of-a-package/123311/3 "2024-12-01T08:48:10Z")

</div>

Do you expect that your package will provide multiple sub-types of the Lattice type? Then I would use plural.

My package KiteModels provides the type AbstractKiteModel and different concrete implementations of this type, therefore I use plural.

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [December 1, 2024, 6:49pm UTC](https://discourse.julialang.org/t/to-pluralize-or-not-to-pluralize-the-name-of-a-package/123311/4 "2024-12-01T18:49:37Z")

</div>

According to the guidelines you quote, your package name should be pluralized.

There’s also the possibility that you might add more or different types over time, in which case it’s good to allow for that possibility.

---

<div class="post-metadata">

**Author:** ![goerz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/goerz/32/3269_2.png) [@goerz](https://discourse.julialang.org/u/goerz)\
**Post date:** [December 1, 2024, 8:19pm UTC](https://discourse.julialang.org/t/to-pluralize-or-not-to-pluralize-the-name-of-a-package/123311/5 "2024-12-01T20:19:45Z")

</div>

> [@David\_Sagan](#):
>
> So should I be calling my package `AcceleratorLattices.jl` or does it matter?

Hard to say in the abstract, but having glanced at the documentation linked [from your README](https://github.com/bmad-sim/AcceleratorLattice.jl), I would indeed lean towards the pluralized `AcceleratorLattices` being the more Julian name

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [December 1, 2024, 11:21pm UTC](https://discourse.julialang.org/t/to-pluralize-or-not-to-pluralize-the-name-of-a-package/123311/6 "2024-12-01T23:21:37Z")

</div>

One more argument for pluralization: Even if you only provide a single type, users will probably create many different instances of that type.

---

<div class="post-metadata">

**Author:** ![goerz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/goerz/32/3269_2.png) [@goerz](https://discourse.julialang.org/u/goerz)\
**Post date:** [December 2, 2024, 1:52am UTC](https://discourse.julialang.org/t/to-pluralize-or-not-to-pluralize-the-name-of-a-package/123311/7 "2024-12-02T01:52:24Z")

</div>

My understanding was that this is _the_ argument for pluralization

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [December 2, 2024, 6:29am UTC](https://discourse.julialang.org/t/to-pluralize-or-not-to-pluralize-the-name-of-a-package/123311/8 "2024-12-02T06:29:06Z")

</div>

But I didn’t think it had been brought up in this thread, though now I see @Dan did.

---

<div class="post-metadata">

**Author:** ![David\_Sagan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/david_sagan/32/33792_2.png) [@David\_Sagan](https://discourse.julialang.org/u/David_Sagan)\
**Post date:** [December 2, 2024, 5:32pm UTC](https://discourse.julialang.org/t/to-pluralize-or-not-to-pluralize-the-name-of-a-package/123311/9 "2024-12-02T17:32:50Z")

</div>

Essentially, there will be only be the one `Lattice` struct.
