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

What should Julia do to get more corporate financing? What did other programming languages do to get corporate funding?

Talked to a couple people who faced institutional pressure to use Julia, and as many tips as I gave them to get past a few big assignments, they still hated Julia, really coding in general. I do agree that increasing representation in academia is good, but that’s more for the sake of improving academic code (I admit language bias in this take), not popularity. Popularity needs salesmanship, and the product would be stable packages that handle popular and diverse applications. Evangelism on the language itself will matter to developers of packages from scratch, and even assuming that Julia is the most suitable for that purpose (it’s not), that’s not what most users care about, beyond reading the occasional blogpost. As silly as it sounds, ChatStableGPTDiffusionWhatever.jl is going to draw a hundred times more eyes than “solves the two-language problem, oh what’s that, that would be when…”. I think there’s a healthy middle ground where Julia and the third party packages will improve and cover more ground to the point that developers and users take more and more notice for different reasons.

7 Likes

I like the idea that we should ultimately build more external-facing stuff that people can just use. Stuff like Flux, SciML, Turing, etc. are all really beautiful packages but aren’t really tailored for people who just wat to mess around and run cool code.

We could definitely start building more cool things that “just work” as either precompiled binaries or hobbyist code. I’d be interested in trying to help out in identifying projects that are easily distributed to people and have something of a “cool factor”.

8 Likes

Here’s a nice review article of julia 1.9: Julia 1.9 brings more speed and convenience [LWN.net]

5 Likes

What do you mean?

2 Likes

They’re not canned end-user toys, not really. I think one of the points I liked from @Benny was

There’s lots of utilities in other languages that serve some kind of useful purpose outside the context of the language – ripgrep in Rust, npm for random tools, webservers, etc. Julia doesn’t have a lot of these kinds of things, I think.

2 Likes

Is there a more end user interface you can describe than EasyModelAnalysis?

I’d like to see some examples and details. At that point it’s just symbolic models and high level queries.

5 Likes

I disagree with this. Although I left academia a long time ago, it seems to me that academics are well represented in this community.

Taking it to the next level of adoption needs lowering barriers of entry for the people who are actually likely to code stuff and contribute. And (to me) that means making it more accessible as a general purpose language, make it a possible stand-in replacement to python or perl (ie better tooling, more integrated), so that sysadmins, ops, and all devs can pick it up. Not just academia. Otherwise Julia will just be a new (and better) R when the Julia package repo matches CRAN in scope and maturity.

10 Likes

Could the Julia community agree on the next steps to take in the next 18/24 months?
As an example, Rust developers often write blog posts about how they want to improve the language and ecosystem in the coming months.

Julia could increase its popularity in academia by helping them as R has. A while back, the company behind R’s data science libraries released its code review principles and it seems to have been well received in the academic community, where code reviews aren’t so widespread.

2 Likes

Quite literally the first sentence in that link is

EasyModelAnalysis.jl is made to work with a ModelingToolkit.jl model. If one is unfamiliar with ModelingToolkit, check out its tutorial before getting started.

whose first sentence is likewise

ModelingToolkit.jl is a modeling language for high-performance symbolic-numeric computation in scientific computing and scientific machine learning.

Being redirected to another tutorial which describes itself as “high performance symbolic-numeric computation” is not a hallmark of being a canned end-user toy; the target audience is clearly an academic who already knows what all these words mean.

13 Likes

It’s literally a high-level and as of next week GUI-based format. You don’t even have to know how to program in order to use it. Is that high level enough for you?

The whole point is that it’s a canned end-user toy that does all of the high performance in the backend. This is why we use this for training first year undergrads and high school students rather than direct interaction with the solvers. It allows usage like a calculator instead of a programming language.

6 Likes

It’s high level, granted, but throws around jargon like it’s candy at halloween. That is NOT end-user; that’s suited for someone working with these things as their profession. That may be an “end-user” from your POV, but surely not from the POV of people who feel the need to point out that the Julia community is a bubble full of academics.

“Wider adoption” as I understand it to be taken in this thread does not mean “wider adoption in academia”, but “wider adoption outside of academia”, because that’s where the vast majority of people are; and that majority surely don’t know what a jacobian is (which is part of the assumed knowledge of the Getting Started for ModelingToolkit.jl).


To be clear, I have no issue with the ModelingToolkit.jl docs; for people who are already deep in the weeds of systemic & symbolic modeling, they are fantastic! I simply want to point out that there’s (at least) two very different understandings of “end user” and “wider adoption” in this thread; and y’all are at high risk of talking past each other.

24 Likes

Do you have an example of demonstrating this? Can you share your data of difficulties doing this with an end-user training group? Is there an example of what you think it should look like or do you have no concrete helpful comments? Please show the workshops of previous trainings along with post workshop evaluations since we’d be happy to learn from your information, if you can make it concrete.

Could you please sketch a profile of a potential user of ModelinkToolkit.jl for whom the terms such as scientific machine learning, ordinary differential equations or numerical optimization constitute an unknown jargon?

4 Likes

