# I find it hard to develop in Julia

**URL:** <https://discourse.julialang.org/t/i-find-it-hard-to-develop-in-julia/135497>\
**Category:** Internals & Design\
**Created:** [February 6, 2026, 11:25am UTC](https://discourse.julialang.org/t/i-find-it-hard-to-develop-in-julia/135497 "2026-02-06T11:25:19Z")\
**Posts on this page:** 1\
**Showing post:** 13

<div class="post-metadata">

**Author:** ![ForceBru](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/forcebru/32/21389_2.png) [@ForceBru](https://discourse.julialang.org/u/ForceBru)\
**Post date:** [February 6, 2026, 3:11pm UTC](https://discourse.julialang.org/t/i-find-it-hard-to-develop-in-julia/135497/13 "2026-02-06T15:11:53Z")

</div>

> [@sdanisch](#):
>
> The way Pluto creates a completely new way to do package management seems to be in a fight with the standard Pkg API almost by design.

In my humble opinion, Pluto doesn’t need a custom package manager. I’ve been actively avoiding that package manager because it just dumps literal hundreds of lines of package info (the contents of `Project.toml` and `Manifest.toml`) straight into the notebook file, thus making it absolutely massive. When I want to share Julia code online, I simply do this at the top of the code:

```julia
begin
 import Pkg; Pkg.activate(temp=true)
 Pkg.add([
   (; name="Distributions", version="0.25.123"),
   (; name="PyFormattedStrings", version="0.1.13"),
   # ...and so on...
 ])
 Pkg.status()
end

```

The `Pkg.add` call outputs tons of extremely verbose text, but I think there’s a way to redirect it to `/dev/null` or otherwise silence it. The `Pkg.status()` call is there to show what’s in `Project.toml`.

This just works for me: all package information is written out explicitly (package names, exact versions, etc), it uses the built-in Pkg.jl, it’s just regular Julia code. It works fine in Pluto.

Can’t Pluto create a new cell with this block of code automatically? I guess it’s not that simple because Pkg doesn’t support dry runs: [Dry run of adding a package](https://discourse.julialang.org/t/dry-run-of-adding-a-package/97783).

Just imagining some convenient API like `Pkg.try_add` that basically does everything `Pkg.add` does but does _not_ modify the existing environment and instead returns the would-be contents of `Project.toml` as a vector of `Pkg.PackageSpec`:

```julia
function on_new_input_using_statement(packages::AbstractVector{<:AbstractString})
  package_specs::Vector{Pkg.PackageSpec} = Pkg.try_add(packages)
  for spec in package_specs
    # add the package to the Pkg block in the notebook if it's not already there
  end
end

```

---

_[View the full topic](https://discourse.julialang.org/t/i-find-it-hard-to-develop-in-julia/135497)._
