Getting the best out of AI without endangering the community

At this year’s State of Julia talk at JuliaCon, a significant part of the time was dedicated to talking about the effect and usage of agents to write PR to the julialang repository.

This came as a surprise to me. I know about LLMs, I know that things are evolving fast, but since my institute doesn’t have access to frontier models and doesn’t incentivize the use of agents, some of the statements that Keno made were dazzling. Namely

  • Around 80% of the PR to the julialang repo were authored by agents in the last few weeks.
  • A personal usage of roughly $45 000 worth of Anthropic tokens over the last 3 months (without actually paying for them individually, and recognizing that this is a rather arbitrary metric of usage).
  • The expectation that every contributor would have their PR reviewed by an agent before submitting it (as part of a standard workflow, just like you would run tests).

As a consequence, a conversion was started to share worries about the effect of AI on the Julia community. Several people (including me) added their own, which started a (in my view) interesting discussion about whether there is an incompatibility between an extensive use of agents and the building of a strong community, and what to do about it.

This post is a summary of what I got from this discussion.

The first observation is that not everyone in the community is able or willing to use agents, for different reasons:

  1. The lack of funding. Using a frontier model is simply not free, and some people simply cannot afford it.
  2. Model unavailability. The models are US based, can be pulled from some user (as happened with Anthropic earlier this year).
  3. The lack of enthusiasm. Coding in Julia is joyful (to quote Simon Peyton Jones in his keynote talk), using agents may not be.
  4. Ethical considerations. The usage of AI is neither ethically nor environmentally neutral.

One question naturally arises: how should we accommodate the agentless member of the Julia community?

Pooling resources and betting on a democratization of the technology

Points 1 and 2 above are practical. Some people simply don’t have access, but by democratizing access, this problem would be solved.

Some discussions followed on how agents could be made available from the PRs themselves and how Anthropic and OpenAI have programs to get access to their frontier agents for free.

Efficient open-source agents that are run locally would also alleviate some of the problems. We, as a community, however, have little way to impact this.

Accommodating AI-skeptics

The bread analogy

The following analogy was brought, which proved to be popular and (I believe) enlightening in the discussion:

Not using AI and writing code by yourself is like baking bread at home, while using agents is akin to using a professional oven and industrial tools.

Your homemade bread undeniably brings you joy in the making, but it is terribly inefficient compared to the industry standard. At the same time, the fact that there is a bread factory two streets down doesn’t prevent you from enjoying making your own bread, so the two are not necessarily in opposition.

This is undeniable, but the concern of the AI-skeptics lies elsewhere, and it can be summarized as follow:

You used to have a small bread production, and started exchanging it with other small producer, and made friends along the way. But now the production have changed, your friends can produce as much bread as they want instantaneously. They have no longer need for mine, and, as a consequence, we don’t interact as much as we used to.

In other words, there is a social human factor in our participation in the Julia community that goes beyond what is practically possible. Currently, AI-skeptics may feel that they are losing an important aspect of their engagement (joy of coding, interaction with other humans), and consequently may currently go through mixed feelings, going from sadness to dismay, to feeling rejected from the community.

What is the goal of Julia?

Before going further, it may be good to discuss what Julia is about.

Julia has a the technical goal, which could be described as being the best possible open source language for technical computations, both in academia and in the industry.

If that was the only goal of the Julia community, then it seems like the use of agents would be unambiguously positive. Contributors get more productive with AI, those who refuse to use it are sidelined, but the overall effect is positive, so it is acceptable.

Productivity is, however, not the only goal of the Julia project: having a healthy and inclusive community is also important. Expanding the community and making it diverse and welcoming are examples of effort that have been taken to go in this direction.

As far as I could see, no one ultimately defended either of the two most radical solutions: forgetting about the community entirely and pursuing productivity at all costs, or banning AI entirely.

Nonetheless, there were few practical propositions to address the possible tension between the two goals, besides

  • Monitoring the phenomenon
  • Communicating clearly and transparently about it
  • Organizing a “Fun, handmade, unimportant packages” minisymposium at the next JuliaCon

Furthermore, it was noticed that the two goals are interdependent: if the community erodes due to poor handling of the agents, then the project may become unsustainable. So even if priority is given to language development, it may still require taking into account the human factor to achieve it optimally.

At this point, it may still be unclear why the community may erode in the first place. The main reason (I believe) is a feeling of being left out or not belonging, which may lead some contributors to disengage. It is, however, enlightening to look at some concrete examples that were raised during the discussion.

Case studies

Everything is done by Keno

This is a hypothetical scenario brought to the extreme (I even make it more radical here compared to the discussion, because I love being overdramatic):

Keno (arbitrarily chosen as one AI-poweruser), thanks to an army of agents, becomes so productive that the other contributors feel like their contribution is not meaningful. What they do in one month, Keno does in one hour. Of course, in practice, their contribution would still be extra work going into the system, having a net positive effect. But they feel irrelevant, so they disengage. To compensate, Keno brings in even more agents.

This even propagates to the package ecosystem: when Keno sees issues in a package, he sends his hordes of agents after them. They all get solved. Soon the maintainers give him write access to every repo. It is the most reasonable thing to do, as they cannot keep up with the PR and he really does improve the packages.

In the end, the ecosystem is better, better than it could ever have been otherwise. But the community is formed of only a single human, Keno.

It is, of course, an exaggeration, but it reveals a legitimate concern: the decisions may become increasingly concentrated into the hands of the AI-powerusers. Not because they want to grab power, just because it is the most reasonable thing to do to improve productivity.

Conversely, as it goes, the community becomes more fragile, as the bus factor decreases.

The disappearance of the entry points to the community

A more grounded scenario is one that already happened: the traffic on the help sites has dropped. Since agents can answer questions, we are seeing fewer on slack, discourse and stackoverflow. Thus, new users never get in contact with the rest of the community and potentially never become part of it.

On the other hand, the entry level for contribution for an AI-entusiast is way lower than for an AI-skeptic. So the entry points may not have disappeared, but simply shifted to PR directly.

To my knowledge, no proper monitoring of this exists.

The past paradigm shifts

Finally, I believe that it would be useful to refer to history. Significant changes have brought opportunity and frustration in the past, and we may be able to learn from them.

A typical example was the appearance of compilers. Nobody now would accept a PR that is written in assembly directly without having gone through a compiler. The usage of AI may follow a similar path, with the old guard reticent to adopting the new technology going through the same cycle of resistance as our predecessors.

I have not had time to research this subject, but I would be glad to not repeat mistakes of the past.

What I left out

This is my best attempt at summarizing a rather long and intense discussion, and I hope it will bring a continued dialogue that will ultimately result in practical actions that will reinforce the community.

I voluntarily left out the details of the ethical problems with the use of AI, and the question of whether it is the right language to bet on for the coming AI age. They are both very important, but I believe that they go beyond the question that I would like to keep central here: our community.

Note that I had a talk at Juliacon that focused on this topic as well “The Agentic AI Maintenance Bots of the SciML Organization”, whose main focus to give a quantitive review of how AI has been used in SciML and whether this has led to “slop”.

Slides link below:

It seems like the perspective of the Community on this particular topic is slowly changing direction.

AI has been a huge opportunity to bring Julia’s ecosystem closer to parity to other languages across the board. If people can’t realistically start using the language due to the ecosystem missing so many things outside of SciML and academic type packages, that seems like a much bigger problem to me than Chris Rackauckas - Beep Boop Edition making SciML too awesome. Of course I’m speaking here from a background of building production systems with Julia, but AI has been the difference between extremely limited internal adoption and it becoming ubiquitous with my day to day work.

While I agree that AI could make the bus-factor problem worse, I think it helps more than it hurts considering this sort of thing has been one of the languages biggest weaknesses historically in my opinion.

Besides the community angle, I think the bigger questions is: What happens to a programming language, designed for humans to be productive, when it - and everything else - is increasingly written by AI? The things that drew me to Julia (two language problem, easy and simple syntax, nice repl) are features that have not aged well in a time of code generation by AI. On the other hand the downsides of Julia (dynamic typing, underspecification, fragility as in yuri’s blog post, complexity of the compiler/language design model) are still there, and, to some extent, can’t be solved by AI because they need bold decisions, not more code.

