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.
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!
There’s no question about notebook-style approaches (eg jupyter/literate), but looks good!
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.
On the literate programming question: I use org-mode notebooks.
Another literate programming suggestion is Quarto, especially for those who have a background in R and knitr.
And here are the results:
Almost all respondents (consciously) use
Revise, with the next most common being
JuliaFormatter, and then very surprisingly
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.
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.
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.
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?
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?
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.
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.
Do you have an example of this one can look at in a public repo? Thanks.
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).
It’d be great to have this documented (maybe in 7. Registries · Pkg.jl ?).
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!