# \[ANN\] Jumbo - a scientific Julia distribution

**URL:** <https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856>\
**Category:** Tooling\
**Created:** [November 13, 2025, 9:39pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856 "2025-11-13T21:39:22Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Janis\_Erdmanis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/janis_erdmanis/32/10869_2.png) [@Janis\_Erdmanis](https://discourse.julialang.org/u/Janis_Erdmanis)\
**Post date:** [November 13, 2025, 9:39pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/1 "2025-11-13T21:39:22Z")

</div>

[Jumbo](https://github.com/JanisErdmanis/Jumbo) (formerly JuBox) is a Julia distribution that comes with commonly used scientific packages out of the box. Load Makie, DifferentialEquations, or any included package immediately—all pre-compiled on GitHub CI and ready to use. Additional packages can be installed via Pkg without triggering recompilation of pre-installed packages.

This can be useful in educational settings to prevent precompilation of heavy packages during interactive computer lab sessions, and helps newcomers get started with popular ecosystem packages for a smoother first-time experience.

## What’s included

- Julia 1.12 with approximately 800 pre-compiled packages
- Core packages: Makie, DifferentialEquations, ModelingToolkit, Integrals, DataFrames, QuantumOptics, Images, Turing, JuMP
- Revise and Infiltrator configured to launch automatically
- Native installers for Linux, macOS, and Windows

## Getting started

Download the installer for your platform and CPU architecture from the [release page](https://github.com/JanisErdmanis/Jumbo/releases). Note that macOS and Windows installers are self-signed and require additional installation steps—see the [README](https://github.com/JanisErdmanis/Jumbo) for details. Once installed, launch JuBox from the desktop menu.

## Custom distributions

The [Jumbo repository](https://github.com/JanisErdmanis/Jumbo) serves as a template for creating tailored distributions. Fork it, modify the `Project.toml` with your preferred packages, and run the “Build Release Assets” GitHub Actions workflow to generate installers for all platforms.

---

<div class="post-metadata">

**Author:** ![aplavin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aplavin/32/222056_2.png) [@aplavin](https://discourse.julialang.org/u/aplavin)\
**Post date:** [November 14, 2025, 1:25am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/2 "2025-11-14T01:25:52Z")

</div>

> Additional packages can be installed via Pkg without triggering recompilation of pre-installed packages.

I wonder how this is implemented?

---

<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:** [November 14, 2025, 2:10am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/3 "2025-11-14T02:10:24Z")

</div>

How does this work with VSCode ?

---

<div class="post-metadata">

**Author:** ![Janis\_Erdmanis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/janis_erdmanis/32/10869_2.png) [@Janis\_Erdmanis](https://discourse.julialang.org/u/Janis_Erdmanis)\
**Post date:** [November 14, 2025, 9:55am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/4 "2025-11-14T09:55:55Z")

</div>

The packages are put in the stdlib path, so they are picked up by the Pkg resolver. I had an issue with the `Statistics` package, which has a special status of being upgradable. That for instance caused `DifferentialEquations` to recompile after adding a `Luxor`. Eventually, I fixed this issue by clearing the `Pkg.Types.UPGRADABLE_STDLIBS` list at startup.

There is also an interesting opportunity for users to upgrade specific packages in their environment by manually pushing them at `Pkg.Types.UPGRADABLE_STDLIBS` before updating.

---

<div class="post-metadata">

**Author:** ![Janis\_Erdmanis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/janis_erdmanis/32/10869_2.png) [@Janis\_Erdmanis](https://discourse.julialang.org/u/Janis_Erdmanis)\
**Post date:** [November 14, 2025, 10:01am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/5 "2025-11-14T10:01:08Z")

</div>

I’m not sure; I personally use Emacs. If the VSCode extension allows setting the Julia executable path, that might be all that’s needed. You might also need to install a language server, which can be added to the distribution.

---

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [November 14, 2025, 2:24pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/6 "2025-11-14T14:24:18Z")

</div>

Woudn’t be simpler for the user to get it as a channel of juliaup ? I am a very recent user of juliaup (always just used symlinks..), but I understood juliaup has now 1-dimensional concept of version, perhaps one would like to make it a 2-dimensional concept of [distribution],[version] where distribution could be the core one, your scientific one or whatever…

---

<div class="post-metadata">

**Author:** ![Janis\_Erdmanis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/janis_erdmanis/32/10869_2.png) [@Janis\_Erdmanis](https://discourse.julialang.org/u/Janis_Erdmanis)\
**Post date:** [November 14, 2025, 2:58pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/7 "2025-11-14T14:58:09Z")

</div>

Yes, a dedicated juliaup channel would make much more sense! Here I am creating MISX, DMG, and Snap installers because it was an easy opportunity for the AppBundler.jl project. Currently, I am looking at JuBox as a prototype to see whether it is genuinely desirable and would be used before allocating more development resources to it.

I have also seen discussions about distributing pkgimages via Pkg itself, and hence, distribution bundling may be a temporary solution before that arrives.

---

<div class="post-metadata">

**Author:** ![LeePhillips](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/leephillips/32/205514_2.png) [@LeePhillips](https://discourse.julialang.org/u/LeePhillips)\
**Post date:** [November 14, 2025, 4:34pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/8 "2025-11-14T16:34:20Z")

</div>

I think this is a great idea in general, especially in classroom environments. I must say though that the name you’ve chosen, when pronounced aloud, makes me uneasy.

---

<div class="post-metadata">

**Author:** ![Janis\_Erdmanis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/janis_erdmanis/32/10869_2.png) [@Janis\_Erdmanis](https://discourse.julialang.org/u/Janis_Erdmanis)\
**Post date:** [November 14, 2025, 5:42pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/9 "2025-11-14T17:42:31Z")

</div>

Is there some phonetic association that I have overlooked?

---

<div class="post-metadata">

**Author:** ![isaacsas](https://avatars.discourse-cdn.com/v4/letter/i/f6c823/32.png) [@isaacsas](https://discourse.julialang.org/u/isaacsas)\
**Post date:** [November 14, 2025, 6:29pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/10 "2025-11-14T18:29:37Z")

</div>

I believe @LeePhillips is referencing that it sounds the same as “jew box” would sound.

---

<div class="post-metadata">

**Author:** ![Janis\_Erdmanis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/janis_erdmanis/32/10869_2.png) [@Janis\_Erdmanis](https://discourse.julialang.org/u/Janis_Erdmanis)\
**Post date:** [November 14, 2025, 6:55pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/11 "2025-11-14T18:55:08Z")

</div>

There does not seem to be any historical record with this combination. Hence I don’t understand why should one feel uneasy pronouncing the JuBox aloud. There is even a website [jew-box.com](http://jew-box.com)

---

<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:** [November 14, 2025, 7:04pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/12 "2025-11-14T19:04:22Z")

</div>

This is what AI tells me:

The phrase “jew box” does not have an established or widely recognized meaning as a standalone term in standard dictionaries or common usage. However, from the search results:

- It may be a mistaken or shortened form related to “jewel box,” which means a small box or case designed to hold jewelry, or a clear plastic case for CDs or DVDs.
- One source from Urban Dictionary uses “Jew box” as a slang synonym for television, reflecting a controversial or offensive connotation based on claims about media ownership, but this is not a formal or respectful meaning.
- Another source refers to an exclusionary metaphor “Jew box” in a critical context, where ideas that do not fit a perceived category are excluded, indicating a figurative or polemical use but without a fixed dictionary definition.  
​

From my point of view, it’s not super problematic, but perhaps a little bit.

Another association I had was “Jukebox”.

Perhaps rename it to JewelBox? Well, I’m not sure, but you have some very valuable items in your box. Or just SciJulia?

By the way, I think this is a very promising project! 🙂

---

<div class="post-metadata">

**Author:** ![viralbshah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/viralbshah/32/54_2.png) [@viralbshah](https://discourse.julialang.org/u/viralbshah)\
**Post date:** [November 15, 2025, 4:02pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/13 "2025-11-15T16:02:42Z")

</div>

The package naming guidelines discourage package names starting with `Julia` or `Ju` for a variety of reasons that have been discussed before. I do believe this is not a package for registration. I do feel like these rules have generally given us good package names.

> **[5. Creating Packages · Pkg.jl](https://pkgdocs.julialang.org/v1/creating-packages/#Package-naming-rules)**
>
> Documentation for Pkg.jl.

This project also reminded me of @dgleich 's TechnicalComputeBundle package: [GitHub - dgleich/TechnicalComputeBundle.jl: A simple metapackage for Julia to be used for technical computing](https://github.com/dgleich/TechnicalComputeBundle.jl)

Love the whole infrastructure to make it easier to build your own cross-platform bundle.

---

<div class="post-metadata">

**Author:** ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)\
**Post date:** [November 15, 2025, 4:22pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/14 "2025-11-15T16:22:04Z")

</div>

What about JBox, for Janis’ Julia Box.

---

<div class="post-metadata">

**Author:** ![tecosaur](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tecosaur/32/23206_2.png) [@tecosaur](https://discourse.julialang.org/u/tecosaur)\
**Post date:** [November 15, 2025, 6:04pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/15 "2025-11-15T18:04:53Z")

</div>

> [@rafael.guerra](#):
>
> Janis’ Julia Box.

JJBox?

---

<div class="post-metadata">

**Author:** ![Janis\_Erdmanis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/janis_erdmanis/32/10869_2.png) [@Janis\_Erdmanis](https://discourse.julialang.org/u/Janis_Erdmanis)\
**Post date:** [November 15, 2025, 7:05pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/16 "2025-11-15T19:05:12Z")

</div>

Thank you for the feedback and for sharing the TechnicalComputeBundle reference—it’s definitely in a similar spirit to what I’m doing here. Interestingly, that project could also use AppBundler.jl to create their own bundled distribution from their curated `Project.toml`.

I appreciate the point about package naming guidelines. To clarify: JuBox isn’t intended for package registration. It’s a distribution/installer project, similar in concept to Anaconda for Python or RStudio for R—a bundled environment rather than a registered Julia package. The repository creates standalone installers that users download and run, not something they’d `add` through Pkg.

Since it is not a package, I found it appropriate to prefix the distribution name with **Ju** , following how Linux distributions name themselves, such as _Linux Mint_ and _Arch Linux_, which does not imply affiliation with the Linux project itself. The prefix also makes it easy to start Julia in the terminal using `ju\Tab`, which I find convenient for listing alongside existing Julia installations.

---

<div class="post-metadata">

**Author:** ![affans](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/affans/32/11911_2.png) [@affans](https://discourse.julialang.org/u/affans)\
**Post date:** [November 15, 2025, 7:52pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/17 "2025-11-15T19:52:16Z")

</div>

If I understand correctly, if I install your distribution, it installs Julia 1.12 + roughly 700 pre-compiled packages in a global environment. What if one adds another package which then triggers pre-compilation across all those packages? Or are you saying this installs a system image of Julia 1.12 with those packages baked in (though I guess it becomes impossible to change/upgrade their versions then).

Also, I also find the name to be a bit uncomfortable to pronounce. I would also suggest renaming it.

---

<div class="post-metadata">

**Author:** ![Janis\_Erdmanis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/janis_erdmanis/32/10869_2.png) [@Janis\_Erdmanis](https://discourse.julialang.org/u/Janis_Erdmanis)\
**Post date:** [November 15, 2025, 9:44pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/18 "2025-11-15T21:44:10Z")

</div>

> [@affans](#):
>
> What if one adds another package which then triggers pre-compilation across all those packages?

Recompilation is avoided by resolving newly installed packages using the pre-installed dependencies, which are equivalent to standard libraries. From the user’s perspective, they behave similarly as part of the sysimage, except that one does not need to load them all at once, saving users’ memory.

However, this approach can make some packages with compatibility constraints uninstallable. To address this, users can submit simple PRs to update compatibility bounds for dependencies, which ultimately benefits the ecosystem.

---

<div class="post-metadata">

**Author:** ![greatpet](https://avatars.discourse-cdn.com/v4/letter/g/e495f1/32.png) [@greatpet](https://discourse.julialang.org/u/greatpet)\
**Post date:** [November 16, 2025, 12:39am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/19 "2025-11-16T00:39:36Z")

</div>

Updating packages with Pkg would trigger precompilatiom of a large number of updated packages, so users should instead wait for an update of the entire distribution released on your GitHub repo. Is that right?

---

<div class="post-metadata">

**Author:** ![Janis\_Erdmanis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/janis_erdmanis/32/10869_2.png) [@Janis\_Erdmanis](https://discourse.julialang.org/u/Janis_Erdmanis)\
**Post date:** [November 16, 2025, 2:18am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/20 "2025-11-16T02:18:24Z")

</div>

Updating packages that are bundled with the distribution is not possible, hence users indeed need to wait for the distribution update. There is also nothing wrong with users forking the repo and building the releases themselves, which is extremely easy to do.

[Next page](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856.md?page=2)
