LWN: Comments on "Digging into Julia's package system" https://lwn.net/Articles/871490/ This is a special feed containing comments posted to the individual LWN article titled "Digging into Julia's package system". en-us Sat, 08 Nov 2025 22:27:09 +0000 Sat, 08 Nov 2025 22:27:09 +0000 https://www.rssboard.org/rss-specification lwn@lwn.net Private repos https://lwn.net/Articles/876752/ https://lwn.net/Articles/876752/ Lawless-M <div class="FormattedComment"> One thing not mentioned is the ability to install via Private repos<br> <p> You can use any Git Clone method available to you, for instance I pull from my company&#x27;s privately hosted BitBucket repo. <br> <p> @v.16] add ssh://git@mirror.bitbucket.intranet:7999/~myname/code.git<br> <p> You can also use file paths - even windows ones!<br> <p> @v1.6] add \\windowsUNC\packages\code.jl<br> <p> With Distributed you can even install packages on remote machines<br> <p> julia&gt; @everywhere Pkg.add(&quot;ssh://git@mirror.bitbucket.intranet:7999/~myname/code.git&quot;)<br> <p> </div> Wed, 24 Nov 2021 08:15:35 +0000 Digging into Julia's package system https://lwn.net/Articles/874250/ https://lwn.net/Articles/874250/ StefanKarpinski <div class="FormattedComment"> The Julia client by default fetches all packages from a package server at <a rel="nofollow" href="https://pkg.juilalang.org">https://pkg.juilalang.org</a>, which implements a simple HTTP protocol for serving content-addressed immutable tarballs of package code. These source tarballs are stored persistently in S3 and replicated across a global network of servers that keep them forever. So even if GitHub were to disappear off the face of the earth, every registered package version would continue to be available to install via package servers. So no, Julia cannot get left-padded.<br> </div> Thu, 28 Oct 2021 19:31:51 +0000 Digging into Julia's package system https://lwn.net/Articles/873832/ https://lwn.net/Articles/873832/ garrison <div class="FormattedComment"> Sorry, my link to the &quot;motivation&quot; should have been to <a href="https://github.com/JuliaPackaging/BinaryBuilder.jl#philosophy">https://github.com/JuliaPackaging/BinaryBuilder.jl#philos...</a><br> </div> Sat, 23 Oct 2021 22:18:14 +0000 Digging into Julia's package system https://lwn.net/Articles/873830/ https://lwn.net/Articles/873830/ garrison <p>One thing that might interest LWN readers is the great effort the Julia community has put into making packages that Just Work, even if they depend on code built in another language. Long ago, when a user would install a package, Julia would detect which Linux distribution it is running on, then run the suitable <tt>sudo apt-get install</tt> command (or equivalent) so that its dependencies would be available. This turned out to be brittle -- too much subtle breakage here and there, not to mention the requirement of root access.</p> <p>Because of these issues, Julia 1.3 <a href="https://julialang.org/blog/2019/11/artifacts/">introduced</a> an artifacts system that allows <a href="https://binarybuilder.org/">binary dependencies</a> to be cross-compiled and distributed. The <a href="https://github.com/JuliaPackaging/Yggdrasil">Yggdrasil</a> repository contains recipes for cross compiling these binary dependencies -- the procedure is much like packaging a library for any other Linux distribution. While I was somewhat skeptical when this approach was introduced (their <a href="https://github.com/JuliaPackaging/Yggdrasil">motivation</a> sounds like a classic case of NIH to me), I must admit that it works remarkably well in practice. Years later, I rely on this system daily and it works flawlessly. </p> Sat, 23 Oct 2021 22:12:17 +0000 Digging into Julia's package system https://lwn.net/Articles/873134/ https://lwn.net/Articles/873134/ roc <div class="FormattedComment"> crates.io packages are stored in S3 and cached locally. S3 isn&#x27;t really going to go down for technical reasons. Hopefully someone has a copy of the archive in case those S3 resources get deleted.<br> </div> Sun, 17 Oct 2021 07:26:02 +0000 Digging into Julia's package system https://lwn.net/Articles/873003/ https://lwn.net/Articles/873003/ droundy <div class="FormattedComment"> I wish these Julia articles would give more comparison to other languages. Rather than trying to describe in detail how things are done in Julia, it would be much easier to read if it explained how it was similar and different from other languages. Python and Rust come to mind as systems with packaging systems that would provide productive comparisons.<br> </div> Fri, 15 Oct 2021 02:04:51 +0000 Digging into Julia's package system https://lwn.net/Articles/872924/ https://lwn.net/Articles/872924/ leephillips <div class="FormattedComment"> I’m afraid I don’t understand your comment. I didn’t say “switch to a new version” anywhere.<br> </div> Thu, 14 Oct 2021 12:56:16 +0000 Digging into Julia's package system https://lwn.net/Articles/872920/ https://lwn.net/Articles/872920/ Wol <div class="FormattedComment"> <font class="QuotedText">&gt; I&#x27;m surprised Julia didn&#x27;t do what Rust did -- there packages in the &quot;package repository&quot; are stored centrally, and unless there is a very serious issue released packages can never be removed.</font><br> <p> What do you mean by &quot;centrally&quot;. If you mean &quot;on the net somewhere&quot;, what happens if that (for various meanings of &quot;that&quot;) go down?<br> <p> Or is that repository mirrored (should you so choose) on your machine, so you can ALWAYS re-install that package if you need? iiuc gentoo downloads everything, and while I&#x27;ve deliberately configured my system to forget it, I think it&#x27;s easy enough to change that so it keeps it ...<br> <p> Cheers,<br> Wol<br> </div> Thu, 14 Oct 2021 12:32:59 +0000 Digging into Julia's package system https://lwn.net/Articles/872918/ https://lwn.net/Articles/872918/ azumanga <div class="FormattedComment"> To be honest, that sounds as bad as javascript!<br> <p> Saying every package which has some dependency could &quot;switch to a new version&quot; doesn&#x27;t feel helpful, you could do that in npm too if you like. I&#x27;m not really clear why it would be easier for Julia than it would be for Javascript.<br> <p> I&#x27;m surprised Julia didn&#x27;t do what Rust did -- there packages in the &quot;package repository&quot; are stored centrally, and unless there is a very serious issue released packages can never be removed. You can disable versions (by &#x27;yanking&#x27; them), but users can still get those versions by specifying exact version number.<br> </div> Thu, 14 Oct 2021 11:14:30 +0000 Digging into Julia's package system https://lwn.net/Articles/872874/ https://lwn.net/Articles/872874/ leephillips <div class="FormattedComment"> After reading Nathan Willis’ article about this incident at <a href="https://lwn.net/Articles/681410/">https://lwn.net/Articles/681410/</a>, I have a few more observations.<br> <p> Although Julia package development happens almost entirely on GitHub, the process is more decentralized than with npm, as contributors maintain their own forks as part of the GitHub pull request workflow. So one executive of a company deciding to pull down a package would not be so simple.<br> <p> Every version of every package is identified by a unique UUID within the Manifest and Project files (an implementation detail I did not go into in the article). So switching a dependency on a particular version of a package means changing this identifier in the Manifests of the affected packages. It seems this part of the problem is much more tractable than the situation on npm.<br> <p> Finally, it’s far less likely that a Julia programmer would create a dependency on a package that does what you can do in one line in Julia. I haven’t come across any public packages that are as trivial as leftpad.<br> </div> Wed, 13 Oct 2021 17:14:48 +0000 Digging into Julia's package system https://lwn.net/Articles/872872/ https://lwn.net/Articles/872872/ leephillips <div class="FormattedComment"> The incident involves the sole maintainer of a package removing it from a repository. In that case Julia will continue to use the version stored on your machine, and when it checks for updates it won’t find anything. Someone in possession of the source, which would be anyone who had `dev`ed it, could recreate the GitHub repository, if the license allowed it. If it were a package with other contributors, there would be other forks of the project on GitHub, and the registry could be changed to point to one of these, I suppose.<br> </div> Wed, 13 Oct 2021 16:47:41 +0000 Digging into Julia's package system https://lwn.net/Articles/872871/ https://lwn.net/Articles/872871/ willy <div class="FormattedComment"> Could you touch on how Julia&#x27;s packaging system and/or development community prevents an incident like leftpad?<br> </div> Wed, 13 Oct 2021 16:35:22 +0000