I was wondering (just out of curiosity) about current Nim's popularity.
I know every metric is somehow biased, but I would like to get a feeling about how is evolving. I was looking as well, for the biggest projects developped in Nim (apart from Nim itself). I bet there is a way to get that information from Github, but I don't know how.
It looks this is quite a recurring topic. I have searched about it and I found (far from complete):
Nim is not shown in Tiobe because it doesn't get enough hits in Google for the term: Nim programming (it looks like people prefer: nim lang).
It would be great to see something like Github's octoverse, or like this.
I don't know if there is a way to list big code bases using Nim in Github. This is one of those things that I think could be good to show in https://nim-lang.org/ (given current's lack of popularity/visibility), kind of "success histories".
As it was mentioned in some of the prior links, I am a bit surprised about Nim not being more popular given how good it is.
This talk has a pretty good part about how most popular languages got popular: https://www.youtube.com/watch?v=QyJZzq0v7Z4
To summarize, according to the talk, there are 5 major ways to popularly (top 10):
I think Nim right now is doing a little bit in 3 out of 5 directions.
Gracias @juancarlospaco. This is exactly what I was looking for.
@treeform, nice overview. Given Nim's potential, I am surprised about point 1. I think/hope this is a matter of time.
For what it's worth, my primary use case for Nim has always been system tooling. I.e. programs that range from a few dozen to a few thousand lines, which you could in principle write in Ruby or Python, but where these languages are too slow or where their dynamic nature would pile up too much tech debt w.r.t. maintenance.
An additional benefit is that I can package the compiler with the software if necessary and bootstrap it on pretty much any system. Nim currently also has probably the best story when it comes to interfacing with C/C++, especially if you need to do it yourself absent existing bindings.
This is not the "cool" type of killer app, but mundane as it is, a fairly important one for a lot of people. There aren't a whole lot of competitors in that domain (statically typed, automatic memory management, compile to native code, imperative). D and Go are probably the closest alternatives and have their own pros and cons.
Nim has still serious rough edges. The http server story is atrocious. Async is meh and parallelism suck.
What Nim needs is a strong and polished "net/http" package.
I think Nim needs to ne on mobile.
Since Nim runs on macOS I'm assuming it'll run on iOS — same toolchain, and 99% the same APIs until you get up to the GUI level.
There should be a simple way to write cross platform apps and especially games in Nim.
There's already a glut of cross-platform mobile app frameworks, in many different languages. And good GUI frameworks are really hard to write, especially if they need to work cross-platform. (Less so for games, since no one expects games to conform to a platform UI or support platform-specific features.)
parallelism suck.
Nim gives you the tools to implement what the language doesn't offer builtin. This is true for both async and parallelism. At the very least Nim offers channels and a threadpool by default while in C or C++ you have nothing in the standard library. Furthermore it gives you a portable wrapper for threads, locks and other synchronization primitives while C/C++ requires you to deal with Windows/Posix difference on your own library.
Lastly, I don't know any parallel runtime in any language that is as featureful and as fast as Weave for CPU-only multithreading (i.e. excluding heterogeneous CPU/GPU support and distributed clusters)
If popularity or quick growth becomes the main priority, aspects like innovative features and good design become secondary.
Differently from many other languages, Nim is quite uncompromising and is aiming very high.
4. Epic Marketing: Nim is doing nothing here.
Hype-driven popularity encourages hype-driven development and short-term thinking.
5. Slow & Steady. The slow community path.
Having used Python since 2001, I'll have this one, please. :)
I don't think that bearing popularity in mind means disregarding all the other things that Nim is already managing really well.
I don't like popularity, I like what it comes with popularity: more brains, more libraries, better maintained packages, ... This thread could be titled: "Nim's ecosystem" or even better "How could Nim's ecosystem be improved".
I love Nim and I have learnt a lot (sadly not as much as I want) since I took the red pill . But, coming from Python, it is frustrating when you think "oh, it would be cool to do this in Nim; C speed but a pleasure to write and read", and you end up trying to learn your minimal C and analysing some weird C API in order to create some missing/unmaintained bindings to a library. Even worst with C++ stuff (I don't have the brain to invest on that).
Maybe not a killer app, but there could be some projects to showcast the language and raise more curiosity about it. Maybe the sort of app that use plugins, like:
On the other hand, I have tried that "plugins approach" with VapourSynth with little success to be honest. So these are just some ideas thinking aloud. A bit of day dreaming.
I don't like popularity, I like what it comes with popularity: more brains, more libraries, better maintained packages, ... This thread could be titled: "Nim's ecosystem" or even better "How could Nim's ecosystem be improved".
Agreed, I wouldn't go for popularity in itself, but for the improved ecosystem (articles, libraries etc.). On the other hand, more popularity can mean more contributors. But in general, I think a better ecosystem will drive popularity, not the other way around (unless maybe you can do really big marketing effort, but even then what you have to offer should be pretty good).
vala alternative: there has been messages claiming that vala is dying (#1, #2 ).
Both the Reddit thread and the article are three years old, and I'm always skeptical about software "dying". This is like saying "Nobody uses Nim." It's an extreme simplification.
Maybe Nim and gintro could replace it.
I guess in practice people who want to "replace" a rarely used language won't be keen on replacing it with another rarely used language, or only if the "replacement" has properties that make it more attractive than other possible replacements. :-)
"Vala" - I think that tells us next to nothing. Simple reason: unlike Nim Vala was linked to Gnome, i.e. a major (well, kind of) and well known name. When Mozilla (Rust) burps the planet trembles, when Gnome (Vala) burps, the world notices it ... and when Nim burps (or sings a nice song for that matter) next to nobody notices it. This, however, can also turn against a project because a big name creates big expectations.
"Nim popularity" - I couldn't care less. About popularity, well noted. Gaining traction is another (and important) matter.
People come to programming languages largely either due to need or based on some form of herd phaenomenon (like "our company uses xyz" or "we learned and worked with xyz in uni"). The latter can only be addressed once a language has a certain "weight". So the former is the relevant one for us, at least for quite some time.
Learning and reaching a level of mastering a language is a considerable effort - hence only very few undertake that for the fun of it. For most it's probably based on something between an itch and real need (or pain) what makes them seriously look at alternatives and to learn them. Examples are code quality, multi-threading, events/async, typing (strong, weak, static, etc.), tool support, FFI & libraries.
I for example made the effort to occasionally scan the status in PL world and to have a closer look at some alternatives that looked promising because in my field reliable and correct software as well as speed are critical and because Ada is somewhat cumbersome and poor on libraries, especially async/event based IO. All that isn't a question of lila lala taste/preference but of hard facts. If I can 30% more done in xyz than in Ada then learning xyz is worth it.
Another factor that I consider important - and often overlooked - is the fact that a relatively new (as in "not yet widely used and established) invariably has some sharp corner and a noticeable lack of comfort. This usually translates to a strong tendency to be looked at and picked up by experienced developers but not by newbies or languages hoppers. This again translates to such a language not yet being used a lot by the large crowds out there.
Funnily(?) really old PLs like for example Pascal which are perfectly fine languages are considered unattractive just like new PLs. It's sad but I'm afraid that "coolness" is an important factor too for the large crowd.
On the other hand greybeards opinions carry quite some weight and if they recommend a PL then that recommendation has value. Moreover code quality tends to be better with greybeards which often reflects back at their favourite PL (or the one the project has been implemented in).
Finally, there is the 800 pound gorilla, Rust, which gets aggressively pushed/marketed by a very major (and rich) organisation as well as by a large crowd.
Which, sorry if that hurts, also means that Nim has only one way to go - and that is not noise/marketing/bla bla fandom. It is quality and an attractive feature set along with good tool support. (At this point I mention again that we will be punished for largely ignoring or treating a tier 3 anything except Visual Studio Code (the ugly monstrosity)). Simple reason: for many programmers their favourite editor/IDE is closer to their heart (and fingers) than a - new - language.
TL;DR Let us not care about Tiobe and other "the crowds favourite xyz" but let's continue to enhance Nim.