Maybe its worth while filtering the features through an AI-lense and transform that to a new version “2.0” or even a new language “Julai” that’s made for Bots rather than humans.

That’s not quite true. Language benchmarks consistently show very good results for Julia.

Lots of benchmarks basically show empirically that languages which:

  1. Are terse
  2. Have good static analysis / types

Do well, with (1) mattering even more than (2) (depending on the problem). Things like Python and R satisfy (1) while majorly failing at (2). Things like Rust and C++ satisfy (2) while majorly failing at (1). Julia is consistently at the top of the charts because it satisfies (1) extremely well, and then is decent at (2), and so it’s always scoring well no matter which one is emphasized by a given benchmark.

But yes, to me this emphasizes that the near future developments of Julia should be to make the type system and its interfaces more enforced: interfaces, strict mode, etc. That would make it be the first and only language that does (1) and (2), and by far it’s the tersest language for creating small binaries (juliac) and fast code. That would make it clearly the best language for AI, since then it would hit all of the marks for AI accuracy while creating solid reusable compiled binary artifacts that are easily reusable, plus composability, packages, etc.

So I think empirically we’re probably in the best position to become the best language for agents, but there’s some execution to do.

Very interesting slides, thanks for sharing. And congrats on the weight loss, it’s never easy.

On a more serious note, I use Claude Code in conjunction with Codex (both $200/mo) and I am happy to have recently added Codex. It’s a great sanity check for what Claude plans (and codes), and provides valuable checks.

That’s a good point. It’s a challenge that needs more attention. Julia is all about programmer productivity, and LLM coding is all about programmer productivity. The latter can boost the former (as Chris pointed out) but also compete with the former. Occasionally I find myself “vibe-porting” my hand-written Julia packages to languages that are otherwise more painful to work with, just to take advantage of a bigger ecosystem, ease of deployment, or memory efficiency with RAII.

I’d be interested in seeing this elaborated a bit. In addition to what @ChrisRackauckas posted (I’d love to see more recent stats that reflect increasingly “smart” models, especially post Opus 4.x), I think there’s plenty of indication that Julia is very well positioned for interactive agentic coding. @jballanc 's talk at JuliaCon, “Solving the ‘No Language’ Problem with Julia”, illustrated this pretty well. As a demonstration of an alternative approach to typical interactive coding harnesses, I think it showed well why Julia is different – any maybe alone here.

Again, would be interested in which languages/ecosystems. One of Julia’s strengths should be its scientific/engineering ecosystem. I’m also curious why you would “vibe-port” and not just vibe-code directly to the alternate ecosystem.

All that said, I can’t disagree with “ease of deployment” – that’s my #1 showstopper for growing Julia adoption… and my main interest.

I’ve also thought a lot about the community impacts — as I was discussing this last night I mentioned the dying helpdesk channel to my wife and her response was “that’s a scary canary in the coal mine.” I think she’s right.

I have a flashbulb memory from ~2003 where my friend had been debating something with his older sisters and he just googled it. Their immediate response was: “No, that’s not right! We need to argue this over and over until one of us is finally so fed up that they go to the library to look it up!” The point wasn’t the argument nor the answer — it was the camaraderie and connection and relationship that the conversation itself built.

This is yet another technology in a long line of technologies whose un-considered use leads to us losing points of connection from our communities. From the automobile to the attached garage door with automatic door opener (so we don’t even see our neighbors upon getting home) to the television to social media to google to AI, we need to remember to use these technologies to our benefit such that they can enable points of connection with others instead of removing it.

Just like air travel, I can’t personally change the world overnight. But I can work to continue finding ways to build relationships and points of connections with others where I can. It’s precisely why we don’t want AI text here!

And there are also much broader societal and economic subjects, and some even directly related to Open Source Software (OSS). Certainly, without OSS, this kind of race and such a broad transfer of technology and knowledge across borders would not be possible in such a short period of time.

Once, I tried to explain artificial intelligence to myself as a kind of resampled library. And in terms of programming, I like to think about it as a higher abstraction layer, essentially a new level of development in the area of computer science.

I would compare this shift in computer science to the Renaissance, Enlightenment, and Modernism movements [let me add a smile here :- )]. Of course, it is also related to Contemporary and Post-Postmodern Currents directly related to digital culture, globalization, identity, and ecology. In particular, your point seems to relate to ecological concerns.