Good lord, this feels like quite a pile-on now - I’m not claiming that ModelingToolkit.jl specifically should target people who aren’t familiar with these terms. I’m saying that claiming that ModelingToolkit.jl is a good “end-user toy” is just not true - the target audience is not an end user who might want to use Julia for some non-academic task. That’s all I (and I think the people before me) are saying.

You’re focusing too much on your niche, which admittedly is quite a large portion of the current Julia userbase. The argument/thread above is simply about getting into other niches. Does that mean that you specifically need to start focusing on other things? Of course not! But you also shouldn’t claim that everything is ok just because your niche is doing fine.

27 Likes

The main thing is that the numerical optimizations are all introduced at a high level. For example, it doesn’t even require knowing what a Jacobian is. Here for example it describes what it is:

Symbolic and sparse derivatives

One advantage of a symbolic toolkit is that derivatives can be calculated explicitly, and that the incidence matrix of partial derivatives (the “sparsity pattern”) can also be explicitly derived. These two facts lead to a substantial speedup of all model calculations, e.g. when simulating a model over time using an ODE solver.

By default, analytical derivatives and sparse matrices, e.g. for the Jacobian, the matrix of first partial derivatives, are not used. Let’s benchmark this (prob still is the problem using the connected_simp system above):

Now have MTK provide sparse, analytical derivatives to the solver. This has to be specified during the construction of the ODEProblem:

If someone doesn’t know anything about Jacobians, they will at least walk away thinking “jac=true,sparse=true is a fast mode button if models get large”, which IMO for a much less technical audience is probably good enough?

If anyone has an idea for simplifying that anymore I’d be happy to take it, but I haven’t been able to refine that part any more.

2 Likes

And I’m asking for help. “Hey, how can we make this better? Please and thank you”. “No you just suck”. This isn’t helpful. Please can you try to be helpful? What should we change? Do you have examples from running workshops with high schoolers that highlights a spot that was difficult? Do you have spots of the documentation you find have been particularly hard to teach with to undergrads? I’d be very happy to have specifics. I’m just asking for actual concrete help man. A high level gripe that the docs suck is not helpful, please help me fix it then. Please.

5 Likes

No Chris, that is exactly my point - every other non-filler word in your quotes is technical jargon. That may be fine for an undergrad who’s actively taking courses in that material, but it doesn’t work for the average joe who may have learnt what a derivative is in high school.

I mean, I am an undergrad and know what a derivative is, but not a physics undergrad, and so things like

Let us start with a minimal example. The system to be modelled is a first-order lag element:

Here, t is the independent variable (time), x(t) is the (scalar) state variable, f(t) is an external forcing function, and \tau is a parameter. In MTK, this system can be modelled as follows. For simplicity, we first set the forcing function to a time-independent value.

make no sense to me at all - what is a lag element? What is an external forcing function? Why is setting the forcing function to a time independent value simpler (ok I actually think I get this one from prior experience with other stuff - interdependencies in evolving systems are hard)?

These are the kinds of questions a non-academic end user (who does not currently take a course focusing on this!) may have (if they haven’t already thrown in the towel because they’re overwhelmed by just how much new stuff there is to learn - and again, that’s not necessarily a problem! I don’t think this would necessarily be simpler in other languages).

I want to reiterate that this doesn’t mean that your docs are bad - they are great docs, as I’ve said lots of times before! Their target audience just isn’t the general public/built for getting people interested in Julia-The-Language, but in Julia-The-MTK-Frontend. And that’s perfectly fine, but is a different goal than furthering Julia adoption in areas other than symbolic modelling.

Oh come on now, this is a very uncharitable and incorrect read of what I wrote :confused: I explicitly praised your docs for being good at what they are. Your docs don’t suck and I’ve never claimed that. Please stop putting that into my mouth. You already know that my gripe is with Base, not with your SciML ecosystem.

To be very clear & explicit - I have no experience in teaching MTK/user studies/focus groups/training groups (at least, Julia specific) and I haven’t claimed that this is an issue. Asking for THAT is quite unreasonable, when you know perfectly well that you’re the only game in town in that regard (at least that’s my impression).

–

I just want to reiterate that my initial post was about people in this thread having VERY different thoughts on what an “end user” is, not that MTK docs suck. MTK docs are good docs.

44 Likes

I don’t think I often see such epic communication breakdowns.

As far as I can tell, @Sukera neither intends to criticize nor help improve EasyModelAnalysis, nor the wider SciML-ecosystem with their remarks, but simply try to convey that ‘canned end-user toys’ are something quite different than a tool for optimizing mathematically defined physics models.

A canned end-user toy would be, pardon if I misunderstand the intended meaning, something aimed at a general audience who don’t necessarily know what optimization is, what a physics model is, or what a programming language is. Like a note taking app or a casual mobile game.

34 Likes

Regarding web dev. I think optimizing the throughput like GitHub - omcloudinc/c_http_jl: wrapping c lib and benchmarking with http.jl and node and pushing Add Oxygen to Techempower ¡ Issue #63 ¡ ndortega/Oxygen.jl ¡ GitHub could attract more users. And supporting quicktype can also be useful.

1 Like