I'm going to go on a completely different long rant about this topic lol :-P
On one hand, I also want all the cool features that people have mentioned in
this thread. I am a huge fan of the newruntime, I want better concepts, GADTS,
and a verification proof solver, etc... I think Nim is doing really great work
in making these cutting edge CS concepts more accessible and practical to use.
But, I think It's unreasonable to expect many of these things for 1.0. I also
don't think these things are necessary for Nim to be successful as my main
language.
On the other hand, Nim is not trying to be (only) a research language. Nim
wants to be a reasonable general purpose industrial language. To this end, I
feel like the language itself is rock solid, but stdlib, the tooling, and the
ecosystem still have too many rough edges.
* Lots of forum posts and irc messages about missing features of the stdlib,
or missing 3rd party libs.
Nim is meant to be a "batteries included" language, but I always get the
feeling that it's "batteries almost included". It's obvious that there are
parts of the stdlib that well cared for. Those modules are generally rock solid
in terms of stability and documentation, now more than ever thanks to
@narimiran :)
But if you take a step outside of that "well beaten path", things get really
sketchy really fast.
There was the "remove things from the stdlib" initiative, but that seems to
have gotten "bike shedd-ed" and "yack shaved" into oblivion. There was some
things done, but there never a roadmap or set of goals that came out of it. Did
we meet those goals? What is the status of that project? where can I check?
Then there is the inverse question. What things still need be added to the
stdlib before 1.0? How "batteries included" does Nim need to be for 1.0? I
don't think we are aiming for python levels of features, but there should be a
clear list of goals and non-goals for the stdlib somewhere.
A recent discussion on the forum reminded me of the missing sortedTable type.
Does Nim need this for 1.0?
What is the minimum requirements that Nim is missing to be considered having a
"complete stdlib"?
The problem is these are all subjective questions. I get a feeling of
"incompleteness" when I use the stdlib, but I also am not sure what is
necessary to make me feel better about it. Part of the problem is that I have
no idea what is "supposed" to be there and what has been purposely left out.
The other problem is communication. Once the goals and non-goals for the stdlib
are decided. I want a place to find a set of canonical third party libs and
idiomatic work-arounds the fill in the gaps. The "learn" page on the main site
is a good start for this, it just needs to keep being curated and expanded.
(another <3 good job to the core team for this)
* Tooling:
* editor support is generally good and has been for a while.
* nimpretty and nim language server both seem to be perpetually unstable,
and "almost" usable.
Not everybody is going to use all the features of these tools; I never use
language servers personally, but I would love a working nimpretty. But, People
expect these tools and judge a language based on the maturity of these tools.
* nimdoc is way better but still has too many rough edges.
It needs to be as easy as possible for people generate good looking docs for
their nim code. The amount of compiler flags and edge cases around building the
nim docs still makes me very sad. (I'm looking at you dochack.js... which I
know has been on my list of things to fix forever...)
It's telling that Status has started migrating to their own doc tooling (that
is not based on Nim)
[https://github.com/status-im/nimbus-docs-suite](https://github.com/status-im/nimbus-docs-suite)
* A lack of confidence in 3rd party lib support.
* Even if it is unfounded, I have noticed a very strong fear of "hit by a
bus" syndrome by people looking at Nim. (Even posts in this thread!)
* This is related to the perception that the Nim community is too small.
I think this is largely a communication and marketing problem. It's not enough
to just do the thing, you also have to market that you are doing the thing.
Having the "Important Nimble packages" included in the CI was a **huge** step
in the right direction here, but it wasn't marketed enough! I think it was
mentioned in one of the video blogs, but It's not advertised anywhere on the
site or github!
* Moar tutorials, Moar blog posts. Moar videos. (There is never enough)
* I think one of Andrew Kelley's most effective marketing strategies for
Zig is that he just streams himself while he codes. People love to watch other
people code. It's weird, but strangely effective. There is even a popular
Twitch category for this.
If there is anything to be learned from the infamous "V language" drama, it's
that marketing and perception is very important.
I think the Nim community is bigger than people perceive it, we just aren't
loud enough lol. These things have all improved tremendously since I first
started using Nim, but I still feel like there is a long way to go here.