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. 

Reply via email to