# We as a community should be more understanding of Julia's flaws

**URL:** <https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030>\
**Category:** Community\
**Created:** [August 19, 2022, 5:42pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030 "2022-08-19T17:42:29Z")\
**Posts on this page:** 20\
**Page:** 3

<div class="post-metadata">

**Author:** ![ronubi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronubi/32/4085_2.png) [@ronubi](https://discourse.julialang.org/u/ronubi)\
**Post date:** [August 24, 2022, 4:27pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/41 "2022-08-24T16:27:22Z")

</div>

Thanks for the updated info. My _status quo_ comment wasn’t meant to offend. I did build a **HelloWorld** type of standalone binary a few years ago using `PackageCompiler`, and it ran fine as I recall, but required a somewhat-large library (DLL or .so) file in addition to the binary executable. I’ll check out the latest version of this package to see how much smoother things are now . . .

---

<div class="post-metadata">

**Author:** ![lmiq](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lmiq/32/18314_2.png) [@lmiq](https://discourse.julialang.org/u/lmiq)\
**Post date:** [August 24, 2022, 4:35pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/42 "2022-08-24T16:35:39Z")

</div>

> [@lobingera](#):
>
> for k = 1:1e6  
> value = function(constant parameters, k, some data)  
> % do something else  
> % do something else  
> result\_array[k] = value  
> end

> [@lobingera](#):
>
> isn’t this allocating a bunch of values?

No, it isn’t:

```julia
julia> function f!(result_array)
           for k in eachindex(result_array)
               value = sin(k)
               result_array[k] = value
           end
       end

f! (generic function with 1 method)

julia> result_array = zeros(10^6);

julia> @btime f!($result_array);
  11.649 ms (0 allocations: 0 bytes)

```

The situations in which “it should do something” but it is not doing it are, for instance, like this:

```julia
julia> function f!(result_array)
           for k in eachindex(result_array)
               value = [sin(k), cos(k)]
               result_array[k] .= value
           end
       end
f! (generic function with 1 method)

julia> result_array = [zeros(2) for _ in 1:10^6];

julia> @btime f!($result_array);
  41.204 ms (1000000 allocations: 76.29 MiB)

```

The compiler should (and it will soon 🤞) recognize that the intermediate vector `[sin(k), cos(k)]` does not escape the scope of the (iteration of) the loop, and thus should be stack allocated, or completely eliminated ( to read here `result_array[k] .= (sin(k), cos(k))`, which is non-allocating then).

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [August 24, 2022, 4:36pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/43 "2022-08-24T16:36:48Z")

</div>

No offense taken. I am just here to give the clear facts and guide the discussion. I think that’s one of the big issues in these kinds of discussions. A lot of the time the “facts” are just plain old. Not necessarily incorrect back in 2016, but things change. Usually correcting someone throws someone into a “defensive stance” and then you see people on Hacker News who suddenly fall down a weird rabbit hole of absurdity 🤷 . It’s really not worth anyone’s time. Sharing information will always help in the long run though, so we need to just keep sharing the updates.

I think the answer is, cite your sources, share links, and write more blog posts showing how things are improving. Just keep sharing all of the good that’s coming out. Some people will say that’s not acknowledging the flaws, but whatever that’s a silly stance: how can you be writing about flaws you fixed if you didn’t acknowledge there was a flaw to begin with? 😂 Just keep swimming.

---

<div class="post-metadata">

**Author:** ![Benny](https://avatars.discourse-cdn.com/v4/letter/b/49beb7/32.png) [@Benny](https://discourse.julialang.org/u/Benny)\
**Post date:** [August 24, 2022, 6:21pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/44 "2022-08-24T18:21:10Z")

</div>

Every minor version release’s “Highlights” on the Julia blog is actually a list of “here’s something many users griped for years and we did something about it” and discourse is at least 70% a complaint forum.

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [August 24, 2022, 10:08pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/45 "2022-08-24T22:08:16Z")

</div>

Github issues are the list of flaws. They just don’t get trending on Hacker News.

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [August 24, 2022, 10:39pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/46 "2022-08-24T22:39:04Z")

</div>

> [@ronubi](#):
>
> I can’t easily give someone a Julia program to run, and it’s not trivial to get a working environment set up.

I don’t see how this could be a big problem. It is trivial to give someone a package to execute whatever program they desire, and the package manager makes it a breeze to set up the appropriate environment.

---

<div class="post-metadata">

**Author:** ![uje](https://avatars.discourse-cdn.com/v4/letter/u/5f9b8f/32.png) [@uje](https://discourse.julialang.org/u/uje)\
**Post date:** [August 24, 2022, 11:16pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/47 "2022-08-24T23:16:48Z")

</div>

Let me give some of the major reasons people complain about Julia and possible ways to solve them.

- **Perceived Problem 1** : There are little to no questions on Julia’ s stackoverflow tag, so if you have an issue, you’ll have a hard time to solve it.

- **Perceived Problem 2** : Python has more libraries than Julia. In Julia, there are little libraries in the ecosystem, and they’re not actively managed.

- **Perceived Problem 3** : There are a lot of tutorials out there to learn other languages, Julia’s tutorials on the internet is very small.

- **Perceived Problem 4** : Julia is 1-based indexing and the other languages are all 0-based indexing, so its hard to get used to this new behaviour and it will slows my productivity.

- **Perceived Problem 5** : In other langauges I can quickly build standalone binaries, this is hard or not even possible in Julia.

- **Perceived Problem 6** : In python for example I can easily call C and C++ libraries, this is hard or not even possible in Julia.

To conclude, I will add this: If a language/environment is “good enough” for someone, no amount of persuasion will convince them to switch. In my experience, people who gravitate to Julia do so because it really solves the problems they had with other languages (in terms of speed, elegance, abstraction, “two-language problem”), or expect that it will, given time, so it is worth investing in.

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [August 24, 2022, 11:40pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/48 "2022-08-24T23:40:55Z")

</div>

> [@uje](#):
>
> **Problem 1** : There are little to no questions on Julia’ s stackoverflow tag,

If you by “little to no” mean “thousands”, then you are definitely right.

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [August 25, 2022, 7:50am UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/49 "2022-08-25T07:50:54Z")

</div>

This is somewhat derailing the thread so apologies for doing so, but on the StackOverflow point: I know many in the community actively dislike SO, and it’s certainly not a great place to have many of the in-depth “how can I speed up inference in this Turing PDE model 1000x” discussion happening on here, but there’s still a decent community of very good Julia coders who are monitoring the Julia tag on SO and provide excellent answers (or at least comments to the badly posed questions which can’t be answered) to most questions almost instantaneously.

So if you come across someone complaining about the lack of SO Julia content, please encourage them to post a question there, and they’ll likely be surprised how quickly they’ll have their problem solved.

Of course actively posting a question on SO is more effort than just googling something and copy-pasting the solution from an already existing question, but there’s little we can do about that other than encouraging people to ask more questions.

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [August 25, 2022, 7:55am UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/50 "2022-08-25T07:55:50Z")

</div>

(Perhaps OT, yes, but I’ve never understood what’s so bad about SO, especially the Julia tag.)

---

<div class="post-metadata">

**Author:** ![Nathan\_Boyer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nathan_boyer/32/14825_2.png) [@Nathan\_Boyer](https://discourse.julialang.org/u/Nathan_Boyer)\
**Post date:** [August 25, 2022, 1:18pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/51 "2022-08-25T13:18:09Z")

</div>

Do you have a guide on how to do that? Because I have been trying unsuccessfully for months. Environments and package version management are not trivial to me. They are a big problem.

> [@How to use VSCode and REPL to write and test a package?](https://discourse.julialang.org/t/how-to-use-vscode-and-repl-to-write-and-test-a-package/78818/43):
>
> Even if I duplicate all the dependencies from the package Project.toml to the test Project.toml, none of the environments use the correct version of DataFrames.

> [@How to use VSCode and REPL to write and test a package?](https://discourse.julialang.org/t/how-to-use-vscode-and-repl-to-write-and-test-a-package/78818/6):
>
> Well I got three entirely opposed answers again. Is there not a built-in way that just works? How are new users supposed to take the advice to put all their code in functions and packages if everything breaks when they do? Sorry if I sound ungrateful, but I am really frustrated with this process. Given that reproducible environments and interactive development are two of the most touted features of Julia, I am surprised by how difficult it is to get them to work. Let me ask more direct questions…

> [@How to use VSCode and REPL to write and test a package?](https://discourse.julialang.org/t/how-to-use-vscode-and-repl-to-write-and-test-a-package/78818/50):
>
> Welcome! I am also still lost on environments, especially on how to get dependencies, versioning, and namespaces to work consistently among the suggested global, package, test, and example environments. It is especially confusing because the [Pkg documentation](https://pkgdocs.julialang.org/v1/environments/) is barren of any practical advice, and [PkgTemplates does not recommend](https://github.com/invenia/PkgTemplates.jl/issues/345) creating Project.toml files the same way that [Pkg does](https://pkgdocs.julialang.org/v1/creating-packages/#Test-specific-dependencies-in-Julia-1.2-and-above). I have not been able to find a comprehensive guide, so I am still guessing by trial and error. Others can feel f…

---

<div class="post-metadata">

**Author:** ![zhangxiubo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zhangxiubo/32/4357_2.png) [@zhangxiubo](https://discourse.julialang.org/u/zhangxiubo)\
**Post date:** [August 25, 2022, 1:19pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/52 "2022-08-25T13:19:03Z")

</div>

> [@uje](#):
>
> Let me give some of the major reasons people complain about Julia and possible ways to solve _ **them** _.

By “them”, I am not sure whether you were referring to the problems or those people who where complaining…

I’d say that your argument in Problem 2 doesn’t quite stand. Intensive development of Python’s computational capability (thanks to the advent of machine learning, of course) largely started around 2010, slightly before the inception of Julia. In a way, one may argue that Julia started with a cleaner slate than Python (e.g. the Python 2 to 3 transition mess), so the difference is not that big.

IMHO, the biggest complaints the HN crowd have about Julia are:

1. The language is a bit over-sold. When people tried the language and it failed to deliver all the promises, they feel they were “conned”.
2. Some part of the Julia community can be quite dismissive when responding to valid criticisms on Julia. When people complain about Julia’s problems on HN (probably because they were disappointed), you often see replies arguing along the line of “You are doing it wrong; Julia is different than Python/Foo/Bar”, or when it comes to performance comparisons, “Your implementation is not type stable / is allocating too much; you should be apply these optimization to speed it up”. On itself this is not really an issue, but a lot of people perceived Julia as a language as easy to use as Python while as performant as C/C++ — they then found out that they have to choose between ease of use and performance, which reinforces their opinion that the language over-promised.
3. There is also the problem of developer experience (e.g. tooling, static analysis, workflow best practices).

---

<div class="post-metadata">

**Author:** ![uje](https://avatars.discourse-cdn.com/v4/letter/u/5f9b8f/32.png) [@uje](https://discourse.julialang.org/u/uje)\
**Post date:** [August 25, 2022, 1:25pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/53 "2022-08-25T13:25:52Z")

</div>

You’re using Julia and I believe you want it grow big.

So when you see such problems like the great ones you’ve highlighted. Think of a possible solution to circumvent it. If you don’t have a solution to a problem, then I feel its a “problem” to you as well, you understand?

For example, the language is oversold. Ok, so how do you help so we stop making it oversold? Put up the discussion on discourse and let others contribute, that’s how I see it from an angle of someone who wants Julia to grow.

So, whenever you see a problem, even if you don’t have a solution but love to see the problem being solved. Turn on your computer and post a thread in discourse, its free.

The problems I posted above are the ones I think I’ve seen countless times. Now you have to add the ones you’ve highlighted as well and also solutions (if you have them), or ask for help? Let your actions be someone who wants to help the language grow, other than stating problems A, B, C, with no help or no sign of asking for help.

---

<div class="post-metadata">

**Author:** ![zhangxiubo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zhangxiubo/32/4357_2.png) [@zhangxiubo](https://discourse.julialang.org/u/zhangxiubo)\
**Post date:** [August 25, 2022, 1:50pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/54 "2022-08-25T13:50:54Z")

</div>

Well, recognizing the problems is certainly the first step towards solving them.

> [@uje](#):
>
> Think of a possible solution to circumvent it. If you don’t have a solution to a problem, then I feel its a “problem” to you as well, you understand?

I am not quite sure I follow you here…

I guess my point was that some of the solutions you proposed sounded more like defences — materials one can use to argue with critics of the language. Unfortunately, I don’t think these critics will change their mind after seeing the defences presented; they will more likely to just walk away, telling others on HN that the Julia community is toxic. Perhaps a better way of phrasing them would be for the Julia community to promote better user education?

As for my own observations: It is my hope that the language and ecosystem can continue to grow and I appreciate the effort Julia’s developers put into growing the language. However, I am but a mere user of the language, and I am only here to provide my feedbacks; I don’t think I am in a position to tell people how to solve those problems.

---

<div class="post-metadata">

**Author:** ![uje](https://avatars.discourse-cdn.com/v4/letter/u/5f9b8f/32.png) [@uje](https://discourse.julialang.org/u/uje)\
**Post date:** [August 25, 2022, 3:50pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/55 "2022-08-25T15:50:40Z")

</div>

You’re not a mere user. It took you more than a second to install Julia on your local machine, so you’re part of the statistics when downloads is counted.

Please in your own small way provide solutions to any problems you encounter, so it can be solved. And when you don’t have such a solution, ask the question anyways, so others can learn from it.

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [August 25, 2022, 4:52pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/56 "2022-08-25T16:52:18Z")

</div>

How about this: [GitHub - PetrKryslUCSD/FreeVibrationExample: Simple Example of Free Vibration Computation](https://github.com/PetrKryslUCSD/FreeVibrationExample)?  
If you’d like, download the repo and follow the instructions. Some minutes later  
one can run the simulation. (Precompilation takes the most part of the start up time.)

---

<div class="post-metadata">

**Author:** ![NicholasWMRitchie](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nicholaswmritchie/32/22449_2.png) [@NicholasWMRitchie](https://discourse.julialang.org/u/NicholasWMRitchie)\
**Post date:** [August 25, 2022, 5:09pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/57 "2022-08-25T17:09:58Z")

</div>

I use [DrWatson](https://juliadynamics.github.io/DrWatson.jl/dev/) to build a reproducible environment for data analysis. It doesn’t do anything you couldn’t do manually but does make the process a bit more straightforward. It is particularly helpful for ensuring that scripts run in the correct environment.

---

<div class="post-metadata">

**Author:** ![igorraven](https://avatars.discourse-cdn.com/v4/letter/i/91b2a8/32.png) [@igorraven](https://discourse.julialang.org/u/igorraven)\
**Post date:** [August 25, 2022, 5:10pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/58 "2022-08-25T17:10:01Z")

</div>

Thank you for the post. Point well taken and I think appropriate. New perspectives joining the is very useful. Helping those getting started guarantees the inflow of potentially creative and useful ideas. Sometimes a simple question can open a dialogue that leads to a new perspective, with group input.

---

<div class="post-metadata">

**Author:** ![Nathan\_Boyer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nathan_boyer/32/14825_2.png) [@Nathan\_Boyer](https://discourse.julialang.org/u/Nathan_Boyer)\
**Post date:** [August 25, 2022, 6:24pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/59 "2022-08-25T18:24:36Z")

</div>

I’d hardly call writing a `.bat` and a `.sh` script for every project to make it reproducible “trivial” or “a breeze”, nor is it a Julia solution.

I think Dr. Watson is overkill for what I need, but I will give it another look.

But I am off topic now and will leave it here.

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [August 25, 2022, 6:57pm UTC](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030/60 "2022-08-25T18:57:24Z")

</div>

Ok, perhaps it wasn’t as obvious as I thought.

1. This workflow ([GitHub - PetrKryslUCSD/FreeVibrationExample: Simple Example of Free Vibration Computation](https://github.com/PetrKryslUCSD/FreeVibrationExample)) is only needed if the person receiving the instructions does not have an installed Julia at all.
2. To adjust this workflow for a different application project it doesn’t take more than changing a single variable: [FreeVibrationExample/install.sh at 8be88c2e9687c3629fe71890d90407bfaa8699a8 · PetrKryslUCSD/FreeVibrationExample · GitHub](https://github.com/PetrKryslUCSD/FreeVibrationExample/blob/8be88c2e9687c3629fe71890d90407bfaa8699a8/assets/install.sh#L58)  
No other messing with batch files is required. In a pinch, the user package name could be solicited  
from the user at runtime.
3. If the person receiving the program already has Julia installed, all that is needed is to download  
[GitHub - PetrKryslUCSD/RunVibrationExample.jl: Run an example of a free-vibration solution](https://github.com/PetrKryslUCSD/RunVibrationExample.jl) and run `run.jl` in that folder. That is a pure Julia workflow. In doesn’t take more than say `include("run.jl")`.

[Previous page](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030.md?page=2)

[Next page](https://discourse.julialang.org/t/we-as-a-community-should-be-more-understanding-of-julias-flaws/86030.md?page=4)
