I feel like this question is asked if not weekly, bi-weekly in #main. I also feel like the same answers get tossed around - newcomers seem to think that people are just slow on the uptake or that the situation is improving markedly. Folks that have been around for a while seem split between the idea that it's just an extremely slow burn or that it will never happen. I'm of the mindset that we're doing it all wrong - and I think it has more to do with the way we communicate with one another and how that shapes our interactions and their outcomes.
For example, we use forum software (and I know that I and others continuously bring this one up) that was designed and written by people who had no experience writing forum software. It does most of the things that forum software is supposed to do well enough, but on a number of fronts it is extremely cumbersome to use. It also has a plethora of bugs and I'm guessing not much time has been spent optimizing it for SEO so that when people search Nim or ask questions, they find answers leading them to the forums. I realize that a lot of time and effort went into building the forums and there are some that think they are a great example of Nim in production or whatever - but I don't think anyone is choosing Nim amongst other options because the forums were written in it. Meanwhile - people might be impressed enough by Odin's showcase to explore that language.
Discord is also not great, and we risk Discord eventually rug pulling API access or worse, as we've seen happen with other proprietary software solutions that are widely used recently. Information is extremely difficult to retrieve through it and their solutions for long-running conversations (threads) still are nowhere near as good as mailing lists or traditional forums. I don't think it should be the main source of stored information for the community. All of that isn't even getting into the fact that Discord is proprietary, a shitty company, and we're an open-source software community focused on a project permissive licensing.
The main problem though, in my mind, is with the forum and community structure. The sub-forums are not focused on the sub-communities that have formed over time (game development, science, embedded, lang dev, etc...). The sub-forums that exist now aren'treally sub-forums and are essentially just tags + filters. Even if there were sub-forums for these sub-communities - most of them wouldn't have moderators who are interested in that specific subject so they might not be prone to stickying useful posts or be able to effectively moderate content. Hell - even in the main forums barely any useful information is stickied.
There are very few community projects involving several people collaborating. I realize it happens in a few sub-communities but those tend to be the ones that are very active with a lot of members. People point to the lack of an evolved ecosystem when looking at Nim and I think the reasons above, amongst others (like Nim's marketing / community management lacking in resources or motivated individuals) are why this is.
If we're not willing to replace our existing tools - I think we should at least be finding ways to foster community and ecosystem growth rather than expecting the same old method to suddenly start working.
I'd love to hear from others about whether they agree or not with my observations, and if not, expound upon why they disagree as well as what they think the problem(s) is.
Because of this ridiculous This post is too old and can no longer be edited feature I need to put this in a reply. I just wanted to add another paragraph:
We need the community to be as well as feel empowered to improve itself. Currently, there are very few official channels or any kind of official structure to support that. If the expectation is that all of this needs to be community-led and the Nim project shouldn't foster a space for the communities that spring up around it, that is also fine. That is essentially what we have going on today, and I would posit that it is one of the primary reasons we see the contributor and community growth trajectories we do as well as the treadmill of similar projects, lack of collaboration between the community members, and lack of options in certain areas of the ecosystem.
And I was attempting to edit the post to close out with:
There is far too frequent chatter on discord discussing why Nim isn't as popular as <insert language X here> and it'd be nice to button that up with some problem analysis and solutioning.
Why is building the community and ecosystem such a struggle?
Fragmentation.
Care to elaborate? I don't necessarily disagree that the community is fragmented but I'm really trying to understand causal factors rather than symptoms that manifest from them.
I'd consider fragmentation a symptom of whatever underlying problems are causing the community to fragment. What are those reasons? Why do other programming language communities not suffer from (or suffer as much from) fragmentation? How do we fix it?
Fragmentation, not in the sense of communication channels. Fragmentation in, lets say responsibilities. The late Pieter Hintjens of zeromMQ has some good videos on that. https://www.youtube.com/watch?v=QB7VXSc5H3A and https://www.youtube.com/watch?v=uzxcILudFWM for example.
Then, regarding communication, a "home" is a nice place to have.
While we're talking about the forum, can someone help to get the latest version deployed?
There is a showstopper issue (forum does not load when you have certain browser extensions installed) that has been fixed and merged, but has not been actively deployed to the server. I worry that this will be affecting new users that may get discouraged from engaging with the community.
The second big issue with the forum for new users is them not receiving their activation links. I'm willing to look into this but haven't yet because I don't know if a fix would get deployed or not.
I would say Nim has problems with a), it identified problems people have wrongly. And Nim community is biased, and self-reaffirming those biases with echo chamber.
Respectfully, Nim's lack of popularity has nothing to do with the forum. Marketing is definitely a problem, but there is a bigger one—it's just doesn't make you more productive.
If the Nim ecosystem genuinely made things easier to do, anyone who wandered in would get stuck and all their friends would hear about it.
Let's compare Nim to Rust. For a general purpose language, I'm sure we all would agree, Nim has a better design, hands down. Going off the language alone you would expect higher velocity with Nim. The problem is that nearly everything else that makes up the Rust ecosystem offers a better experience. Cargo, crates.io, documentation, mature discoverable libraries, useful compiler errors, dev tooling, mindshare, core team communication, technical blogging, and yes marketing. All superior.
We have: a more ergonomic, flexible language. Faster compile times. Both impressive and valued achievements, but not enough to distinguish.
If Nim is to succeed, it needs focused teams working on these areas.
Lowest barrier to entry is technical blogging. If you want Nim to succeed. Show people an easier way to solve their problems.
Easier questions to answer would be why it was adopted at Status and if they would do it again.
The only reason I single out Status because it's the only large scale deployment I know of but anyone who is supporting themselves with Nim probably has good insights.
Nim has a lot of potential but it needs to find it's audience and it's better to extrapolate out from existing commercial users than try to capture some random HN mindshare.
I understand there are probably some common causes for both situations, but they are separate situations and worth being addressed as such.
The forums and the way community members interact is definitely related to the quality of the community whether you believe so or not. The community wouldn't exist without them most likely, so I'm sorry but I respectfully disagree with your assertion.
I'd like to bring the conversation back around to why the community struggles to meaningfully improve. If you want to say it's because the of the language's popularity - fine but let's not conflate these two observations.
Assume you have money, where would you spend it first to have the maximum impact?
Definitely tooling and some marketing. To some degree, they overlap as good tooling helps marketing. On my team at Status there's a lot of non-Nim folks coming from Java, Python, etc and they pretty much all dislike the tooling. None of them really seem to care so much about syntax, exceptions vs results, ranges or map performance, etc. It's that the most common tooling (VSCode) only works part of the time, and that's after I helped show people how to set it up. It was broken for months due to nimsuggest crashing on some bit of syntax that compiled fine but crashed nimsuggest. Many of them can't compare it to the joy of things like C++ and are comparing it to Java IDEs or PyCharm.
For small projects nimsuggest & VSCode works well. Even for the compiler it works well. On larger projects however, it becomes more of a pain. Even setting up VSCode to only run nimsuggest once on top level still is a pain. The VSCode plugin doesn't appear use nimsuggest to do compile checks even when configured to do that. I'm planning to spend some time seeing if we can switch to nim LSP and/or improve the VSCode plugin if needed. The important pieces people seem to want: dependency lookup / goto, and quick error checking.
I cannot agree more with this. Tooling, and VSCode support in particular is by far the weakest part of Nim’s ecosystem IMHO (and that includes debugging support in VS Code as well).
If I had money to spend on nim that would be it: a great VS code plugin with good debugging support (conditional breakpoints, unmangled symbols, etc).
I just have nimsuggest turned off. This kind of autocompletion issue is a common refrain of languages with a lot of type level expressiveness. Compile time introspection and metaprogramming make it nearly impossible for your editor to predict what you are going to do next and if you decide not to use those you might as well not use Nim.
I think it's worth honing basic jump to definition but anything beyond is probably a time sink because Nim by it's very design is never going to have the editor experience of IntelliJ+Java.
I sometimes wonder if design by introspection opens incredible opportunities for compile time Smalltalk like environments but that's years maybe even a decade away if it's even a good idea. For now I think it's best to lower expectations.
Write an essay.
you can't write. You don't know how to structure an essay. You know nothing about the given subject.
I give you pen and paper, clay tablet and nails, laptop and word processor.
Can you write an essay now?
Tooling is definitely an area that needs much improvement. I prefer JetBrains IDEs over VSCode, but unfortunately the development of the current JetBrains Nim plugin seems to have stagnated.
So I thought I'd try developing a new plugin, called NimJet, but it's not easy. Nevertheless, I was able to get syntax highlighting working. I hope I can continue working on it for the next while.