Nim Community Survey 2020 Results

The Nim community survey 2020 has been open for one month, and we have received 769 responses - we think this is a large enough sample to draw conclusions about our users and their habits. Before we go into details, we would like to thank all the people who took the time to respond. We really appreciate the feedback!

The goal of this survey was primarily to determine how our community is using Nim, in order to better understand how we should be improving it.

Do you use Nim?

Based on the answer to this question, the respondents were divided into two groups that each received a separate set of questions.

Do you use Nim?

Approximately three quarters of the respondents use Nim (31% frequently, 41% occasionally), while the remaining quarter is divided between people who never used Nim (16%) and people who stopped using Nim (11%).

Of those people who don’t use Nim, the most frequent reasons are: “Nim seems immature, not ready for production” (36%), “Nim doesn’t have libraries I need” (33%), “Nim seems too risky for production” (25%), and “Nim doesn’t have enough learning materials” (24%).

For people who stopped using Nim, the most common reasons were (answering a free-form question): lack of libraries (small and not mature ecosystem), incomplete documentation, bad editor support, compiler crashes, coworkers don’t use it, etc.

Users

How long have you been using Nim?

We have approximately the same amount (around 40%) of new Nim users (people who started using Nim in the last 6 months) and experienced users (between 6 months and 2 years). Nim veterans (more than 2 years of Nim experience) are about 20% of our users.

Where are you from? What is your occupation?

A typical Nim user would be a software developer from Europe.

Besides Europe (more than half of our users), our users mostly come from North America and Asia. Almost half of our users are software developers (47%), and the next largest group are students (17%).

In what age group are you? How many years of programming experience do you have?

We have users from all age groups and all levels of programming experience, proving that Nim can be used both by beginners and veteran programmers.

What are the technical aspects or features of Nim you like the most?

Things that people like about Nim the most are: performance/speed (86%), ease of use (76%), syntax (73%), and self-contained binaries (63%).

What editor(s) do you use when writing Nim?

It’s no surprise that the most used editor is VS Code, with 62% of Nim users choosing it in the survey. In the second place is Vim/Neovim (37% combined), followed by Sublime Text and Emacs (10% each).

Nim versions

Which version(s) of Nim do you use?

We’re glad to see that the large majority of users are using the latest stable version (1.4.x).

We can partially attribute this to the mostly painless upgrade process:

Has upgrading to a new version of the Nim compiler broken your code? How much work did it take to fix it?

Using Nim

Roughly, what percentage of the programming work you do is in Nim?

The situation is slightly better than in 2019, but far from what we would like to see. We hope that we’ll see even larger improvements in the future. The majority of users use Nim only sporadically (25% of time or less).

What types of software are you developing using Nim? What types of software are you developing using Nim? What types of software are you developing using Nim? What types of software are you developing using Nim? What types of software are you developing using Nim? What types of software are you developing using Nim? What types of software are you developing using Nim? What types of software are you developing using Nim?

Nim is mostly used for writing command-line programs and libraries, followed by automation/scripts, GUI, web services, and data processing.

What platforms are you targeting?

The large majority of Nim users are targeting Linux, followed by Windows and macOS. Compared to 2019, we see an increase in JavaScript, Android, and iOS.

Do you use Nim at work? If you are not using it at work yet, do you plan to in 2021?

About one third of Nim users use it at work, either exclusively (7%) or from time to time (26%).

Of people who don’t use Nim at work, one third can’t use it because their company doesn’t allow it. Three quarters of people who are allowed to use Nim at work plan to use it in 2021.

People mention stability, better tooling, more third-party libraries, having to mature, and better documentation as the main areas where Nim should improve to be more accepted in their companies.

Learning Nim

What learning resources, if any, did you use to learn Nim?

Almost all of our users have read the official tutorials, and about half of them have read “Nim by Example” and/or the “Nim in Action” book. Rosetta Code examples are also a popular choice as a learning resource, followed by “Nim Basics”, “Nim Days” and “Nim Notes”.

What kind of learning materials does Nim need?

