Node client notes


#1

Hello, first post here.

I would like to express my concerns for the direction of the Node client.

I have worked on a large number of node libraries and I believe that public modules should be made using the highest standards and implement the best practices of the industry.

This is a small list of changes that can greatly increase the trust level of Node developers towards Aerospike.

  • Move logic that is not performance-critical to Javascript.

    I understand that it is an easy way to make a port to simply include the C++ code to save time and effort. Yet, as a Javascript developer, I want to know what the libraries that I require do. In a very explicit manner. This is a lot to ask, but I see direct positive impacts on devs. Faster builds (less classes to compile), more visibility in the JS code.

  • Give the JS part some love.

    You can see a clear difference in the quality of the C++ portion versus the Node part. This makes me think that Javascript is regarded as a second class citizen by Aerospike. Almost no comments, no structure, linter errors. (I opened a merge request for the linting part : https://github.com/aerospike/aerospike-client-nodejs/pull/81). There are great style guides available, such as this one: https://github.com/airbnb/javascript

  • Follow the industry guidelines.

    Avoid printing directly in the console. This applies to any library. You don’t want your console polluted by logs you didn’t ask for while running your app. There are GREAT tools available on NPM to solve just that. (I opened an issue : https://github.com/aerospike/aerospike-client-nodejs/issues/82)

  • Don’t bundle benchmarks, docs and examples.

    Benchmarks and examples should be put in a different project, and documentation too. We don’t need those when requiring the library, say in production. It’s about 350kb of stuff we have to download. Check how Waterline does it : https://github.com/balderdashy/waterline-docs

  • More verbosity!

    I would be very interesting to see incoming and outgoing requests info in the console. Check out how https://www.npmjs.com/package/request used the debug module (https://www.npmjs.com/package/debug)

  • More feedback from collaborators

    It would be my pleasure to work on some of those requests. Yet, I get no replies or acknowledgement to my issues or merge requests. A big part of choosing a technology to work with is the amount of support, the solving rate for issues and finally : community involvement. There are currently a lot of unattended issues and merge requests. You will lose the interest/respect of the community and fall behind if you don’t follow up on community requests. It would also be very interesting to have visibility on the roadmap and currently assigned tasks/bugs.


#2

@fed135,

Thank you for your extensive feedback. As Aerospike’s recently appointed community manager, encouraging community involvement is a key goal. We appreciate and truly value the work of our community, from good bug reports to pull requests. We regularly acknowledge bug reports and merge pull requests from the community on our clients, as evidenced in the Go release notes and Python release notes.

What you’re reporting in the Node.js client is not the experience you should be having. I will take a a closer look at what’s been happening in the Node.js client regarding issues and merge requests, and follow up with you. Thanks for your offer to work on some of those requests - we’d love to have you work on them! :heart_eyes:

We will discuss your other suggestions internally and get back to you.

Cheers,

Maud


#3

Hi again @fed135,

Frederic - you’ll be happy to know that we have just pre-released version 2.0 of the Aerospike Node.js client for early adopters. This is a major update that uses the Aerospike C client async API, resulting in significant performance improvements. Also, the API has been changed based on developer feedback to better follow the established Node.js convention; these changes are backward incompatible. In this release, we are also dropping support for Node.js v0.10. Please read the full text of the announcement for details.

We invite you to try Node.js client version 2.0 in a non-production environment and look forward to your feedback.

Cheers,

Maud