Package names should be sensible to most Julia users, even to those who are not domain experts. The following guidelines apply to the General registry but may be useful for other package registries as well.
Since the General registry belongs to the entire community, people may have opinions about your package name when you publish it, especially if it's ambiguous or can be confused with something other than what it is. Usually, you will then get suggestions for a new name that may fit your package better.
-
§ Avoid jargon. In particular, avoid acronyms unless there is minimal possibility of confusion.
- It's okay for package names to contain
DNAif you're talking about the DNA, which has a universally agreed-upon definition. - It's more difficult to justify package names containing the acronym
CIfor instance, which may mean continuous integration, confidence interval, etc. - If there is a risk of confusion, it may be best to disambiguate an acronym with additional words, such as a lab group or field.
- If your acronym is unambiguous, easily searchable, and/or unlikely to be confused across domains, a good justification is often enough for approval.
- It's okay for package names to contain
-
§ Avoid using
Juliain your package name or prefixing it withJu.- It is usually clear from context and to your users that the package is a Julia package.
- Package names already have a
.jlextension, which communicates to users thatPackage.jlis a Julia package. - Having Julia in the name can imply that the package is connected to, or endorsed by, contributors to the Julia language itself.
-
§ Packages that provide most of their functionality in association with a new type should have pluralized names.
DataFramesprovides theDataFrametype.BloomFiltersprovides theBloomFiltertype.- In contrast,
JuliaParserprovides no new type, but instead new functionality in theJuliaParser.parse()function.
-
§ Err on the side of clarity, even if clarity seems long-winded to you.
RandomMatricesis a less ambiguous name thanRndMatorRMT, even though the latter are shorter.- Generally, package names should be at least 5 characters long, not including the
.jlextension.
-
§ A less systematic name may suit a package that implements one of several possible approaches to its domain.
- Julia does not have a single comprehensive plotting package. Instead,
Gadfly,PyPlot,Winston, and other packages each implement a unique approach based on a particular design philosophy. - In contrast,
SortingAlgorithmsprovides a consistent interface to use many well-established sorting algorithms.
- Julia does not have a single comprehensive plotting package. Instead,
-
§ Packages that wrap external libraries or programs can be named after those libraries or programs. However, as of February 2026, we now request that these packages indicate in their package name (in some way) that they are wrapping an external library or program. For example, consider a hypothetical package that wraps a library or program named
ABC. Possible names for the Julia package might include:ABCWrapperABCInterfaceExternalABCABCLibraryLibABC
-
§ Avoid naming a package closely to an existing package.
Websocketis too close toWebSocketsand can be confusing to users. Rather use a new name such asConcurrentWebsocketsthat is descriptive of what distinguishes the package.
-
§ Avoid using a distinctive name that is already in use in a well-known, unrelated project.
- Don't use the names
Tkinter.jl,TkinterGUI.jl, etc., for a package that is unrelated to the populartkinterPython package, even if it provides bindings to Tcl/Tk. A package name ofTkinter.jlwould only be appropriate if the package used Python's library to accomplish its work or was spearheaded by the same community of developers. - It's okay to name a package
HTTP.jleven though it is unrelated to the popular Rust cratehttpbecause, in most usages, the name "http" refers to the hypertext transfer protocol, not to thehttprust crate. - It's okay to name a package
OpenSSL.jlif it provides an interface to the OpenSSL library, even without explicit affiliation with the creators of the OpenSSL (provided there's no copyright or trademark infringement, etc.)
- Don't use the names
-
§ Packages should follow the Stylistic Conventions.
- The package name should begin with a capital letter, and word separation is shown with upper camel case.
- Only ASCII characters are allowed in a package name.
- Packages that provide the functionality of a project from another language should use the Julia convention.
- Packages that provide pre-built libraries and executables can keep their original name, but should get
_jllas a suffix. For example,pandoc_jllwraps pandoc. However, note that the generation and release of most JLL packages is handled by the Yggdrasil system.
-
§ For the complete list of rules for automatic merging into the General registry, see the AutoMerge guidelines.