NOTE: This post is a work in progress and has some missing information. We will update as the information becomes available.
Hi NEMbers!
The NEM2 SDKs were released for Java/Kotlin/Scala and TypeScript/JavaScript, but there’s a long list of languages that still need to be supported.
The NEM Dev community showed great support and shared their interest to collaborate in the nem2-sdk development for other languages.
- Provide an abstraction layer of NEM2
- Reduce the complexity of developing NEM2 Libraries and Applications
- Enable cross language design
- Be Lightweight
The nem2-sdk development needs to be aligned with these goals. We, the NEM Foundation, will review the source code to ensure that these goals are followed, the code satisfies the required quality requirements, while security is not compromised. At the same time, we will provide development support to those who want to collaborate and ask for guidance.
Multiple people will be involved in the process so please take your time to read the past messages and GitHub guidelines. Doing this will help you to [be up-to-date with] or [understand] the current state of the SDK development. Also, we would like to ask collaborators to update their progress status regularly, in order to help others to get on board faster. Remember, this is a collaborative project *
Also, consider that the development is not just about code, it’s about documentation and tutorials too. We welcome all help in this area! @dgarcia360 is the guy to talk to about this.
How to start:
Clone nem2-sdk for typescript/javascript
- Clone nem2-sdk for typescript/javascript.
- We add the features to typescript/javascript first, and from there (slowly) migrate them to other languages.
- Start becoming familiar with the folder structure, the naming, and the different objects types. It’s crucial that you are already familiar with ReactiveX since we use it everywhere.
Check nem2-library
The typescript/javascript SDK has the peculiarity of being divided into two packages, nem2-sdk and nem2-library as a dependency.
The nem2-library contains the crypto stuff, the serialization, and the API wrapper. It’s simple and has few objects. The other languages will have this stuff inside the SDK instead of being divided into two packages. At least for now.
You can post a message here in the forums with the programming language you are interested in developing for.
Make sure to post your GitHub username and the language you want to collaborate on.
If you want to share the experience you have with NEM/Catapult, crypto, OOP, Functional Reactive Programming, TDD, Unit-Tests and so on… you can do it publicly or privately by sending a message to me. It’s not required, but it helps us to organize and prepare for the help you may need later on.
After figuring out where you could help us most, we then get you onboard in the SDK language you want to collaborate with. In case there’s not a repository for your language, we’ll create one.
Creating the milestone 1.0
Because the new SDK has to copy the typescript/javascript SDK, the milestone 1.0 tasks are that, copy.
Assume you will have to redo some work.
The nem2-sdk is under active development, and it is far from being finished, if you start doing an sdk, you will have to change/adapt it in the future.
Bounties
The bounties & rules for collaborating are not decided yet. It will be published in the following weeks.
Collaboration under the nemtech repository
We want to endorse people that push NEM. We don’t see this as just the responsibility of the NEM Foundation.
No matter if you are an individual collaborator, a company or a partner; we will find a way to endorse those who deserve it. As soon as the collaboration starts, it has to be defined and agreed in the early stage to avoid misunderstandings later.
##Other points
Feel free to share your concerns or anything we may have missed in the guidelines.
Let’s push Catapult to the real adoption!
nem2-sdk-c#: it has been started by @kodtycoon
nem2-sdk-php: it has been started by @gevs
nem2-sdk-go: it has been started by @alvin-reyes
The repositories and the source code will be published soon.
They are far from finished and we are looking for more contributors for those!