Best way to contribute as a new joiner

Hello, I would like to engage in the nano community and become an active developer. Currently I‘m an C++ developer from Germany and working for an aerospace company. However, in my spare time I would like to contribute to this project. How did you get started when you first joined? Any advices are welcome, as I feel actually a bit lost where to start.

Best from Germany!


Thanks for your interest! Do you have anything in particular you are wanting to work on? Database, protocol, performance etc.

Are you familiar with C++17? One thing which might be nice to ease yourself into the codebase might be to C++17ify some of our code, we recently upgraded to it but haven't done any large overhaul.

1 Like

Hi, thanks for your fast reply. No, I don’t have anything particular I want to work on. Since I would like to collaborate in the long term, I hope sooner or later I will have the chance to contribute to different parts. I’m most familiar with C++11 as I’m also currently reading “the C++ programming language (4th edition)”. I’m very keen to catch up with C++17. I think its a great idea to C++17ify some of your code. As you already mentioned, I think it would be a good starter to ease myself into the code base.

Are there specific C++17 features to look at?
The code base is quite large, where do you think would be a good starting point?
Is there some code that got updated to C++17 which serves as a good inspiration on “how to (ideally) C++17ify”?

We don't have specific PRs dedicated to that yet unfortunately, we are just making use of the new feature in new PRs where possible. I think the easiest ones with the most benefit are:

Structured binding will probably be the biggest benefit to code readability. Any place that uses a pair with first & second, such as maps
Add [[no_discard]] for functions which return a bool error to make sure they are checked by calling code.
Any class static variables which are declared in source files can be made inline instead.

Alright, thanks! Where is the best way to get started C++17ifying? There are so many directories and C++ files. Ideally where it helps me to understand the code base quickly and get the best overview.

Everything under the nano/ directory is our own code, so any of those subfolders would be good, wouldn't worry too much about the test ones. So mainly the lib, node, rpc & secure subfolders.

I am in the process of writing a starter developer guide, still a WIP but maybe it can help you understand:

This is also some other useful contribution guides on that page too

okay thanks. That sounds good, I will definitely take a look at it. Is there also a Forum dedicated to questions for starters? I just signed myself up to discord, what channel is the best to ask beginner questions?

The Discord #protocol and #development channels are good ones to post questions in. If you are planning on working on some specific improvements, perhaps opening a related GitHub Issue about that would also be a good approach, then our team can watch and help answer questions there as well - keeps a better trail of answers. Thanks for your help and interest!

Thanks! For now, I will get started. Your feedback was very helpful.


I try to get finished by this weekend. Unfortunately it took me a bit longer as the time was not always there.


When I run make everything builds (including slow test). But when I run cmake -DNANO_TEST=0N something breaks at [84%] Building CXX object nano/node/CMakeFiles/node.dir/wallet.cop.o with c++: fatal error telling me that the compilation terminated.

Can you post more of the error message? also what compiler (and version) are you using? Perhaps also try make clean first

Thanks, make clean worked.