JuliaCon 2023

Quickdraw: The simplest Julia package deployment system
07-26, 15:30–15:40 (US/Eastern), 32-141

The Julia ecosystem provides rich interoperability among Julia packages but it has been nontrivial to deploy functionality from a Julia package to non-technical users. Quickdraw is a simple combination of existing tools that installs a runnable app from any Julia package that defines a main function. All the end user needs to do is run a single command; all the developer needs to provide is that command.

This cross-platform deployment system already supports every public Julia package with a main function so development time of package authors is minimal. Following a similar deployment principle as Juliaup, and utilizing Juliaup to install Julia when it is not already installed, Quickdraw is tested against Mac and Linux systems with and without Julia pre-installed, and Windows systems that do already have Julia installed. Unfortunately, this deployment system does not solve the ecosystem wide time to first x issues.

This talk will discuss the usability and security implications of the installation system.

Live Example

To install a game of minesweeper on Linux or Mac, run the following command:

curl -fLsS https://lilithhafner.com/quickdraw | sh -s https://github.com/LilithHafner/Minesweeper.jl

To install this software on Windows, install Julia and then run the following command:

(echo julia -e "import Pkg; Pkg.activate(\"Minesweeper\", shared=true); try Pkg.add(url=\"https://github.com/LilithHafner/Minesweeper.jl\"); catch; println(\"Warning: update failed\") end; using Minesweeper: main; main()" %0 %* && echo pause) > Minesweeper.bat

In both cases, the command will create an executable called Minesweeper that can be double clicked to run.

I'm Lilith, a person, an artist, and a scientist.

This speaker also appears in: