# Survey on how you use Julia

**URL:** https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807
**Category:** General Usage
**Created:** [June 3, 2023, 10:48am UTC](https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807 "2023-06-03T10:48:20Z")
**Posts on this page:** 16
**Page:** 1

<div class="post-metadata">

### Author: ![jacobusmmsmit](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jacobusmmsmit/32/217669_2.png) [@jacobusmmsmit](https://discourse.julialang.org/u/jacobusmmsmit)
#### Post date: [June 3, 2023, 10:48am UTC](https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807/1 "2023-06-03T10:48:20Z")

</div>

Hi all,

I’m making a video on how to make Julia feel nice to use, and I make a few claims about what is and isn’t “standard”. I’m curious to see how other people use Julia to get some statistics on what the community views as normal and what is more advanced or niche.

> **[Julia Workflow Survey](https://forms.gle/Jtgma4BqUaz9gpAh6)**
>
> I'm making a video on the most commonly used tools people use as part of their their Julia workflow. This survey is my attempt to provide some justification to my claims about which tools form part of the "standard Julia workflow" and to understand...

The survey is super short (only 1 compulsory section) and is anonymous and doesn’t collect identifiable data.

Thanks to all who fill it out!

---

<div class="post-metadata">

### Author: ![kevbonham](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kevbonham/32/216165_2.png) [@kevbonham](https://discourse.julialang.org/u/kevbonham)
#### Post date: [June 3, 2023, 11:01am UTC](https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807/2 "2023-06-03T11:01:23Z")

</div>

There’s no question about notebook-style approaches (eg jupyter/literate), but looks good!

---

<div class="post-metadata">

### Author: ![jacobusmmsmit](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jacobusmmsmit/32/217669_2.png) [@jacobusmmsmit](https://discourse.julialang.org/u/jacobusmmsmit)
#### Post date: [June 3, 2023, 11:03am UTC](https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807/3 "2023-06-03T11:03:09Z")

</div>

That’s a good point. I’m so used to the script + REPL experience that I forgot about notebooks!

Edit: Added a question on literate programming.

---

<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: [June 3, 2023, 2:10pm UTC](https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807/4 "2023-06-03T14:10:50Z")

</div>

On the literate programming question: I use org-mode notebooks.

---

<div class="post-metadata">

### Author: ![dmbates](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dmbates/32/44_2.png) [@dmbates](https://discourse.julialang.org/u/dmbates)
#### Post date: [June 3, 2023, 3:39pm UTC](https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807/5 "2023-06-03T15:39:11Z")

</div>

Another literate programming suggestion is [Quarto](https://quarto.org), especially for those who have a background in R and knitr.

---

<div class="post-metadata">

### Author: ![jacobusmmsmit](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jacobusmmsmit/32/217669_2.png) [@jacobusmmsmit](https://discourse.julialang.org/u/jacobusmmsmit)
#### Post date: [June 14, 2023, 10:47am UTC](https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807/6 "2023-06-14T10:47:11Z")

</div>

And here are the results:

 ![image](https://global.discourse-cdn.com/julialang/original/3X/1/2/12ae28d14d02f10d550f5d5bac05d3377557eedb.png)

Almost all respondents (consciously) use `Revise`, with the next most common being `JuliaFormatter`, and then very surprisingly `LocalRegistry`!

 ![image](https://global.discourse-cdn.com/julialang/original/3X/1/d/1d95095def647b2b7e93cc660b334bfa5961729b.png)  
By far the most common way to use Julia is from inside an editor/IDE using local packages. Scripting is fairly common, and (in the discourse userbase, see below for demographics) literate programming is not so common.

![image](https://global.discourse-cdn.com/julialang/original/3X/e/e/ee96b84d16db400b39a394e996ccbd8e73b3456b.png)

In the “describe your workflow in more detail” part, quite a few people mentioned Vim, Emacs, or Sublime with a code runner that sends lines to an external REPL/terminal window, usually with a splitscreen tmux setup.

 ![image](https://global.discourse-cdn.com/julialang/original/3X/c/1/c1860a15bf1815ff2d4c382bb1a4d14c16b3d5a5.png)

Finally, hot damn y’all are Julia addicts. Luckily, this survey is not supposed to be a representative sample of how Julia is used, only of how more experienced, package developer-leaning members use Julia, which is how I view Discourse and Slack.

---

<div class="post-metadata">

### Author: ![magister-ludi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/magister-ludi/32/4003_2.png) [@magister-ludi](https://discourse.julialang.org/u/magister-ludi)
#### Post date: [June 14, 2023, 12:28pm UTC](https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807/7 "2023-06-14T12:28:43Z")

</div>

> [@jacobusmmsmit](#):
>
> Scripting is fairly common

I’m sorry I didn’t respond to the survey, life just gets in the way sometimes ☹ Self-reference is not normally suitable, but I did recently mention the topic:  
[Did Modular just reinvent Julia?](https://discourse.julialang.org/t/did-modular-just-reinvent-julia/98214/182)

---

<div class="post-metadata">

### Author: ![e3c6](https://avatars.discourse-cdn.com/v4/letter/e/e79b87/32.png) [@e3c6](https://discourse.julialang.org/u/e3c6)
#### Post date: [August 1, 2023, 7:11pm UTC](https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807/9 "2023-08-01T19:11:47Z")

</div>

I’d be curious to know how exactly people are using LocalRegistry in their workflow. Is it only for teams or also single developers find it useful?

---

<div class="post-metadata">

### Author: ![chris-b1](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chris-b1/32/14165_2.png) [@chris-b1](https://discourse.julialang.org/u/chris-b1)
#### Post date: [August 1, 2023, 8:01pm UTC](https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807/10 "2023-08-01T20:01:58Z")

</div>

I use `LocalRegistry` primarily as a solo developer and find it very useful. The main use-case is so private package A can depend on private package B.

The killer feature, vs just doing `dev /path/to/PackageB` is the support for versioning. Rather than depending on a specific state of the files on my filesystem for Package B, `LocalRegistry` creates a versioned snapshot so that Package A can work in a fully reproducible way, regardless of what changes with package B.

---

<div class="post-metadata">

### Author: ![jlapeyre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jlapeyre/32/4514_2.png) [@jlapeyre](https://discourse.julialang.org/u/jlapeyre)
#### Post date: [August 1, 2023, 8:13pm UTC](https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807/11 "2023-08-01T20:13:02Z")

</div>

It allows me to use packages in GH CI when they are not in the general registry. For example: I have package A depending on package B and neither is in the general registry. I want to run CI on A. I use LocalRegistry to manage a registry, also available as a GH repo and package B is registered there.

There may be another way to do it. But this works for me. (I had to search pretty hard for the magic incantation in the CI script that uses the “local” registry.

---

<div class="post-metadata">

### Author: ![e3c6](https://avatars.discourse-cdn.com/v4/letter/e/e79b87/32.png) [@e3c6](https://discourse.julialang.org/u/e3c6)
#### Post date: [August 1, 2023, 8:33pm UTC](https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807/12 "2023-08-01T20:33:43Z")

</div>

> [@jlapeyre](#):
>
> I had to search pretty hard for the magic incantation in the CI script that uses the “local” registry

Do you have an example of this one can look at in a public repo? Thanks.

---

<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: [August 1, 2023, 8:35pm UTC](https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807/13 "2023-08-01T20:35:16Z")

</div>

Having a personal registry gives nice advantages whenever you have at least a few packages you own and develop. Compared to General, advantages include convenience in registration (just from your Julia REPL!), and immediate registration of both new packages and versions (no delay, call `register()` and it’s already there).

---

<div class="post-metadata">

### Author: ![jlapeyre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jlapeyre/32/4514_2.png) [@jlapeyre](https://discourse.julialang.org/u/jlapeyre)
#### Post date: [August 1, 2023, 10:24pm UTC](https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807/14 "2023-08-01T22:24:11Z")

</div>

> [@e3c6](#):
>
> Do you have an example of this one can look at in a public repo? Thanks

> <https://github.com/jlapeyre/Qurt.jl/blob/4854d2b4bd48d22230ba005765a47b0bfb90e72f/.github/workflows/CI.yml#L40>

---

<div class="post-metadata">

### Author: ![stillyslalom](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stillyslalom/32/45687_2.png) [@stillyslalom](https://discourse.julialang.org/u/stillyslalom)
#### Post date: [August 1, 2023, 10:51pm UTC](https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807/15 "2023-08-01T22:51:39Z")

</div>

It’d be great to have this documented (maybe in [7. Registries · Pkg.jl](https://pkgdocs.julialang.org/dev/registries/#Creating-and-maintaining-registries) ?).

---

<div class="post-metadata">

### Author: ![liuyxpp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/liuyxpp/32/9870_2.png) [@liuyxpp](https://discourse.julialang.org/u/liuyxpp)
#### Post date: [August 2, 2023, 1:31am UTC](https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807/16 "2023-08-02T01:31:57Z")

</div>

For single developers, like me, it also quite useful. I have many private repos which have complicated dependency relations. To install them properly and smoothly, I found `LocalRegistry.jl` is a must-have tool!

---

<div class="post-metadata">

### Author: ![e3c6](https://avatars.discourse-cdn.com/v4/letter/e/e79b87/32.png) [@e3c6](https://discourse.julialang.org/u/e3c6)
#### Post date: [August 2, 2023, 9:11am UTC](https://discourse.julialang.org/t/survey-on-how-you-use-julia/99807/17 "2023-08-02T09:11:40Z")

</div>

Something similar is mentioned here: [https://github.com/GunnarFarneback/LocalRegistry.jl/blob/master/docs/troubleshooting\_general.md#solution](https://github.com/GunnarFarneback/LocalRegistry.jl/blob/master/docs/troubleshooting_general.md#solution)
