How to start a NEM Project
“In open source, we feel strongly that to really do something well, you have to get a lot of people involved.” — Linus Torvalds
I would like to share a simple guide for the NEM newcomers that want to create a open source project using NEM.
If it is the first time you read about NEM, I recommend you check the beginners guide to NEM.
Before start a new project, I strongly recommend you to check the current projects available that you could contribute to (end of the article). Start a new project is not easy, and it requires tons of time. But if there is no project that convinces you, then it is time to start a new open source project :-)
The guide focuses on open source projects, the reason is that, in order to have more and better products, we need to share our knowledge with each other to do not repeat the same mistakes. Develop software using blockchain is not cheap and it takes more time than expected. To be successful with this challenge, we need the community cooperation.
Quoting what Eric S. Raymond says on his book, The Cathedral and the Bazaar.
“If you treat your beta-testers as if they’re your most valuable resource, they will respond by becoming your most valuable resource.” — Eric S. Raymond
The main goal of create a project, is solve someone else’s problem. We need to know if we are on the good path or not as soon as possible. So, we focus on receive as much as feedback as possible.
- Listen the community. Create a document describing what you are planning to do and ask what they think about it. The document will help you organize your ideas, and the community will help you more if they understand the project easily.
- Re-define the project. Usually, you will not find the right project in the first try (even in the tenth), the feedback will help you to re-define the project to solve real problems. Create a change log to notify the people that you have changed something and update the documentation that you have. Do this step every time that you receive great feedback.
- The project has to be interesting for you: You must have the passion to develop the project. It has to be a challenge, something that inspires you. As a developers, we tend to undervalue all the aspects of a project (problem complexity, support, documentation, …). If you are doing something that inspires you, you will dedicate the required hours.
- Release early. Release often. You have to know if you are in the good path as soon as possible. Don’t wait until you have the perfect application, it does matter if you have not checked the real value with end users. Start with little deliveries.
- Beta testers. Share your project with the people interested on the project, help them to use your product if it is not 100% ready and use the right tool to control the project status and the issues. The beta testers are the most valuable resource that you could have.
- Invite collaborators: The project should have a section explaining how the people could collaborate on the project. For developers, translators (more important than I thought), beta testers, … Never close the doors to new collaborators, work with new people is awesome!
- Re-listen. Share what you learn. Help others join NEM.
Where could you find information to start developing on NEM Blockchain?
Is there something that the community needs to be done?
NEM Blockchain has a bounty program to incentive the developers start building software that the community needs. Check NEM’s Prototype Project Bounty Program.
A list of NEM open source projects:
- https://github.com/NemProject/NanoWallet: Official NEM Wallet. Under MIT License.
- https://github.com/NemProject/csharp2nem: C# wrapper around NEM apis. A new version will be released soon! Under MIT License.
- https://github.com/QuantumMechanics/NEM-sdk: NEM Developer Kit for Node.js and the browser. Under MIT License
- https://github.com/aleixmorgadas/nem-library: NEM Reactive Library in TypeScript. Under Apache License 2.0
- https://github.com/NemProject/NemNotificationBot: The Nem chain notifications bot was created to automate the checking of supernode tests as well as nem account transactions, and harvested blocks to take the hassle out of monitoring your nodes and accounts. Check the official blog entry. MIT License
- https://github.com/kodty/MultisigTransactionSigner: A simple bot for signing XEM multisignature transactions with optional signing rules. MIT License
- https://github.com/davidebenato/nemtelegrambot: This telegram bot allows users to subscribe to specific NEM wallets and sending them a message upon activity on that wallet. Check the official blog entry. MIT License
- http://bob.nem.ninja/docs/: NEM NIS API Documentation official
- https://github.com/rb2nem/nem-dev-guide: NEM’s Developer guide, check the website here.
If you want to add your open source project, just let me know! Post a comment here, on Medium, or twit me.
I encourage you to start building software with NEM and share it with everyone! I wrote about my experience building NEM Authenticator, here you can find the post.