Correctness and composability bugs in the Julia ecosystem
So this one is a tough one for me, because Yuri has certainly spent significant time with Julia and I think he&#x27;s a very competent programmer, so his criticism is certainly to be taken seriously and I&#x27;m sad to hear he ended up with a sour opinion.<p>There&#x27;s a lot of different issues mentioned in the post, so I&#x27;m not really sure what angle to best go at it from, but let me give it a shot anyway. I think there&#x27;s a couple of different threads of complaints here. There&#x27;s certainly one category of issues that are &quot;just bugs&quot; (I&#x27;m thinking of things like the HTTP, JSON, etc. issues mentioned). I guess the claim is that this happens more in Julia than in other systems. I don&#x27;t really know how to judge this. Not that I think that the julia ecosystem has few bugs, just that in my experience, I basically see 2-3 critical issues whenever I try a new piece of software independent of what language it&#x27;s written in.<p>I think the other thread is &quot;It&#x27;s hard to know what&#x27;s expected to work&quot;. I think that&#x27;s a fair criticism and I agree with Yuri that there&#x27;s some fundamental design decisions that are contributing here. Basically, Julia tries very hard to make composability work, even if the authors of the packages that you&#x27;re composing don&#x27;t know anything about each other. That&#x27;s a critical feature that makes Julia as powerful as it is, but of course you can easily end up with situations where one or the other package is making implicit assumptions that are not documented (because the author didn&#x27;t think the assumptions were important in the context of their own package) and you end up with correctness issues. This one is a bit of a tricky design problem. Certainly adding more language support for interfaces and verification thereof could be helpful, but not all implicit assumptions are easily capturable in interfaces. Perhaps there needs to be more explicit documentation around what combinations of packages are &quot;supported&quot;. Usually the best way to tell right now is to see what downstream tests are done on CI and if there are any integration tests for the two packages. If there are, they&#x27;re probably supposed to work together.<p>To be honest, I&#x27;m a bit pained by the list of issues in the blog post. I think the bugs linked here will get fixed relatively quickly by the broader community (posts like this tend to have that effect), but as I said I do agree with Yuri that we should be thinking about some more fundamental improvements to the language to help out. Unfortunately, I can&#x27;t really say that that is high priority at the moment. The way that most Julia development has worked for the two-ish years is that there are a number of &quot;flagship&quot; applications that are really pushing the boundary of what Julia can do, but at the same time also need a disproportionate amount of attention. I think it&#x27;s overall a good development, because these applications are justifying many people&#x27;s full time attention on improving Julia, but at the same time, the issues that these applications face (e.g. - &quot;LLVM is too slow&quot;, better observability tooling, GC latency issues) are quite different from the issues that your average open source julia developer encounters. Pre 1.0 (i.e. in 2018) there was a good 1-2 year period where all we did was think through and overhaul the generic interfaces in the language. I think we could use another one of those efforts now, but at least that this precise moment, I don&#x27;t think we have the bandwidth for it. Hopefully in the future, once things settle down a bit, we&#x27;ll be able to do that, which would presumably be what becomes Julia 2.0.<p>Lastly, some nitpicking on the HN editorialization of the title. Only of the issues linked (<a href="https:&#x2F;&#x2F;github.com&#x2F;JuliaLang&#x2F;julia&#x2F;issues&#x2F;41096" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;JuliaLang&#x2F;julia&#x2F;issues&#x2F;41096</a>) is actually a bug in the <i>language</i> - the rest are various ecosystem issues. Now, I don&#x27;t want to disclaim responsibility there, because a lot of those packages are also co-maintained by core julia developers and we certainly feel responsibility to make those work well, but if you&#x27;re gonna call my baby ugly, at least point at the right baby ;)