# Julia: a post-mortem

**URL:** <https://discourse.julialang.org/t/julia-a-post-mortem/56809>\
**Category:** Community\
**Created:** [March 9, 2021, 2:34pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809 "2021-03-09T14:34:59Z")\
**Posts on this page:** 20\
**Page:** 3

<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:** [March 9, 2021, 9:23pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/41 "2021-03-09T21:23:49Z")

</div>

I am yet to see a non-trivial piece of C++ software to “seamlessly integrate” anywhere. In fact, in my experience it is anything but.

---

<div class="post-metadata">

**Author:** ![paulmelis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/paulmelis/32/35063_2.png) [@paulmelis](https://discourse.julialang.org/u/paulmelis)\
**Post date:** [March 9, 2021, 9:30pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/42 "2021-03-09T21:30:02Z")

</div>

> [@Orbots](#):
>
> My job is to build _new software_ . I do solve problems in Julia, my trusty calculator. Then I need to write software in C++ or python because they are seamlessly integrated into the software/OS environment of the end-users.

Genuine interest: in what ways does Julia lack integration with other software/OS? And in what way is that situation better with other languages?

---

<div class="post-metadata">

**Author:** ![Satvik](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/satvik/32/20486_2.png) [@Satvik](https://discourse.julialang.org/u/Satvik)\
**Post date:** [March 9, 2021, 9:30pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/43 "2021-03-09T21:30:43Z")

</div>

> [@stillyslalom](#):
>
> Julia already does a great job incorporating other languages (PyCall, RCall, CxxWrap, native ccall…)

I agree – I’ve been rewriting performance critical parts of our Python codebase in Julia lately, and it’s been pretty seamless to either call the Julia functions from Python using PyJulia, or vice versa using PyCall. I’d say it was roughly a one-time investment of two hours to learn how to get these working and get everything set up properly.

---

<div class="post-metadata">

**Author:** ![Oscar\_Smith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oscar_smith/32/25343_2.png) [@Oscar\_Smith](https://discourse.julialang.org/u/Oscar_Smith)\
**Post date:** [March 9, 2021, 9:37pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/44 "2021-03-09T21:37:28Z")

</div>

The biggest here is static binaries. You really need those if you want to distribute software (especially because most OS update less frequently than Julia, so shipping Julia in the OS is a bad idea).

---

<div class="post-metadata">

**Author:** ![paulmelis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/paulmelis/32/35063_2.png) [@paulmelis](https://discourse.julialang.org/u/paulmelis)\
**Post date:** [March 9, 2021, 9:46pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/45 "2021-03-09T21:46:48Z")

</div>

@orbots mentioned Python in the context of my question, which has no (portable) way of distributing static binaries. Plus it’s not a very common way of distributing Python code anyway. So I’d be surprised if this is the biggest hurdle for distribution, especially in an open-source context?

---

<div class="post-metadata">

**Author:** ![lungben](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lungben/32/12314_2.png) [@lungben](https://discourse.julialang.org/u/lungben)\
**Post date:** [March 9, 2021, 9:55pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/46 "2021-03-09T21:55:58Z")

</div>

I think the difference here is that very few people make Python libraries to be called from other programming languages. This would not be very efficient due to Python’s performance limitations. For Julia, however, this would be a viable use case.

---

<div class="post-metadata">

**Author:** ![mashgholam](https://avatars.discourse-cdn.com/v4/letter/m/a698b9/32.png) [@mashgholam](https://discourse.julialang.org/u/mashgholam)\
**Post date:** [March 9, 2021, 9:59pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/47 "2021-03-09T21:59:46Z")

</div>

> [@StefanKarpinski](#):
>
> Instead, use rankings with reasonable methodologies like [IEEE](https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2019)

Interestingly, this index introduces the C programming language suitable for mobile development. Or it introduces Arduino as a programming language (which is fine) but on the other hand it only introduces JavaScript suitable for web development and does not even look at NodeJS separately as if that part of the development world does not exist at all. This index does not seem to be very valid either.

---

<div class="post-metadata">

**Author:** ![haberdashPI](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/haberdashpi/32/26337_2.png) [@haberdashPI](https://discourse.julialang.org/u/haberdashPI)\
**Post date:** [March 9, 2021, 10:06pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/48 "2021-03-09T22:06:35Z")

</div>

I doubt those little icon indicators are particularly meaningful: they also list Objective-C as mobile only (???). Are those really used to compute the index (I would be surprised)?

---

<div class="post-metadata">

**Author:** ![mashgholam](https://avatars.discourse-cdn.com/v4/letter/m/a698b9/32.png) [@mashgholam](https://discourse.julialang.org/u/mashgholam)\
**Post date:** [March 9, 2021, 10:08pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/49 "2021-03-09T22:08:06Z")

</div>

According to their [explanation](https://spectrum.ieee.org/ns/IEEE_TPL_2020/index/2020):

> You can filter them by excluding sectors that aren’t relevant to you, such as “Web” or “Embedded.” (The sectors that languages are assigned to are based on typical use patterns we’ve seen in the wild, rather than atypical or proof-of-concept projects.)

---

<div class="post-metadata">

**Author:** ![haberdashPI](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/haberdashpi/32/26337_2.png) [@haberdashPI](https://discourse.julialang.org/u/haberdashPI)\
**Post date:** [March 9, 2021, 10:10pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/50 "2021-03-09T22:10:36Z")

</div>

Not sure I follow: are you saying that text is evidence of using those measures as part of their index, or do you mean that—because they believe those usage patterns are typical—it leaves you skeptical of the index itself?

---

<div class="post-metadata">

**Author:** ![BlancheBoncoeur](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/blancheboncoeur/32/22729_2.png) [@BlancheBoncoeur](https://discourse.julialang.org/u/BlancheBoncoeur)\
**Post date:** [March 9, 2021, 10:14pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/52 "2021-03-09T22:14:02Z")

</div>

> [@StefanKarpinski](#):
>
> Yet nobody is wringing their hands over Go’s failure or lack of growth.

I think that Go development atmosphere is more professional so there is trust in their potential in handling the barriers they’re faced. sorry for my english

---

<div class="post-metadata">

**Author:** ![mashgholam](https://avatars.discourse-cdn.com/v4/letter/m/a698b9/32.png) [@mashgholam](https://discourse.julialang.org/u/mashgholam)\
**Post date:** [March 9, 2021, 10:15pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/53 "2021-03-09T22:15:13Z")

</div>

> [@haberdashPI](#):
>
> are you saying that text is evidence of using those measures as part of their index

No

> [@haberdashPI](#):
>
> do you mean that—because they believe those usage patterns are typical—it leaves you skeptical of the index itself?

Exactly, In addition, for example, I do not know now whether NodeJS is considered separately or with JavaScript

---

<div class="post-metadata">

**Author:** ![haberdashPI](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/haberdashpi/32/26337_2.png) [@haberdashPI](https://discourse.julialang.org/u/haberdashPI)\
**Post date:** [March 9, 2021, 10:17pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/55 "2021-03-09T22:17:32Z")

</div>

Got it: if I get it, you question their judgment about how to design the metric because they don’t seem to really understand all use cases for each language in the index. (And so maybe they’re missing something in the design of the metric). I’m not sure that’s the standard I would use to judge a metric, but I _think_ I see why that could matter to someone.

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [March 9, 2021, 10:20pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/57 "2021-03-09T22:20:54Z")

</div>

> [@lungben](#):
>
> I think the difference here is that very few people make Python libraries to be called from other programming languages. This would not be very efficient due to Python’s performance limitations. For Julia, however, this would be a viable use case.

You don’t need fully static compilation for that. In fact, it’s perfectly possible _now_ to write a little C library with C API stubs for calling a Julia library, and then link your code in some C-compatible language with `-lstub -ljulia` and `#include <stub.h>`.

It will load Julia code and JIT compile it under the hood, but many applications don’t really care _how_ the library they are calling works as long as it works. A more serious annoyance is the long start-up time, which is related to the “time-to-first-plot” issue that is a high priority for Julia development…and which will eventually be solved by caching more compiled code and other standard tricks; it’s not rocket science, just a lot of plumbing.

Fully statically compiled code (with no JIT compiler present at runtime) is a harder problem in a dynamic language, because then you really want to guarantee that you _never_ hit any code paths at runtime that have not been compiled yet. But it’s not clear to me that this is really required — people care about having something be easy to link and call, and care about it being fast, but don’t typically care (or understand) whether a JIT is hidden underneath.

(Tons of people use GPU libraries without realizing that there is a PTX JIT involved.)

---

<div class="post-metadata">

**Author:** ![sgjanssens](https://avatars.discourse-cdn.com/v4/letter/s/9f8e36/32.png) [@sgjanssens](https://discourse.julialang.org/u/sgjanssens)\
**Post date:** [March 9, 2021, 10:21pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/58 "2021-03-09T22:21:10Z")

</div>

[SymEngine](https://github.com/symengine/symengine) is an example.

---

<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:** [March 9, 2021, 10:25pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/59 "2021-03-09T22:25:56Z")

</div>

Hmm. I am aware of at least one horror story installing on Windows. But on “supported” platforms it may be a different story. However, compared with Julia itself the installation is definitely fiddly.

---

<div class="post-metadata">

**Author:** ![Orbots](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/orbots/32/3392_2.png) [@Orbots](https://discourse.julialang.org/u/Orbots)\
**Post date:** [March 9, 2021, 11:18pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/60 "2021-03-09T23:18:37Z")

</div>

> [@paulmelis](#):
>
> in what ways does Julia lack integration with other software/OS? And in what way is that situation better with other languages?

For myself, compiling a shared library (.so) for Linux is brittle and unsupported. I did have this ( sort of ) working with older versions of julia after quite a bit of yak shaving effort. Then things changed with 1.5 /PackageCompiler and broke the system I did have. This was very frustrating. Although it didn’t matter all that much because I couldn’t really dynamically load those libs due to LLVM namespace conflicts in the host application.

Those shared libs if you are able to build and dynamically load them are very large.

With C++/gcc you have great control over size and linking of a shared library.

Python is more seamlessly integrated into many host environments simply because many host environments directly embed it as a scripting language or have it as a default install. Many popular C++ libraries come with a python api.

---

<div class="post-metadata">

**Author:** ![Orbots](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/orbots/32/3392_2.png) [@Orbots](https://discourse.julialang.org/u/Orbots)\
**Post date:** [March 9, 2021, 11:26pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/61 "2021-03-09T23:26:47Z")

</div>

> [@stevengj](#):
>
> But it’s not clear to me that this is really required — people care about having something be easy to link and call, and care about it being fast, but don’t typically care (or understand) whether a JIT is hidden underneath.

This generalization applies to a narrow subset of software. Having a garbage collector, let alone JIT, disqualifies Julia for use in many categories of software.

Having said that, easy to link and call would be wonderful and drive adoption in software applications beyond Julia’s numerical/scientific computing roots.

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [March 10, 2021, 4:40am UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/63 "2021-03-10T04:40:21Z")

</div>

I think that people reading this thread should be aware of some deceptive behavior going on here:

- @mashgholam is a sock puppet for @dariush-bahrami
- @BlancheBoncoeur is a sock puppet for @SadeghPouriyan
- @dariush-bahrami and @SadeghPouriyan may be the same person

For context, @dariush-bahrami is the person who became upset when a [thread](https://discourse.julialang.org/t/julia-from-the-perspective-of-a-pythonista/55956) they started the other day was rate-limited in order to keep the discussion from getting too heated, and eventually closed, when it did become too heated. Since then he appears to be on a bit of a mission to bring negative attention to the project.

Sock puppetry is generally considered bad in internet forums for reasons that are quite well demonstrated here: sock puppets tend to be used by people to make it appear that more people agree with them than actually do, when, in fact, it is just one person dishonestly amplifying their own voice. In this case, the sock puppetry was fairly easy to detect using information available to admins (which is exactly why it’s available to them).

In addition to this deceptive behavior on Discourse, there is more. The recently posted article “[https://hackernoon.com/is-julia-a-misuse-of-free-software-in-the-name-of-open-source-wy20354r](https://hackernoon.com/is-julia-a-misuse-of-free-software-in-the-name-of-open-source-wy20354r)” which tries to “cancel” Julia’s discourse moderators for, um, moderating, is also very likely written by @dariush-bahrami using the alias “Henning Rousseau”. How can I tell this? When you copy a link from Discourse, your user name is embedded in the link you get. Guess what user name is embedded in the Discourse links in that article? You guessed it: @dariush-bahrami. I have saved the current content of the article [here](https://drive.google.com/file/d/134A2SezVvEdHcUQfRnjZL-57D7zkf4W8/view?usp=sharing) since it seems likely to get “fixed” once I post this. It is possible that Henning Rousseau is a real “free software activist” as his bio says, and that @dariush-bahrami sent him these links, and he decided to write this article using those links. In that case, however, Mr Rousseau is not much of an online activist since his entire internet presence consists of this one article published yesterday. It seems far more likely that Henning Rousseau is a fake person invented yesterday as an alias under which @dariush-bahram could publish a critical article about Julia.

Of course, none of this chicanery invalidates the points that are made in this thread or in the article. Fake people can make valid points. I should also point out that Chris von Csefalvay, the author of the article linked in @mashgholam’s (aka @dariush-bahrami) original post here, is very much a real person and not a sock puppet. So please read what they say and see if you agree or not. It does, however, only seem fair that people reading this should be aware that they are being manipulated into believing that more people are agreeing with these positions than actually are.

@dariush-bahrami and @SadeghPouriyan, in case you were not already aware: sock puppetry is not acceptable here, especially for the clear purpose of deceiving people. Please stop.

p.s. I suspect that the faces [[1]](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/walter.watson/240/22717_2.png) [[2]](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/blancheboncoeur/240/22729_2.png) [[3]](https://lh3.googleusercontent.com/a-/AOh14GiyDGAk7S6dKjWo2X6EGYwcrd2YuUCMmcpVxA2n=s96-c) used for these three fake identities are made by a GAN, but they’re pretty good and low resolution, which makes it a bit hard to tell. Anyone know how to detect GAN generated faces?

---

<div class="post-metadata">

**Author:** ![Keno](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/keno/32/285_2.png) [@Keno](https://discourse.julialang.org/u/Keno)\
**Post date:** [March 10, 2021, 3:37pm UTC](https://discourse.julialang.org/t/julia-a-post-mortem/56809/64 "2021-03-10T15:37:30Z")

</div>

Split this topic on March 10, 2021, 3:37pm UTC

37 posts were split to a new topic: [Sock Puppetry Dogpile](https://discourse.julialang.org/t/sock-puppetry-dogpile/56891)

[Previous page](https://discourse.julialang.org/t/julia-a-post-mortem/56809.md?page=2)

[Next page](https://discourse.julialang.org/t/julia-a-post-mortem/56809.md?page=4)
