There’s been a couple of posts recently by certain people bemoaning Julia’s lack of popularity/usage/growth. Which I find confusing—where is this impression of lack of usage coming from? It’s certainly not the impression I get at all. From where I’m standing it seems like there’s steady, consistent growth in usage, and that Julia is transitioning from an emerging technology to a fairly mature technology that is widely used, although certainly not the most widely used. So I made a few graphs of various stats that people might find interesting and did a little armchair data analysis that people may or may not find compelling.
Package server stats
These are stats from the package servers that Julia’s Pkg client has connected to by default since Julia v1.5 or so. We don’t track individual end-users, so we can only make inferences, but this is a good proxy for how many people are actually using Julia and can give us a sense of growth if not clear-cut absolute numbers.
Monthly requests
This is how many client requests the Pkg client makes to package servers, with CI requests and other bots filtered out, so it’s only actual end-users.
Summary: Steady linear growth from 10 million requests/month at the end of 2021 to 20 million requests/month today. Is it exponential growth? No, but that’s not really something I would expect for a programming language except for very early on. There are only so many programmers on the planet and only so many of them are interested in numerical computing. It sure seems like a decent fraction of them must be using Julia if we’re seeing 20 million pkg requests/month.
What does this metric tell us about the number of users? It’s hard to estimate people because we don’t know how many package requests the average user makes per month, but if we guess 200 requests per person per month (average), that’s about 100,000 active users. Who knows if that’s right, but I suspect it’s in the right ballpark. There’s probably ten times that many who use Julia sometimes and 100k who use it a lot.
There’s a couple of big dips in there. I’m not 100% certain about those, but we have had a couple of incidents where package server logs weren’t getting uploaded for a while. (We don’t have anyone whose full-time job is maintaining this infrastructure.) My best guess about those dips is that they happened when we lost server logs.
Monthly unique client IPs
This is how many unique IP addresses the package servers see per month. (Estimated in a way that preserves end-user privacy using HyperLogLog hashing.) I was going to start with this metric, but I suspect it’s misleadingly flat.
Summary: ~75k unique IP addresses per month, roughly steady since 2021.
Why do I think this is misleading? Because we know that requests have gone up over that time and we have no reason to believe that the number of pkg server requests each Julia client makes per month would have doubled in that time. What I suspect is happening here is that we’ve basically saturated the number of public IP addresses that you’ll see requests from when running an internet service: ISPs share and reuse IP addresses using a combination of NATs and DHCP, so at some point you’ve seen basically all the IP addresses you’re going to see even if your user base grows.
Discourse stats
Monthly page views
This is how many impressions our Discourse forum has per month. Views need not be from logged in users or even people with accounts. If someone googles some Julia question and the answer is a discourse post and they view it without logging in, that’s counted here.
Summary: This has been steadily growing from 500k/month in 2018 up to 2 million/month today. (I picked that since I think that’s the year we started using Discourse and it’s the year we released Julia 1.0.) Again, growth is linear, not exponential, but like I said, exponential growth isn’t a thing except very early on because there are just not that many people.
What’s with the big dip? Yeah, so we pay Discourse to host our instance and at some point—without telling us—they decided to start blocking web crawler traffic to our instance. As a result, Julia’s Discourse stopped showing up in search engine results and our page views tanked, which is how we noticed. We had to yell at them and get them to stop doing that. Our page views still haven’t entirely recovered, but they’re getting there.
Monthly active users
This is the number of logged in users who visit Discourse every month. This metric only counts users with accounts who are logged in when they visit Discourse.
Summary: Steady growth from 10k/month in 2018 up to 33k/month in 2021-2023, then a massive dip due to web crawler blocking, followed by partial recovery but only back up to 28k/month.
First: why does this plateau from 2021-2023? I suspect that no matter how many users a language has, there are only so many people who will create an account on the language forums and regularly visit them. I’ve used many programming languages quite a lot without ever creating an account on their discussion forums. So I don’t really expect this graph to keep growing—beyond a certain point, I think the new users are less and less likely to engage in that way, and that’s ok. Having users who have never been to your forums is a sign of language maturity and success.
Then there’s the big dip, of course. This is likely caused by the search engine crawler blocking. But why haven’t active user visits not recovered like page views have? I’m not really sure. Maybe logged in users recovers slower—people got logged out and haven’t bothered to log back in again? Or maybe this graph was going to peak and go down again anyway and the dip just showed up at a confusing time.
Why would active forum users peak and then go down if usage is going up? It’s possible that as a language matures there’s less need to visit its forum to get answers to things. There are now many high quality Julia books coming at it from various angles. Again, I’ve used many languages without every creating an account. If my question is already answered somewhere, I’m not going to bother making an account.
There may also be more colleagues who can answer questions. It’s also possible that some of those colleagues have names like ChatGPT and CoPilot—the web crawler dip does happen to coincide with LLMs getting good enough to start to displace sites like StackOverflow and Discourse. We know that StackOverflow visits are down since ChatGPT, maybe we’re seeing the same phenomenon. If so, that makes page views recovering all the more impressive. But this is just speculation.
Conclusions
This data isn’t conclusive, but it certainly suggests steady ongoing growth to me. That’s also the impression I get from talking to people: more and more of them are just using Julia and finding that it just works for them without needing help. And far more people have heard of it and are considering using it than even a couple years ago. I don’t think usage is growing exponentially, and Julia isn’t going to unseat Python or C++ any time, but that’s ok. Frankly, Rust and Go aren’t going to either—and that’s also ok! Julia is quite successful and popular in some areas of numerical computing and is growing steadily in both popularity and quality. Is it growing exponentially like it felt like it was in the heady early days? No. But that’s to be expected and totally fine. Steady, linear growth in popularity and usage along with steady improvements in quality and maturity is a very good place for a language to be at the 10ish year mark.
What should we, as Julia developers, dedicated users, and fans do? Probably stop worrying about these metrics and focus on making things better. In the words of Steve Martin, “Be so good they can’t ignore you.”