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.
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â.
Hereâs a nice review article of julia 1.9: Julia 1.9 brings more speed and convenience [LWN.net]
What do you mean?
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.
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.
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.
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.
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.
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.
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.
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?
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.
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:
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 theconnected_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.
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.
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 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.
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.
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.