As of now, my thinking is that in the 80s and 90s we enabled technology to perform mathematical operations on a pretty “massive” scale. And there was, and still is, a lot of slop in this area produced every single day worldwide. Now, quite suddenly, the technology is able not only to calculate but also to listen, speak, and write. It is also producing some slop, but in my opinion, it is also acting as a kind of modern library, it appears to be useful.

What I want to convey is that it looks like a structural change, and from a strategic point of view, one risks a lot by not participating, or at least by failing to position oneself correctly within such a potentially transformative movement.

OP specifically asked for discussion to be focused on the community effects of AI. Discussion on ethical and environmental considerations should be split elsewhere.

I’d be interested in seeing this redone. From what I can tell the gap narrowed dramatically in 2023 as the models got more generally capable, but then reopened as agents started being trained to emulate whole workflows in Python, Rust, and C++ using reinforcement learning.

I don’t think it does. Lots of languages can claim to hit this sweet spot (C#, Kotlin, Swift, Go…) but Julia has very little in the way of type safety (only slightly better than Python).

EDIT: Split my post between the two threads, this one .

Indeed, and I did only make my post after some consideration of whether or not it fits. But in the end I decided that absolutely does fit. (edit: which was split off, ha!)

As I am a member of this community, and the rise of AI has absolutely effected me personally, in the way I described I think it works as part of the thread. Further discussion and debate on the details certainly deserves its own thread though I agree.

I think AI’s impact is actually being overblown here, as strange as that might sound. Development entry barriers, an uncomfortable bus factor, rising environmental harms from computing…these all existed before the genAI age. Obviously AI has a large effect on these, but it’s worth remembering that these problems have deeper foundations. I want to highlight a couple of ChrisRackauckas’ slides. Slide 6 testifies that AI boosted his productivity and allowed major improvements in work-life balance; another interpretation is there weren’t the staff and resources to support SciML in a healthy way, even when there was no AI to deter contributors. This isn’t unusual; as open the Julia ecosystem is, many important projects are spearheaded by few experts who are very hard to replace. AI isn’t a solution for this either; slide 3 acknowledges that the agents are heavily subsidized by corporate investments. Unless further inference optimizations outpace models or power-users find a way to pay the inevitable bills, a bus is coming for the agents, and the entirety of Julia development would be a rounding error in that economic shock.

I also think AI’s promise and role are also being overblown. AI’s demonstrable utility in imaging and macromolecular structure prediction does not actually mean AI will simply “cure cancer,” and I think the development of Julia is also a much more complex topic we can’t really predict from the performance of agents in a handful of projects. For all we know, v1 may only end up as a prototype for Julia’s shifting philosophy. If you’re an AI-skeptic and are really serious about contributing, go for it. Not every project needs or can afford agents, and agents aren’t being thrown at every conceivable problem.

Considering that the environment affects the community and their choices i.e. AI skepticism, I don’t think going this far is realistic. Ethical discussions have gotten so heated here that people from both sides have quit the forum and sometimes Julia. If we shouldn’t dive into details like how water consumption is deliberately downplayed in closed-loop cooling, maybe we should at least talk about what Julia contributors should do about their strong disagreements over technology being heavily used by prominent Julia developers. Ideally it ends up more useful than Torvalds’ “fork it or walk away.”

Well the way I use Julia, it is. We enforce JET tests on everything and full inference. So the agents are forced to satisfy a version of Julia where basically everything can be statically type-inferred (and trim-compatible), which has helped ensure SciML can keep moving fast without worrying about regressions. But to improve this even more, I want a strict mode on modules so we can opt into a version of Julia that always enforces this via the compiler. Basically: prototype like Python, then strict-ify code to Rust standards in a continuous way. We’ve built the tooling to effectively do that, but I think this needs to become standard in order to improve the language as a whole.

Hey @Benny, Could AI be the “early Lotus 1-2-3” moment for us? If we miss this window, it could be the end of the story. It feels like not being part of the AI stack is already hitting the Community hard. Just to be very clear, I’m not saying you are not right on this subject matter, it’s just a lot of responsibility.