What steps should the Julia community take to bring Julia to the next level of popularity?

I think there should be some “default” enforcing workflows for newbies, because there are a lot of possible obstacles and “fragilities” that requires additional knowledge and tuning:

  1. Code updates: there are many different code styles with different redefinition behavior.
    • Write code in files and just include them into Main module => redefinition problem.
    • Wrap files into a module => module reloading works fine, but only if names for redefined structures and methods are not exported into Main.
    • Add Revise into startup file and write code in a package => need to generate a package with PkgTemplates, then code reloading works automatically… but no structure redefinition once again.
  1. TTFX: package precompilation conflicts with package updates, so despite the presence of precompilation, the user still encounters slow startup speeds if working with several environments for a long time. Seems like every add command can potentially break precompilation for all environments. There is --preserve flag preventing updates to registry, but it’s hard to write it out every time. So when user opens some old environment once again, he can never say if it will load fast or slow.

  2. Stacked global environment - user should be aware of stacked environments and add some utilities into a main env, like LocalRegistries, Plots, etc. If he doesn’t know about that, he will add those packages in every environment or package he creates.

  3. Package vs project (libraries vs scripts) - if working with package, user should be aware of stacked environments too, and use separate environment for scrips, just like separate test environment.

After user overcomes all these problems, and if they don’t discourage him from using Julia, he comes to some customized fragile workflow for himself with a bunch of potentially suboptimal fixes.

9 Likes