# Explicit package names

**URL:** <https://discourse.julialang.org/t/explicit-package-names/62769>\
**Category:** Community\
**Created:** [June 11, 2021, 9:33pm UTC](https://discourse.julialang.org/t/explicit-package-names/62769 "2021-06-11T21:33:06Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![jzr](https://avatars.discourse-cdn.com/v4/letter/j/eb9ed0/32.png) [@jzr](https://discourse.julialang.org/u/jzr)\
**Post date:** [June 11, 2021, 9:33pm UTC](https://discourse.julialang.org/t/explicit-package-names/62769/1 "2021-06-11T21:33:06Z")

</div>

It may be worth looking at the [guidelines for naming packages](https://pkgdocs.julialang.org/v1/creating-packages/#Package-naming-guidelines), which tend to favor explicit names.

Edit: This topic was spun off [[ANN] Shrike.jl: Julia beats optimized C++ (Fast accurate approximate nearest neighbor search) - #2](https://discourse.julialang.org/t/shrike-jl-julia-beats-optimized-c-fast-accurate-approximate-nearest-neighbor-search/62763/2)

---

<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:** [June 11, 2021, 9:45pm UTC](https://discourse.julialang.org/t/explicit-package-names/62769/2 "2021-06-11T21:45:42Z")

</div>

Look at the list of top packages at [https://juliaobserver.com/packages](https://juliaobserver.com/packages) and you’ll see that Shrike.jl fits right in.

---

<div class="post-metadata">

**Author:** ![jzr](https://avatars.discourse-cdn.com/v4/letter/j/eb9ed0/32.png) [@jzr](https://discourse.julialang.org/u/jzr)\
**Post date:** [June 11, 2021, 9:50pm UTC](https://discourse.julialang.org/t/explicit-package-names/62769/3 "2021-06-11T21:50:45Z")

</div>

Yeah but look at other pages. [https://juliaobserver.com/packages?page=4](https://juliaobserver.com/packages?page=4)

I think the explicit naming convention is a good one. It makes the package easier to find and makes code that uses it more readable. If there is already another package in the space, like Plots.jl, then another name may be needed, like AbstractPlotting.jl (as mentioned in the guidelines).

---

<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:** [June 11, 2021, 10:04pm UTC](https://discourse.julialang.org/t/explicit-package-names/62769/4 "2021-06-11T22:04:23Z")

</div>

This is a matter of taste. For example, I prefer the name Makie over Plots. Pedestrian, dull, explicit names. Or flamboyant, memorable names. At least leave room for both.

---

<div class="post-metadata">

**Author:** ![jzr](https://avatars.discourse-cdn.com/v4/letter/j/eb9ed0/32.png) [@jzr](https://discourse.julialang.org/u/jzr)\
**Post date:** [June 11, 2021, 10:05pm UTC](https://discourse.julialang.org/t/explicit-package-names/62769/5 "2021-06-11T22:05:36Z")

</div>

I guess my taste is to follow the guidelines 🙂

Anyway, maybe someone else has more useful feedback than I do. Mods feel free to split this tangent off.

---

<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:** [June 11, 2021, 10:13pm UTC](https://discourse.julialang.org/t/explicit-package-names/62769/6 "2021-06-11T22:13:20Z")

</div>

This doesn’t seem to violate the the guidelines at all, which mention, for example, Gadfly and Winston as fine names.

---

<div class="post-metadata">

**Author:** ![jzr](https://avatars.discourse-cdn.com/v4/letter/j/eb9ed0/32.png) [@jzr](https://discourse.julialang.org/u/jzr)\
**Post date:** [June 11, 2021, 10:19pm UTC](https://discourse.julialang.org/t/explicit-package-names/62769/7 "2021-06-11T22:19:14Z")

</div>

> A less systematic name may suit a package that implements one of several possible approaches to its domain.

This is such a generic constraint that it can be used to exclude _any_ package from the explicit-name guideline, if so desired. That’s not my preferred interpretation because then we end up with an unintelligible set of package names.

---

<div class="post-metadata">

**Author:** ![tbeason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tbeason/32/15898_2.png) [@tbeason](https://discourse.julialang.org/u/tbeason)\
**Post date:** [June 11, 2021, 10:28pm UTC](https://discourse.julialang.org/t/explicit-package-names/62769/8 "2021-06-11T22:28:42Z")

</div>

I feel it is important to remember that the name of the _base language_ is Julia, not Sometimes Faster Than Fortran But Hope You Run Things Atleast Twice And Read The Docs Programming Language.

I think the name is fine and the package looks sweet! Bravo

---

<div class="post-metadata">

**Author:** ![liuyxpp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/liuyxpp/32/9870_2.png) [@liuyxpp](https://discourse.julialang.org/u/liuyxpp)\
**Post date:** [June 12, 2021, 1:45am UTC](https://discourse.julialang.org/t/explicit-package-names/62769/9 "2021-06-12T01:45:09Z")

</div>

Agree!

---

<div class="post-metadata">

**Author:** ![jzr](https://avatars.discourse-cdn.com/v4/letter/j/eb9ed0/32.png) [@jzr](https://discourse.julialang.org/u/jzr)\
**Post date:** [June 12, 2021, 2:09am UTC](https://discourse.julialang.org/t/explicit-package-names/62769/10 "2021-06-12T02:09:50Z")

</div>

It seems that people like marketing their packages with flamboyant [DDRAM-style](https://twitter.com/whitequark/status/986217575569735680/photo/1) names like

 ![image](https://global.discourse-cdn.com/julialang/original/3X/1/b/1b597b7f74abb679aad0297875bd93fab9d83030.jpeg)

I think this is against the spirit and letter of the [guidelines](https://pkgdocs.julialang.org/v1/creating-packages/#Package-naming-guidelines) whose first line is

> Package names should be sensible to most Julia users, _even to those who are not domain experts_.

It is helpful to consider the guidelines as applying to most packages. If the guidelines don’t apply to anything, we might as well delete them.

What’s the advantage of NinjaRifleKiller.jl over ApproximateNearestNeighbors.jl? Maybe it’s a more fun name. But this practice makes the Julia ecosystem less discoverable and inclusive to outsiders, which generally should trump the idiosyncrasies of personal taste.

Explicit names also require the developer to do a bit of literature review, to create a name that situates the package in the context of existing packages. For example, Graphs.jl was followed by LightGraphs.jl, which is lighter.

Conforming in this way can be annoying for the developer, but this is why we have guidelines: to constrain our individual preferences in favor of a common objective.

---

<div class="post-metadata">

**Author:** ![liuyxpp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/liuyxpp/32/9870_2.png) [@liuyxpp](https://discourse.julialang.org/u/liuyxpp)\
**Post date:** [June 12, 2021, 3:16am UTC](https://discourse.julialang.org/t/explicit-package-names/62769/11 "2021-06-12T03:16:05Z")

</div>

Great packages and software emerge as they shine. Do Armadillo or Blitz++ have anything to do with Linear Algebra? Can you tell Flask is a web framework from its name?

---

<div class="post-metadata">

**Author:** ![jzr](https://avatars.discourse-cdn.com/v4/letter/j/eb9ed0/32.png) [@jzr](https://discourse.julialang.org/u/jzr)\
**Post date:** [June 12, 2021, 3:52am UTC](https://discourse.julialang.org/t/explicit-package-names/62769/12 "2021-06-12T03:52:43Z")

</div>

> [@liuyxpp](#):
>
> Can you tell Flask is a web framework from its name?

At the time, in the then-smaller Python community it was released into, maybe I could: _Flask_ was an April Fool’s joke based on _Bottle_, another web framework. Nowadays, it’s a big brand-name framework with over a million daily downloads, so it doesn’t need name-based discoverability.

But for most packages and most users, bad names hinder discoverability and inclusiveness.

> [@liuyxpp](#):
>
> Do Armadillo or Blitz++ have anything to do with Linear Algebra?

No, and I’m arguing that’s a problem. Or it would be in Julia, which composes many more packages than C++.

See also [https://nautil.us/issue/89/the-dark-side/why-mathematicians-should-stop-naming-things-after-each-other](https://nautil.us/issue/89/the-dark-side/why-mathematicians-should-stop-naming-things-after-each-other).
