# \[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:** 18\
**Page:** 4

<div class="post-metadata">

**Author:** ![Datseris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/datseris/32/13406_2.png) [@Datseris](https://discourse.julialang.org/u/Datseris)\
**Post date:** [April 14, 2026, 11:39am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/61 "2026-04-14T11:39:06Z")

</div>

Thanks Janis! In the readme I couldn’t find any info about this, but what is the process for deciding which packages go into the published Jumbo releases?

* * *

Over the summer I’ll make a fork of Jumbo focused on JuliaDynamics packages so that I can use this in my lectures and alleviate the difficulties of Julia installation. I’ll post here how it goes!

---

<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:** [April 14, 2026, 1:57pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/62 "2026-04-14T13:57:39Z")

</div>

Thanks! Making it easy for people to create their own forks for teaching needs is really the ultimate goal, so I’m glad to hear you’re planning one for JuliaDynamics.

The package selection is admittedly somewhat arbitrary. The core consists of developer-experience tools I use extensively myself (like Revise and Infiltrator — I may add more of these in the future), plus a mix of packages I relied on during my PhD and ones that impressed me at JuliaCon talks. It’s hard to draw a clean line, but the general heuristics I apply when considering a new inclusion are:

- it takes a long time to precompile (so bundling it provides real value),
- adding it doesn’t downgrade existing dependencies via compat bounds, and
- there’s a reasonably sized user base who would want to try it out.

Anyone is welcome to open an issue proposing a new package, and I’ll evaluate it against those criteria. Looking forward to hearing how the JuliaDynamics fork goes!

---

<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:** [April 14, 2026, 4:34pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/63 "2026-04-14T16:34:05Z")

</div>

Is there any chance of getting Jumbo integrated with `juliaup`?  
Like:

```bash
juliaup add jumbo
juliaup default jumbo

```

?  
That would make it easier for people to try out Jumbo.

---

<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:** [April 14, 2026, 4:52pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/64 "2026-04-14T16:52:44Z")

</div>

This isn’t something I’m planning to work on myself, but if someone wants to take it on, I’d be happy to assist. There may also be an opportunity to distribute Julia distributions as Pkg apps by creating a special main function. Efforts could then be directed toward distributing the compilation cache of Pkg.apps, which would make the existing distribution method redundant.

---

<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:** [April 15, 2026, 2:08pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/65 "2026-04-15T14:08:22Z")

</div>

I installed Jumbo on Ubuntu 24.04. I can launch it from the GUI. But how can I launch it from the command line? And where does it actually get installed?

---

<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:** [April 15, 2026, 5:22pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/66 "2026-04-15T17:22:27Z")

</div>

On Linux, you can usually launch Jumbo from the command line simply by typing `jumbo` as the Snap binary directory is in your PATH, similar to how you would run `jumbo.exe` on Windows. When installed via Snap on Ubuntu 24.04, the executable is typically located under `/snap/jumbo/current/`, which is symlinked into your system path, so you don’t need to reference the full install location directly. If you want to confirm where it’s coming from, you can check `Sys.BINDIR` and also `Base.DEPOT_PATH`.

---

<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:** [April 15, 2026, 6:16pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/67 "2026-04-15T18:16:15Z")

</div>

I have checked out our package VortexStepMethod.jl. It is the current directory.

```julia-auto
git clone https://github.com/OpenSourceAWE/VortexStepMethod.jl.git
cd VortexStepMethod.jl

```

If I do:

```julia-auto
jumbo --project

```

and then

```julia-auto
using VortexStepMethod

```

I get an error message.  
If I do:

```julia-auto
julia --project

```

and then

```julia-auto
using VortexStepMethod

```

it works.

What could be the reason?

In other words, can I use Jumbo together with only locally available Packages?

---

<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:** [April 15, 2026, 6:48pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/68 "2026-04-15T18:48:18Z")

</div>

Thanks for pointing this out! This is a significant oversight — when setting `Base.ACTIVE_PROJECT[]` to the user data directory (see [startup.jl#L19](https://github.com/JanisErdmanis/Jumbo/blob/476515fa71e972d8c1ba5fbab94d8964f98060ea/meta/startup.jl#L19)), it overrides the `--project`. I’ll address this in the next release. For now you can do `activate VortexStepMethod` after oppening `jumbo`.

Try the patched version which is currently being built - [Build Release Assets · JanisErdmanis/Jumbo@34c6b5e · GitHub](https://github.com/JanisErdmanis/Jumbo/actions/runs/24472490440)

---

<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:** [April 16, 2026, 3:23am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/69 "2026-04-16T03:23:19Z")

</div>

I forked your repo and tried to run

```julia-auto
julia --project=meta meta/build.jl --build-dir=build

```

locally as explained in the README.md file. But the file `meta/build.jl` does not exist. What could be the reason?

---

<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:** [April 16, 2026, 9:46am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/70 "2026-04-16T09:46:54Z")

</div>

Thanks for catching that — I’ve now updated the README. You can build the distribution locally with:

```julia-auto
appbundler build . --build-dir=build --selfsign

```

---

<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:** [April 16, 2026, 10:02am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/71 "2026-04-16T10:02:04Z")

</div>

I am getting an error:

```julia-auto
ufechner@framework:~/repos/Jumbo$ time julia --project=meta -m AppBundler build . --build-dir=build --selfsign
[ Info: Initializing Snap staging layout...
[ Info: Installing app into staging area...
Fetching sources for julia-1.12.6-Pkg.BinaryPlatforms.Linux(Platform("x86_64", "linux"; libc = "glibc"))
ERROR: RequestError: Operation too slow. Less than 1 bytes/sec transferred the last 20 seconds while requesting https://julialang-s3.julialang.org/bin/linux/x64/1.12/julia-1.12.6-linux-x86_64.tar.gz
Stacktrace:
  [1] (::Downloads.var"#26#27"{IOStream, Base.DevNull, Nothing, Vector{Pair{String, String}}, Float64, Nothing, Bool, Nothing, Bool, Nothing, String, Bool, Bool})(easy::Downloads.Curl.Easy)
    @ Downloads ~/.julia/juliaup/julia-1.12.6+0.x64.linux.gnu/share/julia/stdlib/v1.12/Downloads/src/Downloads.jl:479
  [2] with_handle(f::Downloads.var"#26#27"{IOStream, Base.DevNull, Nothing, Vector{Pair{String, String}}, Float64, Nothing, Bool, Nothing, Bool, Nothing, String, Bool, Bool}, handle::Downloads.Curl.Easy)
    @ Downloads.Curl ~/.julia/juliaup/julia-1.12.6+0.x64.linux.gnu/share/julia/stdlib/v1.12/Downloads/src/Curl/Curl.jl:105
  [3] #24
    @ ~/.julia/juliaup/julia-1.12.6+0.x64.linux.gnu/share/julia/stdlib/v1.12/Downloads/src/Downloads.jl:390 [inlined]
  [4] arg_write(f::Downloads.var"#24#25"{Base.DevNull, Nothing, Vector{Pair{String, String}}, Float64, Nothing, Bool, Nothing, Bool, Nothing, String, Bool, Bool}, arg::IOStream)
    @ ArgTools ~/.julia/juliaup/julia-1.12.6+0.x64.linux.gnu/share/julia/stdlib/v1.12/ArgTools/src/ArgTools.jl:134
  [5] #22
    @ ~/.julia/juliaup/julia-1.12.6+0.x64.linux.gnu/share/julia/stdlib/v1.12/Downloads/src/Downloads.jl:389 [inlined]
  [6] arg_read
    @ ~/.julia/juliaup/julia-1.12.6+0.x64.linux.gnu/share/julia/stdlib/v1.12/ArgTools/src/ArgTools.jl:76 [inlined]
  [7] request(url::String; input::Nothing, output::IOStream, method::Nothing, headers::Vector{Pair{String, String}}, timeout::Float64, progress::Nothing, verbose::Bool, debug::Nothing, throw::Bool, downloader::Nothing, interrupt::Nothing)
    @ Downloads ~/.julia/juliaup/julia-1.12.6+0.x64.linux.gnu/share/julia/stdlib/v1.12/Downloads/src/Downloads.jl:388
  [8] request
    @ ~/.julia/juliaup/julia-1.12.6+0.x64.linux.gnu/share/julia/stdlib/v1.12/Downloads/src/Downloads.jl:355 [inlined]
  [9] (::Downloads.var"#7#8"{Nothing, Vector{Pair{String, String}}, Float64, Nothing, Bool, Nothing, Nothing, String})(output::IOStream)
    @ Downloads ~/.julia/juliaup/julia-1.12.6+0.x64.linux.gnu/share/julia/stdlib/v1.12/Downloads/src/Downloads.jl:273
 [10] open(f::Downloads.var"#7#8"{Nothing, Vector{Pair{String, String}}, Float64, Nothing, Bool, Nothing, Nothing, String}, args::String; kwargs::@Kwargs{write::Bool, lock::Bool})
    @ Base ./io.jl:412
 [11] open_nolock
    @ ~/.julia/juliaup/julia-1.12.6+0.x64.linux.gnu/share/julia/stdlib/v1.12/ArgTools/src/ArgTools.jl:35 [inlined]
 [12] arg_write(f::Function, arg::String)
    @ ArgTools ~/.julia/juliaup/julia-1.12.6+0.x64.linux.gnu/share/julia/stdlib/v1.12/ArgTools/src/ArgTools.jl:103
 [13] #download#5
    @ ~/.julia/juliaup/julia-1.12.6+0.x64.linux.gnu/share/julia/stdlib/v1.12/Downloads/src/Downloads.jl:272 [inlined]
 [14] download
    @ ~/.julia/juliaup/julia-1.12.6+0.x64.linux.gnu/share/julia/stdlib/v1.12/Downloads/src/Downloads.jl:252 [inlined]
 [15] install_julia(platform::Pkg.BinaryPlatforms.Linux, julia_dir::String; version::VersionNumber)
    @ AppBundler.Resources ~/.julia/packages/AppBundler/CNmKH/src/bundlers/Resources.jl:522
 [16] fetch(project::String, destination::String; platform::Pkg.BinaryPlatforms.Linux, include_lazy_artifacts::Bool, stdlib_dir::String)
    @ AppBundler.Resources ~/.julia/packages/AppBundler/CNmKH/src/bundlers/Resources.jl:665
 [17] stage(product::AppBundler.JuliaImg.JuliaImgBundle, destination::String; platform::Pkg.BinaryPlatforms.Linux, cpu_target::String, runtime_mode::String, app_name::String, bundle_identifier::String)
    @ AppBundler.JuliaImg ~/.julia/packages/AppBundler/CNmKH/src/bundlers/JuliaImg/JuliaImg.jl:469
 [18] (::AppBundler.var"#37#38"{AppBundler.JuliaImg.JuliaImgBundle, AppBundler.Snap})(app_stage::String)
    @ AppBundler ~/.julia/packages/AppBundler/CNmKH/src/recipes.jl:59
 [19] bundle(setup::AppBundler.var"#37#38"{AppBundler.JuliaImg.JuliaImgBundle, AppBundler.Snap}, snap::AppBundler.Snap, destination::String; force::Bool)
    @ AppBundler ~/.julia/packages/AppBundler/CNmKH/src/bundle.jl:600
 [20] bundle
    @ ~/.julia/packages/AppBundler/CNmKH/src/bundle.jl:585 [inlined]
 [21] bundle(product::AppBundler.JuliaImg.JuliaImgBundle, snap::AppBundler.Snap, destination::String; force::Bool)
    @ AppBundler ~/.julia/packages/AppBundler/CNmKH/src/recipes.jl:54
 [22] main_build(ARGS::Vector{String}; sources_dir::String)
    @ AppBundler ~/.julia/packages/AppBundler/CNmKH/src/main.jl:132
 [23] main_build
    @ ~/.julia/packages/AppBundler/CNmKH/src/main.jl:44 [inlined]
 [24] main(ARGS::Vector{String})
    @ AppBundler ~/.julia/packages/AppBundler/CNmKH/src/main.jl:22
 [25] _start()
    @ Base ./client.jl:556

real	0m33,964s
user	0m13,618s
sys	0m0,837s

```

Any idea?

---

<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:** [April 16, 2026, 10:03am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/72 "2026-04-16T10:03:43Z")

</div>

Looks like a network issue. Try again later. Check [https://julialang-s3.julialang.org/bin/linux/x64/1.12/julia-1.12.6-linux-x86\_64.tar.gz](https://julialang-s3.julialang.org/bin/linux/x64/1.12/julia-1.12.6-linux-x86_64.tar.gz)

---

<div class="post-metadata">

**Author:** ![RomeoV](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/romeov/32/37687_2.png) [@RomeoV](https://discourse.julialang.org/u/RomeoV)\
**Post date:** [May 7, 2026, 11:25pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/73 "2026-05-07T23:25:38Z")

</div>

The artifacts of this build are expired by now. Did they fix the `--project` issue?

---

<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:** [May 8, 2026, 7:37am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/74 "2026-05-08T07:37:03Z")

</div>

> [@\[ANN\] Jumbo - a scientific Julia distribution](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/6):
>
> 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:** [May 8, 2026, 8:27am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/75 "2026-05-08T08:27:25Z")

</div>

In my testing after the fix, `--project` now works, but the workflow still needs testing. I’ve retriggered the GitHub Actions build, and once it finishes, it should also upload the assets to the v26.04.12 release.

---

<div class="post-metadata">

**Author:** ![RomeoV](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/romeov/32/37687_2.png) [@RomeoV](https://discourse.julialang.org/u/RomeoV)\
**Post date:** [May 8, 2026, 9:14am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/76 "2026-05-08T09:14:22Z")

</div>

Perhaps @davidanthoff can be summoned to comment on this? Having `juliaup add jumbo-v1.0` could be a huge boon to student adoption.

---

<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:** [May 8, 2026, 12:05pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/77 "2026-05-08T12:05:41Z")

</div>

The current form of distribution does not seem particularly well-suited for inclusion in juliaup without introducing a maintenance burden on their side. A better approach would be to package Jumbo Julia as a Pkg app, which involves some trickery in `@main` to set up `Base.DEPOT_PATH`, `Base.LOAD_PATH`, and `Base.STDLIB`, then revert to the REPL once that’s done. From there, the problem could be approached in the broader sense of how to distribute Pkg app caches in general, while juliaup could add support for installing Pkg apps via something like `juliaup app add jumbo`.

---

<div class="post-metadata">

**Author:** ![ParadaCarleton](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/paradacarleton/32/20005_2.png) [@ParadaCarleton](https://discourse.julialang.org/u/ParadaCarleton)\
**Post date:** [July 20, 2026, 4:00pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/78 "2026-07-20T16:00:23Z")

</div>

My suggestion would be to use [mise](https://github.com/jdx/mise), which is how I manage runtimes (across languages) nowadays.

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