# Package naming guidelines

**URL:** <https://discourse.julialang.org/t/package-naming-guidelines/7140>\
**Category:** Community\
**Created:** [November 15, 2017, 6:03pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140 "2017-11-15T18:03:00Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![John\_Gibson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/john_gibson/32/5321_2.png) [@John\_Gibson](https://discourse.julialang.org/u/John_Gibson)\
**Post date:** [November 15, 2017, 6:03pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/1 "2017-11-15T18:03:00Z")

</div>

For 1.0 I would like to see all major packages adhere to the [Guidelines for Naming Packages](https://docs.julialang.org/en/stable/manual/packages/#Guidelines-for-naming-a-package-1), especially spelling out acronyms in package names unless they’re completely obvious and unambigous. E.g. SVD would be ok as a package name, but GMT should be converted to GenericMappingTools.

This isn’t syntax breaking but I feel like this is important from a user perspective and 1.0 would be a good target.

---

<div class="post-metadata">

**Author:** ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)\
**Post date:** [November 15, 2017, 9:14pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/2 "2017-11-15T21:14:43Z")

</div>

I did consult those guidelines but _GMT_ is not an acronym created for the Julia package. [GMT](http://gmt.soest.hawaii.edu/projects/gmt/wiki) is the original name of a venerable but quite actively maintained project of ~30 years age.

---

<div class="post-metadata">

**Author:** ![chakravala](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chakravala/32/6832_2.png) [@chakravala](https://discourse.julialang.org/u/chakravala)\
**Post date:** [November 15, 2017, 9:16pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/3 "2017-11-15T21:16:27Z")

</div>

Agreed that Julia packages should adhere to the naming scheme, but GMT seems fine to me in this case.

---

<div class="post-metadata">

**Author:** ![mauro3](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mauro3/32/292_2.png) [@mauro3](https://discourse.julialang.org/u/mauro3)\
**Post date:** [November 15, 2017, 9:33pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/4 "2017-11-15T21:33:22Z")

</div>

Each to their own abbreviation/acronym…

---

<div class="post-metadata">

**Author:** ![mkborregaard](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkborregaard/32/556_2.png) [@mkborregaard](https://discourse.julialang.org/u/mkborregaard)\
**Post date:** [November 15, 2017, 10:00pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/5 "2017-11-15T22:00:11Z")

</div>

> [@List of most desired features for Julia v1.x](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/182):
>
> SVD would be ok as a package name

I have no idea what SVD means

---

<div class="post-metadata">

**Author:** ![dpsanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dpsanders/32/3573_2.png) [@dpsanders](https://discourse.julialang.org/u/dpsanders)\
**Post date:** [November 16, 2017, 12:42am UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/6 "2017-11-16T00:42:20Z")

</div>

That’s why I have always advocated for 0 abbreviations in package names. One person’s obvious “used-every-minute-in-my-field” acronym is the next person’s mystery.

---

<div class="post-metadata">

**Author:** ![randyzwitch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/randyzwitch/32/15955_2.png) [@randyzwitch](https://discourse.julialang.org/u/randyzwitch)\
**Post date:** [November 16, 2017, 2:13pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/7 "2017-11-16T14:13:43Z")

</div>

> [@List of most desired features for Julia v1.x](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/187):
>
> That’s why I have always advocated for 0 abbreviations in package names. One person’s obvious “used-every-minute-in-my-field” acronym is the next person’s mystery.

In that case, does it matter if it’s an acronym? If you’re not in that industry, you’re not going to need the package and examples you would be looking for wouldn’t be using it.

---

<div class="post-metadata">

**Author:** ![John\_Gibson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/john_gibson/32/5321_2.png) [@John\_Gibson](https://discourse.julialang.org/u/John_Gibson)\
**Post date:** [November 16, 2017, 4:32pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/8 "2017-11-16T16:32:56Z")

</div>

The Guidelines for Naming Packages (link above) begins “Package names should be sensible to most Julia users, even to those who are not domain experts.” I can think of four acronyms that might qualify as sensible to most Julia users: ODE, PDE, SVD, and FFT. But I’d be happy to give those up and agree with @dpsanders: spell out everything.

> [@List of most desired features for Julia v1.x](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/188):
>
> In that case, does it matter if it’s an acronym? If you’re not in that industry, you’re not going to need the package and examples you would be looking for wouldn’t be using it.

The reason is avoiding confusion and saving people time. Recently I’ve seen announcements on Discourse of the form “ANN: XYZ.jl 0.4 released”. I click on the thread and find discussion of the upgrade but no definition of XYZ. Then I click on the package website, scroll down, find where the acronym is spelled out, and conclude “Oh, not relevant to me.” I’d rather have known that from just the package name in the announcement title.

@joa-quim: sorry, didn’t mean to pick on GMT. It was just a recent example that stuck in my mind.

---

<div class="post-metadata">

**Author:** ![mkborregaard](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkborregaard/32/556_2.png) [@mkborregaard](https://discourse.julialang.org/u/mkborregaard)\
**Post date:** [November 16, 2017, 4:38pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/9 "2017-11-16T16:38:42Z")

</div>

Fun fact: “ODE”, “SVD” and “FFT” are all terms that I’ve googled after starting to use Julia (“SVD” yesterday). I still don’t know what “PDE” means (but I’ll probably google it later 😂 )

---

<div class="post-metadata">

**Author:** ![John\_Gibson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/john_gibson/32/5321_2.png) [@John\_Gibson](https://discourse.julialang.org/u/John_Gibson)\
**Post date:** [November 16, 2017, 4:52pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/10 "2017-11-16T16:52:43Z")

</div>

@mkborregaard: I guess I ought to think of Julia users as broader than just applied math! I’ll come down on the side of 0 abbreviations, then.

---

<div class="post-metadata">

**Author:** ![pdeffebach](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pdeffebach/32/10320_2.png) [@pdeffebach](https://discourse.julialang.org/u/pdeffebach)\
**Post date:** [November 16, 2017, 4:53pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/11 "2017-11-16T16:53:01Z")

</div>

There is still the cognitive burden of “Do I know what this is or not?” If I see SVD, it could be any number of acronyms in my head. If I were to SingularValueDecomposition, I know immediately that it has no relevance to my work.

Granted SingularValueDecomposition is a bit of a mouthful.

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [November 16, 2017, 5:02pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/12 "2017-11-16T17:02:31Z")

</div>

> [@List of most desired features for Julia v1.x](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/192):
>
> Granted SingularValueDecomposition is a bit of a mouthful.

I sometimes find myself favoring no acronyms just out of spite.

---

<div class="post-metadata">

**Author:** ![chakravala](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chakravala/32/6832_2.png) [@chakravala](https://discourse.julialang.org/u/chakravala)\
**Post date:** [November 16, 2017, 5:27pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/13 "2017-11-16T17:27:31Z")

</div>

If somebody doesn’t know what a PDE is, then it is very likely that  
PartialDifferentialEquation would not enlighten the person any further, so  
why would the longer name be more useful?

If you have ever studied differential equations though, then you would  
immdediately know what a PDE is.

Same with ODE and SVD.

It’s an interesting debate, which I dont claim to know the answer to, but I  
think if spelling out the acronym doesn’t help people understand the  
meaning, then there is no point in spelling it out.

The full spelling should be definitely used in cases of ambiguity or when  
the spelled out name is more eplanatory to the unititiated.

But in the case of PDE, if somebody doesnt know what PDE is, then  
PartialDifferentialEquation is not going to explain it any better, and if  
you know what a partial DE is, then the PDE acronym will be entirely clear.

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [November 16, 2017, 5:34pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/14 "2017-11-16T17:34:27Z")

</div>

> [@List of most desired features for Julia v1.x](https://discourse.julialang.org/t/list-of-most-desired-features-for-julia-v1-x/4481/194):
>
> If somebody doesn’t know what a PDE is, then it is very likely that PartialDifferentialEquation would not enlighten the person any further, so why would the longer name be more useful?

Given the full name, it is easier to determine if it is something that _could_ be interesting or related to one’s work. Keep in mind that different fields frequently use different names for the same or similar concepts (and rediscover ideas that have been used in another field for 30 years, etc), compressing things to acronyms makes this much worse.

---

<div class="post-metadata">

**Author:** ![mkborregaard](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkborregaard/32/556_2.png) [@mkborregaard](https://discourse.julialang.org/u/mkborregaard)\
**Post date:** [November 16, 2017, 5:36pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/15 "2017-11-16T17:36:15Z")

</div>

That’s wrong. I know what a Partial Differential Equation is, but PDE is not part of my active vocabulary. Also, I am a little sure what the purpose of this discussion is, as the existing naming guidelines are quite clear.

---

<div class="post-metadata">

**Author:** ![chakravala](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chakravala/32/6832_2.png) [@chakravala](https://discourse.julialang.org/u/chakravala)\
**Post date:** [November 16, 2017, 5:41pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/16 "2017-11-16T17:41:40Z")

</div>

That’s why I mentioned that if the acronym is ambiguous it should spell  
out, but Im not aware this is the case with PDE…

---

<div class="post-metadata">

**Author:** ![dpsanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dpsanders/32/3573_2.png) [@dpsanders](https://discourse.julialang.org/u/dpsanders)\
**Post date:** [November 16, 2017, 6:27pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/17 "2017-11-16T18:27:12Z")

</div>

> **[PDE](https://en.m.wikipedia.org/wiki/PDE)**
>
> PDE may refer to:

---

<div class="post-metadata">

**Author:** ![dlfivefifty](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlfivefifty/32/1959_2.png) [@dlfivefifty](https://discourse.julialang.org/u/dlfivefifty)\
**Post date:** [November 16, 2017, 8:08pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/18 "2017-11-16T20:08:49Z")

</div>

I think it should stay FFTW.jl, not FastestFourierTransformWest.jl

---

<div class="post-metadata">

**Author:** ![John\_Gibson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/john_gibson/32/5321_2.png) [@John\_Gibson](https://discourse.julialang.org/u/John_Gibson)\
**Post date:** [November 16, 2017, 10:00pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/19 "2017-11-16T22:00:54Z")

</div>

That’s a tough one. Maybe FourierTransforms, if 0 abbreviations wins out?

Another possible rule is no abbreviations, except a few special ones officially certified as ok by the core Julia team. IMHO if anything would be ok, it’d be FFT or FFTW and SVD, which appears in the GenericSVD package name.

---

<div class="post-metadata">

**Author:** ![kevin.squire](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kevin.squire/32/62_2.png) [@kevin.squire](https://discourse.julialang.org/u/kevin.squire)\
**Post date:** [November 16, 2017, 10:10pm UTC](https://discourse.julialang.org/t/package-naming-guidelines/7140/20 "2017-11-16T22:10:11Z")

</div>

I think that resolving [#1255](https://github.com/JuliaLang/julia/issues/1255) (beyond the current workaround) would go a long way toward making long package names easier to use…

Cheers,  
Kevin

Edit: [most relevant comment](https://github.com/JuliaLang/julia/issues/1255#issuecomment-270199015)

[Next page](https://discourse.julialang.org/t/package-naming-guidelines/7140.md?page=2)