If anyone would like to create some more learning materials for Nim (which is very high on the community priority list - see below under the “Nim in 2021 and beyond” section), the most wanted types of learning materials are code examples and written tutorials.

Nim community and contributions

Have you made code contributions to the Nim project in the past?

Compared to 2019, we see a 20% increase of people who have already contributed to Nim! And there are almost three times as many people who haven’t contributed to Nim so far but plan to do that in the future. We’re looking forward to this :)

The most frequent reasons for not contributing (yet) are: lack of time, and lack of skill/experience.

Did you make any donations to Nim?

In the past we haven’t stressed enough the importance of community donations, which is reflected in this graph: only 10% of our users have made a donation in the past. We are happy to see that two thirds of our users plan to do it in the future, which will help us to have more manpower to fix the most important bugs more promptly and work on some exciting new features.

Nim tools

We’ve asked you how satisfied you are with the Nim tooling:

What is your experience with the following tools? [nimble] What is your experience with the following tools? [choosenim]

Most of our users use Nimble package manager and they are very satisfied with it. Fewer users picked Choosenim as their way of installing and updating Nim, but those who did are quite satisfied with what it has to offer.

What is your experience with the following tools? [nim doc] What is your experience with the following tools? [nimpretty] What is your experience with the following tools? [nimsuggest]

Nim doc is generally liked by those who use it, as is Nimpretty. Nimsuggest is liked a bit less than other tools (high CPU and memory consumption), but you’ll be glad to hear that our plans for 2021 include making Nimsuggest more robust, and less CPU and memory hungry.

Nim in 2021 and beyond

What should be our priorities in improving Nim, that would bring the largest quality-of-life improvements? [fixing compiler bugs]

According to the votes, fixing compiler bugs should be our first priority: 55% of our users find it very important, with only 18% of votes for “low priority” and “current situation is ok”. We will continue to work on it, and we appreciate any community effort on this: we already have several individuals continuously helping us with fixing compiler bugs (thank you!), and we’d benefit from more.

What should be our priorities in improving Nim, that would bring the largest quality-of-life improvements? [improve tooling]

Improving the tooling is very high on the priority list for our users (higher than in 2019), and especially for those users who use Nim professionally. We’re happy to announce that, thanks to our partnership with Status, improving the developer tooling is one of the goals for 2021.

What should be our priorities in improving Nim, that would bring the largest quality-of-life improvements? [documentation] What should be our priorities in improving Nim, that would bring the largest quality-of-life improvements? [more learning materials (tutorials, videos, books, ...)]

Back in 2019 we improved the documentation of the most used standard library modules. There is still room for improvement, but we now see that more users (compared to the 2019 survey) think the current situation is ok. When it comes to learning materials, where we mostly lean on the community content (for this to improve we need your involvement!), people want to see more written tutorials and code examples.

What should be our priorities in improving Nim, that would bring the largest quality-of-life improvements? [fixing stdlib bugs] What should be our priorities in improving Nim, that would bring the largest quality-of-life improvements? [larger standard library]

According to respondents, fixing bugs in the existing standard library modules should be higher priority than expanding the standard library. One of the reasons that expanding the standard library is less of a priority could be that Nimble now has more than 1500 packages, adding significant functionality that is not included in the standard library.

To summarize, 2021 is the year of stabilization: our priorities will be fixing the compiler and standard library bugs, improving tooling and documentation, and improving and expanding the learning materials.

Last words

Thank you to each and every one of you who took the time to answer this survey. Your time is precious and we are deeply thankful that you used it to share your feedback.

Please remember that you do not need to wait for a survey in order to give us feedback; of course you’re more than welcome to wait if you wish, but ideally share your feedback with us immediately. We can be found in various places - see the community page for links and instructions on how to get in touch.

If you would like to help us in our 2021 plans, consider contributing or making a donation. You can donate via:

If you are a company, we also offer commercial support. Please get in touch with us via [email protected]. As a commercial backer, you can decide what features and bugfixes should be prioritized.