# Why Julia - A Manifesto

**URL:** <https://discourse.julialang.org/t/why-julia-a-manifesto/106404>\
**Category:** Community\
**Created:** [November 18, 2023, 12:36pm UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404 "2023-11-18T12:36:32Z")\
**Posts on this page:** 19\
**Page:** 2

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [December 3, 2023, 10:00pm UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/22 "2023-12-03T22:00:24Z")

</div>

> [@lmiq](#):
>
> “Optimized codes”, if that means the insane exercises

well, I’d agree with you that the wording I suggested was not optimal. I still think the original wording may result in overly optimistic expectations followed by disappointment.

---

<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:** [December 4, 2023, 1:52am UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/23 "2023-12-04T01:52:54Z")

</div>

I strongly disagree with you. Take me as an example, Julia enables me to be not only more (huge) productive but also be able to write advanced algorithms that I cannot even try to do with C++. BTW, the Julia code is also as fast as my legacy C++ code.

As seeing some posts express their kinda of negative review. I feel I must say out loud that I totally agree with @Datseris and I love his style of writing. I give him 100% support!

---

<div class="post-metadata">

**Author:** ![xiaoxi](https://avatars.discourse-cdn.com/v4/letter/x/a9adbd/32.png) [@xiaoxi](https://discourse.julialang.org/u/xiaoxi)\
**Post date:** [December 5, 2023, 10:15am UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/24 "2023-12-05T10:15:20Z")

</div>

Thanks for the effort! This text attests to what I have always thought about Julia: a programming language that empowers scientists and engineers and helps them to be more productive.

I hope the website of Julia lang will publish an abridged version of the text.

---

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [December 5, 2023, 11:06pm UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/25 "2023-12-05T23:06:06Z")

</div>

> [@liuyxpp](#):
>
> As seeing some posts express their kinda of negative review.

Criticism is not the same as negative review. Actually, jacobusmmsmit writes

> [@jacobusmmsmit](#):
>
> First of all, great content. I’m glad there’s an up-to-date and clear description of the arguments to use Julia written for its largest audience.

and I agree with him on this point to. @Datseris , thank you for your effort!

Now some more critical points:

> Julia has software organizations for seemingly every scientific area.

What about chemistry?

> _The fact that Julia matches Python’s library ecosystem, and in many fields it surpasses it_

First, it is a very strong claim. Second, it is at best difficult to substantiate (even though I’d agree that in ~~many~~ a few fields Julia is objectively stronger). Third, something is claimed to be a **fact** , whereas it seems to be just a hypothesis. Personally I am very allergic to that kind of, sorry, demagogical tricks, and I guess many scientists tend to be attentive readers, too. @Datseris , I’m pretty sure you didn’t mean it that way, but that is what stands in your text.

I think it is important to be able to substantiate _every single claim_ of the Manifesto.

Also, personally I think the Manifesto would be (even) more convincing for the target audience if also informing the reader about the typical Julia noob problems - maybe in an accompanying text.

---

<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:** [December 5, 2023, 11:26pm UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/26 "2023-12-05T23:26:00Z")

</div>

> [@Eben60](#):
>
> What about chemistry?

FWIW:

> **[JuliaChemicalReactions](https://github.com/JuliaChemicalReactions)**
>
> An organization focused on development of chemical reactions tools - JuliaChemicalReactions

> **[Molecular Simulation in Julia](https://github.com/JuliaMolSim)**
>
> Molecular Simulation in Julia has 19 repositories available. Follow their code on GitHub.

---

<div class="post-metadata">

**Author:** ![Datseris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/datseris/32/13406_2.png) [@Datseris](https://discourse.julialang.org/u/Datseris)\
**Post date:** [December 6, 2023, 10:22am UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/28 "2023-12-06T10:22:33Z")

</div>

> [@Eben60](#):
>
> > _The fact that Julia matches Python’s library ecosystem, and in many fields it surpasses it_
> 
> First, it is a very strong claim.

@Eben60 I agree. I’ve updated the document to say “some” instead of many: [relax statement of many to some · Datseris/whyjulia-manifesto@65d09a9 · GitHub](https://github.com/Datseris/whyjulia-manifesto/commit/65d09a9bdb6acaabc780327dbd3e46f14da1a900) . Now it appears to me that the claim is a rather trivial statement of fact.

> [@Eben60](#):
>
> Second, it is at best difficult to substantiate (even though I’d agree that in ~~many~~ a few fields Julia is objectively stronger).

Is it really so difficult to substantiate? The document provides links to several top-of-the-class packages like DifferentialEquations.jl, DynamicalSystems.jl, JuMP.jl, Agents.jl, Turing.jl, etc. More than 2 references quality as “some”, so I got the “some” aspect of my claim covered. Some of these packages even went the extra mile of making an explicit comparison across all similar software in all languages, and established their top quality, so this is also covered with rather objective means.

Is this enough evidence?

> [@Eben60](#):
>
> Third, something is claimed to be a **fact** , whereas it seems to be just a hypothesis. Personally I am very allergic to that kind of, sorry, demagogical tricks, and I guess many scientists tend to be attentive readers, too.

And personally I am allergic to claims without _any substantiation_. **Yes, what I state is a fact, that’s what I truly believe.** You claim it isn’t a fact, and it is just a “hypothesis” when I have provided up to 20 links in the document. Yet you provided nothing for your own counter-claim.

Can you substantiate your claims please? **I would absolutely love it if I can make the document more objective, while still keeping it an opinionated document.** My problem is, I don’t know how, because there isn’t much information in the counter-claims done here. If you are convinced that what I say is arbitrary/handwavy/hypothesised, please show me how I am wrong. Don’t just say that I am wrong, and expect me to believe it as the absolute truth.

---

<div class="post-metadata">

**Author:** ![oheil](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oheil/32/220745_2.png) [@oheil](https://discourse.julialang.org/u/oheil)\
**Post date:** [December 6, 2023, 11:04am UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/29 "2023-12-06T11:04:30Z")

</div>

> [@Datseris](#):
>
> Don’t just say that I am wrong, and expect me to believe it as the absolute truth.

> [@Eben60](#):
>
> I think it is important to be able to substantiate _every single claim_ of the Manifesto.

Quotes as example only.  
Beware: this Manifesto is a VERY DIFFICULT task! Finding the right tone and the right balance between objective facts and only believes, but we all agree on them (more or less), is not a trivial or a minor thing to do. It will never be perfect for everybody. At some point we need to agree that it’s best to have it like it is, instead of having nothing, even if one find this or that not perfectly the truth.

It’s to early, but perhaps it could be decided by survey if the community agrees with the outcome. A simple majority may be not enough.

---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [December 6, 2023, 2:09pm UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/30 "2023-12-06T14:09:43Z")

</div>

Folks, the stakes are getting elevated out of proportion to what’s happening here. This is _one_ document authored primarily by _one_ person. It doesn’t need to describe _everyone’s_ feelings here, nor could it ever truly represent the _entire_ community. And to my read it doesn’t even try to do that. There’s no need for surveys or votes or community consensus writ large. We do have a wide variety of perspectives here — and that’s great thing.

@Datseris asked for feedback, and we can definitely facilitate that in this thread. George doesn’t need to be responsive to all feedback — and we can let disagreements stand. That’s ok!

---

<div class="post-metadata">

**Author:** ![oheil](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oheil/32/220745_2.png) [@oheil](https://discourse.julialang.org/u/oheil)\
**Post date:** [December 6, 2023, 2:20pm UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/31 "2023-12-06T14:20:13Z")

</div>

I see this as something like the well known and awesome [Please read: make it easier to help you](https://discourse.julialang.org/t/please-read-make-it-easier-to-help-you/14757) which is widely accepted and linked by the community.  
If this manifest is able to serve for similar purposes it would be of great help. Of course we can just wait if it is linked and used like the PSA “make it easier to help you” or not, but if not, all the effort (and feedback) would be lost. But I agree, a survey may be overkill.

---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [December 6, 2023, 2:41pm UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/32 "2023-12-06T14:41:31Z")

</div>

That “Please read” topic has official weight behind it. It’s a _globally pinned topic_ that everyone sees on first login, with a “staff notice” banner. I should probably further add links to it in the site FAQ, but it makes some sense to have it as a discourse topic since it’s for and about discourse. And it is a community document: it’s a wiki!

This manifesto is a GitHub repo on Datseris’ personal account. Folks who like it can and should link to it! But there’s quite a difference here. We wouldn’t globally pin such a manifesto, and I’m not sure if the folks that maintain the community [julialang.org](http://julialang.org) website would even accept it there (beyond, _perrrrrhaps_, as a blog post, but that’s again where the authorship is more obvious).

---

<div class="post-metadata">

**Author:** ![oheil](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oheil/32/220745_2.png) [@oheil](https://discourse.julialang.org/u/oheil)\
**Post date:** [December 6, 2023, 2:47pm UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/33 "2023-12-06T14:47:24Z")

</div>

Yes, that’s right, I’ve seen too much.

---

<div class="post-metadata">

**Author:** ![Palli](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/palli/32/3380_2.png) [@Palli](https://discourse.julialang.org/u/Palli)\
**Post date:** [December 6, 2023, 7:22pm UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/34 "2023-12-06T19:22:51Z")

</div>

> [@Datseris](#):
>
> > [@Eben60](#):
> >
> > > _The fact that Julia matches Python’s library ecosystem, and in many fields it surpasses it_
> > 
> > First, it is a very strong claim.
> 
> @Eben60 I agree. I’ve updated the document to say “some” instead of many

There’s not need to back down/relax to some; “some” is true, but “many” is also true?! I don’t know how many exactly, You didn’t say “most”. I think you want to be correct and humble.

[Maybe “most” might apply? At least if used with Python… You can always use together, and it may be transparent with PythonCall. For at least the end-user of a package that has a Python dependency.]

[I don’t know if Julia matches the full Python ecosystem, alone, Julia+Python certainly good since you can use all their libraries. For \*science\* Julia alone may match or exceed already. With some few exceptions, ok “some” exceptions…]

---

<div class="post-metadata">

**Author:** ![jar1](https://avatars.discourse-cdn.com/v4/letter/j/c0e974/32.png) [@jar1](https://discourse.julialang.org/u/jar1)\
**Post date:** [December 6, 2023, 7:40pm UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/35 "2023-12-06T19:40:05Z")

</div>

The document suggests Turing is best in class. However in the benchmarks I’ve seen it’s commonly outperformed by Stan. For example, [Benchmark Results · StatisticalRethinkingJulia/MCMCBenchmarks.jl](https://statisticalrethinkingjulia.github.io/MCMCBenchmarks.jl/latest/benchmarks/)

---

<div class="post-metadata">

**Author:** ![trung](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/trung/32/49217_2.png) [@trung](https://discourse.julialang.org/u/trung)\
**Post date:** [December 6, 2023, 7:49pm UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/36 "2023-12-06T19:49:06Z")

</div>

The link that you posted shows that the benchmarks are done in Julia 1.2.0. I would be curious on what the updated benchmarks are in Julia 1.9.4

---

<div class="post-metadata">

**Author:** ![Datseris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/datseris/32/13406_2.png) [@Datseris](https://discourse.julialang.org/u/Datseris)\
**Post date:** [December 6, 2023, 7:54pm UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/37 "2023-12-06T19:54:06Z")

</div>

Julia 1.2.0 isn’t the main issue. The main issue is that the version of Turing.jl is 0.7.0 instead of the latest stable that is 0.29.3. That’s like 20+ versions behind. The Julia language website itself advertises Turing.jl as best in class:

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

I’ll stick with the claim.

---

<div class="post-metadata">

**Author:** ![xiaoxi](https://avatars.discourse-cdn.com/v4/letter/x/a9adbd/32.png) [@xiaoxi](https://discourse.julialang.org/u/xiaoxi)\
**Post date:** [December 7, 2023, 6:15am UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/38 "2023-12-07T06:15:09Z")

</div>

I wonder if Datseris thought of writing the text as an open letter. It would have better suited his passionate tone.

---

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [December 7, 2023, 9:15am UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/39 "2023-12-07T09:15:26Z")

</div>

> [@lmiq](#):
>
> [JuliaChemicalReactions · GitHub](https://github.com/JuliaChemicalReactions)

Thank you. Somehow I overlooked that. And yes, I am aware of a number of chemical Julia packages which do not belong to any organization

---

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [December 7, 2023, 9:51am UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/40 "2023-12-07T09:51:21Z")

</div>

> [@Datseris](#):
>
> Is this enough evidence?

Surely not enough.

> _The fact that Julia matches Python’s library ecosystem, and in many fields it surpasses it_

Here you speak about the respective library ecosystems **as a whole** , or as least the respective science sub-ecosystems. Julia counts about 10\_000 packages, PyPi 500\_000. Both offer a lot for a lot of science areas. But what is the probability that there is a package for some specific task in one language and not in another one? For my topics surely I could have the overview, but what about the science areas I’ve never heard of in the first place? I don’t see how you can tell whether the ecosystems match (by some halfway defined metric) or not, at least not without some dedicated study. Now, what you cannot falsify is a hypothesis (or a belief - see below), not a fact.

> [@Datseris](#):
>
> **Yes, what I state is a fact, that’s what I truly believe.**

@Datseris, I’m playing _advocatus diaboli_ here, I hope you don’t take it personal. On the whole I like your _Manifesto_ and consider it an important effort.

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [December 7, 2023, 10:08am UTC](https://discourse.julialang.org/t/why-julia-a-manifesto/106404/41 "2023-12-07T10:08:17Z")

</div>

> [@Eben60](#):
>
> I don’t see how you can tell whether the ecosystems match (by some halfway defined metric) or not, at least not without some dedicated study.

While I don’t want to discount the importance of mature packages for a language, for me the most important factorse in scientific programming are

1. how quickly I can implement an algorithm for exploratory work,
2. how much effort is it to make it fast if I want to,
3. whether the end result remains a one-off effort, or can I actually use it in another project.

These are of course not so clearcut, as one goes back and forth between changing algorithms and optimizing them, but it pretty much captures 90% of what I do when I write code.

Julia shines in all of the above. The workflow allows me to prototype quickly, then I sit down to profile and benchmark (now that I use JET in CI, a lot of problems are caught early on), and a lot of the result is reusable or can be made such with very little effort.

I am of course not claiming that this is all of scientific programming. I am aware that there is a lot of scope for just scripting existing libraries together. But while Julia makes that easy too, it is not where its comparative advantage lies.

[Previous page](https://discourse.julialang.org/t/why-julia-a-manifesto/106404.md?page=1)
